]> git.evergreen-ils.org Git - working/Evergreen.git/blob - docs/installation/server_upgrade.txt
0fb5da22fbdb2997b57c62db2beb48c8ff740328
[working/Evergreen.git] / docs / installation / server_upgrade.txt
1 Upgrading the Evergreen Server
2 ------------------------------
3 Before upgrading, it is important to carefully plan an upgrade strategy to minimize system downtime and service interruptions.
4 All of the steps in this chapter are to be completed from the command line.
5
6 Software Prerequisites
7 ~~~~~~~~~~~~~~~~~~~~~~
8
9   * **PostgreSQL**: Version 9.4 is recommended.
10     The minimum supported version is 9.3.
11   * **Linux**: Evergreen 2.12-beta has been tested on Debian Jessie (8.0),
12     Debian Wheezy (7.0), Ubuntu Xenial Xerus (16.04), Ubuntu Trusty Tahr (14.04),
13     and Fedora.
14     If you are running an older version of these distributions, you may want
15     to upgrade before upgrading Evergreen. For instructions on upgrading these
16     distributions, visit the Debian, Ubuntu or Fedora websites.
17   * **OpenSRF**: The minimum supported version of OpenSRF is 2.5.0.
18
19
20 In the following instructions, you are asked to perform certain steps as either the *root* or *opensrf* user.
21
22   * **Debian**: To become the *root* user, issue the `su` command and enter the password of the root user.
23   * **Ubuntu**: To become the *root* user, issue the `sudo su` command and enter the password of your current user.
24
25 To switch from the *root* user to a different user, issue the `su - [user]`
26 command; for example, `su - opensrf`. Once you have become a non-root user, to
27 become the *root* user again simply issue the `exit` command.
28
29 Upgrade the Evergreen code
30 ~~~~~~~~~~~~~~~~~~~~~~~~~~
31 The following steps guide you through a simplistic upgrade of a production
32 server. You must adjust these steps to accommodate your customizations such
33 as catalogue skins.
34
35 . Stop Evergreen and back up your data:
36  .. As *root*, stop the Apache web server.
37  .. As the *opensrf* user, stop all Evergreen and OpenSRF services:
38 +
39 [source, bash]
40 -----------------------------
41 osrf_control --localhost --stop-all
42 -----------------------------
43 +
44  .. Back up the /openils directory.
45 . Upgrade OpenSRF. Download and install the latest version of OpenSRF from
46 the https://evergreen-ils.org/opensrf-downloads/[OpenSRF download page].
47 . As the *opensrf* user, download and extract Evergreen 2.12-beta:
48 +
49 [source, bash]
50 -----------------------------------------------
51 wget https://evergreen-ils.org/downloads/Evergreen-ILS-2.12-beta.tar.gz
52 tar xzf Evergreen-ILS-2.12-beta.tar.gz
53 -----------------------------------------------
54 +
55 [NOTE]
56 For the latest edition of Evergreen, check the https://evergreen-ils.org/egdownloads/[Evergreen download page] and adjust upgrading instructions accordingly.
57
58 . As the *root* user, install the prerequisites:
59 +
60 [source, bash]
61 ---------------------------------------------
62 cd /home/opensrf/Evergreen-ILS-2.12-beta
63 ---------------------------------------------
64 +
65 On the next command, replace `[distribution]` with one of these values for your
66 distribution of Debian or Ubuntu:
67 +
68 indexterm:[Linux, Debian]
69 indexterm:[Linux, Ubuntu]
70 +
71   * `debian-jessie` for Debian Jessie (8.0) (See https://bugs.launchpad.net/evergreen/+bug/1342227[Bug 134222] if you want to use EDI)
72   * `debian-wheezy` for Debian Wheezy (7.0)
73   * `ubuntu-xenial` for Ubuntu Xenial Xerus (16.04) (EDI compatibility in progress)
74   * `ubuntu-trusty` for Ubuntu Trusty Tahr (14.04) (See https://bugs.launchpad.net/evergreen/+bug/1342227[Bug 134222] if you want to use EDI)
75   * `fedora` for Fedora
76
77 +
78 [source, bash]
79 ------------------------------------------------------------
80 make -f Open-ILS/src/extras/Makefile.install [distribution]
81 ------------------------------------------------------------
82 +
83 . As the *opensrf* user, configure and compile Evergreen:
84 +
85 [source, bash]
86 ------------------------------------------------------------
87 cd /home/opensrf/Evergreen-ILS-2.12-beta
88 PATH=/openils/bin:$PATH ./configure --prefix=/openils --sysconfdir=/openils/conf
89 make
90 ------------------------------------------------------------
91 +
92 These instructions assume that you have also installed OpenSRF under /openils/. If not, please adjust PATH as needed so that the Evergreen configure script can find osrf_config.
93 +
94 . As the *root* user, install Evergreen:
95 +
96 [source, bash]
97 ------------------------------------------------------------
98 cd /home/opensrf/Evergreen-ILS-2.12-beta
99 make STAFF_CLIENT_STAMP_ID=rel_2_12_beta install
100 ------------------------------------------------------------
101 +
102 . As the *root* user, change all files to be owned by the opensrf user and group:
103 +
104 [source, bash]
105 ------------------------------------------------------------
106 chown -R opensrf:opensrf /openils
107 ------------------------------------------------------------
108 +
109 . As the *opensrf* user, update the server symlink in /openils/var/web/xul/:
110 +
111 [source, bash]
112 -----------------------------------------------------------
113 cd /openils/var/web/xul/
114 rm server
115 ln -sf rel_2_12_beta/server server
116 ----------------------------------------------------------
117 +
118 . As the *opensrf* user, update opensrf_core.xml and opensrf.xml by copying the
119   new example files (/openils/conf/opensrf_core.xml.example and
120   /openils/conf/opensrf.xml). The _-b_ option creates a backup copy of the old file.
121 +
122 [source, bash]
123 ----------------------------------------------------------
124 cp -b /openils/conf/opensrf_core.xml.example /openils/conf/opensrf_core.xml
125 cp -b /openils/conf/opensrf.xml.example /openils/conf/opensrf.xml
126 ----------------------------------------------------------
127 +
128 [CAUTION]
129 Copying these configuration files will remove any customizations you have made to them. Remember to redo your customizations after copying them.
130 +
131 . As the *opensrf* user, update the configuration files:
132 +
133 [source, bash]
134 -------------------------------------------------------------------------
135 cd /home/opensrf/Evergreen-ILS-2.12-beta
136 perl Open-ILS/src/support-scripts/eg_db_config --update-config --service all \
137 --create-offline --database evergreen --host localhost --user evergreen --password evergreen
138 -------------------------------------------------------------------------
139 +
140 . As the *root* user, update the Apache files:
141 +
142 indexterm:[Apache]
143 +
144 Use the example configuration files in `Open-ILS/examples/apache/` (for
145 Apache versions below 2.4) or `Open-ILS/examples/apache_24/` (for Apache
146 versions 2.4 or greater) to configure your Web server for the Evergreen
147 catalog, staff client, Web services, and administration interfaces. Issue the
148 following commands as the *root* Linux account:
149 +
150 [CAUTION]
151 Copying these Apache configuration files will remove any customizations you have made to them. Remember to redo your customizations after copying them.
152 For example, if you purchased an SSL certificate, you will need to edit eg.conf to point to the appropriate SSL certificate files.
153 The diff command can be used to show the differences between the distribution version and your customized version. `diff <customized file> <dist file>`
154 +
155 .. Update _/etc/apache2/eg_startup_ by copying the example from _Open-ILS/examples/apache/eg_startup_.
156 +
157 [source, bash]
158 ----------------------------------------------------------
159 cp /home/opensrf/Evergreen-ILS-2.12-beta/Open-ILS/examples/apache/eg_startup /etc/apache2/eg_startup
160 ----------------------------------------------------------
161 +
162 .. Update /etc/apache2/eg_vhost.conf by copying the example from Open-ILS/examples/apache/eg_vhost.conf.
163 +
164 [source, bash]
165 ----------------------------------------------------------
166 cp /home/opensrf/Evergreen-ILS-2.12-beta/Open-ILS/examples/apache/eg_vhost.conf /etc/apache2/eg_vhost.conf
167 ----------------------------------------------------------
168 +
169 .. Update /etc/apache2/sites-available/eg.conf by copying the example from Open-ILS/examples/apache/eg.conf.
170 +
171 [source, bash]
172 ----------------------------------------------------------
173 cp /home/opensrf/Evergreen-ILS-2.12-beta/Open-ILS/examples/apache/eg.conf /etc/apache2/sites-available/eg.conf
174 ----------------------------------------------------------
175
176 Upgrade the Evergreen database schema
177 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
178
179 indexterm:[database schema]
180
181 The upgrade of the Evergreen database schema is the lengthiest part of the
182 upgrade process for sites with a significant amount of production data.
183
184 Before running the upgrade script against your production Evergreen database,
185 back up your database, restore it to a test server, and run the upgrade script
186 against the test server. This enables you to determine how long the upgrade
187 will take and whether any local customizations present problems for the
188 stock upgrade script that require further tailoring of the upgrade script.
189 The backup also enables you to cleanly restore your production data if
190 anything goes wrong during the upgrade.
191
192 [NOTE]
193 =============
194 Evergreen provides incremental upgrade scripts that allow you to upgrade
195 from one minor version to the next until you have the current version of
196 the schema. For example, if you want to upgrade from 2.5.1 to 2.12-beta, you
197 would run the following upgrade scripts:
198
199 - 2.5.1-2.5.2-upgrade-db.sql
200 - 2.5.2-2.5.3-upgrade-db.sql
201 - 2.5.3-2.6.0-upgrade-db.sql (this is a major version upgrade)
202 - 2.6.2-2.6.3-upgrade-db.sql
203 - 2.6.3-2.7.0-upgrade-db.sql (this is a major version upgrade)
204 - 2.7.0-2.7.1-upgrade-db.sql
205 - 2.7.1-2.7.2-upgrade-db.sql
206 - 2.7.2-2.7.3-upgrade-db.sql
207 - 2.7.3-2.7.4-upgrade-db.sql
208 - 2.7.4-2.8.0-upgrade-db.sql (this is a major version upgrade)
209 - 2.8.0-2.8.1-upgrade-db.sql
210 - 2.8.1-2.8.2-upgrade-db.sql
211 - 2.8.2-2.8.3-upgrade-db.sql
212 - 2.8.3-2.8.4-upgrade-db.sql
213 - 2.8.4-2.9.0-upgrade-db.sql (this is a major version upgrade)
214 - 2.9.0-2.9.1-upgrade-db.sql
215 - 2.9.1-2.9.2-upgrade-db.sql
216 - 2.9.2-2.9.3-upgrade-db.sql
217 - 2.9.3-2.10.0-upgrade-db.sql
218 - 2.10.0-2.10.1-upgrade-db.sql
219 - 2.10.1-2.10.2-upgrade-db.sql
220 - 2.10.2-2.10.3-upgrade-db.sql
221 - 2.10.3-2.10.4-upgrade-db.sql
222 - 2.10.4-2.10.5-upgrade-db.sql
223 - 2.10.5-2.10.6-upgrade-db.sql
224 - 2.10.6-2.10.7-upgrade-db.sql
225 - 2.10.7-2.11.0-upgrade-db.sql (this is a major version upgrade)
226 - 2.11.0-2.11.1-upgrade-db.sql
227 - 2.11.1-2.11.2-upgrade-db.sql
228 - 2.11.2-2.11.3-upgrade-db.sql
229 - 2.11.3-2.12-beta-upgrade-db.sql (this is a major version upgrade)
230
231 Note that you do *not* want to run additional 2.5 scripts to upgrade to the
232 newest version of 2.5, since currently there is no automated way to upgrade
233 from 2.5.4+ to 2.6. Only upgrade as far as necessary to reach the major
234 version upgrade script (in this example, as far as 2.5.3).
235
236 To upgrade across multiple major versions (e.g. from 2.3.0 to 2.12-beta), use
237 the same logic to utilize the provided major version upgrade scripts. For
238 example:
239
240 - 2.3-2.4.0-upgrade-db.sql
241 - 2.3-2.4-supplemental.sh
242 - (run all incremental scripts from 2.4.0 to 2.4.3)
243 - 2.4.3-2.5.0-upgrade-db.sql
244 - (run all incremental scripts from 2.5.0 to 2.5.3)
245 - 2.5.3-2.6.0-upgrade-db.sql
246 - (run all incremental scripts from 2.6.0 to 2.6.3)
247 - 2.6.3-2.7.0-upgrade-db.sql
248 - (run all incremental scripts from 2.7.0 to 2.7.4)
249 - 2.7.4-2.8.0-upgrade-db.sql
250 - (run all incremental scripts from 2.8.0 to 2.8.4)
251 - 2.8.4-2.9.0-upgrade-db.sql
252 - (run all incremental scripts from 2.9.0 to 2.9.3)
253 - 2.9.3-2.10.0-upgrade-db.sql
254 - (run all incremental scripts from 2.10.0 to 2.10.7)
255 - 2.10.7-2.11.0-upgrade-db.sql
256 - (run all incremental scripts from 2.11.0 to 2.11.3)
257 - 2.11.3-2.12-beta-upgrade-db.sql
258
259 =============
260
261 [CAUTION]
262 Pay attention to error output as you run the upgrade scripts. If you encounter errors
263 that you cannot resolve yourself through additional troubleshooting, please
264 report the errors to the https://evergreen-ils.org/communicate/mailing-lists/[Evergreen
265 Technical Discussion List].
266
267 Run the following steps (including other upgrade scripts, as noted above)
268 as a user with the ability to connect to the database server.
269
270 [source, bash]
271 ----------------------------------------------------------
272 cd /home/opensrf/Evergreen-ILS-2.12-beta/Open-ILS/src/sql/Pg
273 psql -U evergreen -h localhost -f version-upgrade/2.11.3-2.12-beta-upgrade-db.sql evergreen
274 ----------------------------------------------------------
275
276 [TIP]
277 After the some database upgrade scripts finish, you may see a
278 note on how to reingest your bib records. You may run this after you have
279 completed the entire upgrade and tested your system. Reingesting records
280 may take a long time depending on the number of bib records in your system.
281
282 Restart Evergreen and Test
283 ~~~~~~~~~~~~~~~~~~~~~~~~~~
284 . As the *root* user, restart memcached to clear out all old user sessions.
285 +
286 [source, bash]
287 --------------------------------------------------------------
288 service memcached restart
289 --------------------------------------------------------------
290 +
291 . As the *opensrf* user, start all Evergreen and OpenSRF services:
292 +
293 [source, bash]
294 --------------------------------------------------------------
295 osrf_control --localhost --start-all
296 --------------------------------------------------------------
297 +
298 . As the *opensrf* user, run autogen to refresh the static organizational data files:
299 +
300 [source, bash]
301 --------------------------------------------------------------
302 cd /openils/bin
303 ./autogen.sh
304 --------------------------------------------------------------
305 +
306 . Start srfsh and try logging in using your Evergreen username and password:
307 +
308 [source, bash]
309 --------------------------------------------------------------
310 /openils/bin/srfsh
311 srfsh% login username password
312 --------------------------------------------------------------
313 +
314 You should see a result like:
315 +
316 [source, bash]
317 ------------------------------------------------------
318 Received Data: "250bf1518c7527a03249858687714376"
319     ------------------------------------
320     Request Completed Successfully
321     Request Time in seconds: 0.045286
322     ------------------------------------
323
324     Received Data: {
325        "ilsevent":0,
326        "textcode":"SUCCESS",
327        "desc":" ",
328        "pid":21616,
329        "stacktrace":"oils_auth.c:304",
330        "payload":{
331           "authtoken":"e5f9827cc0f93b503a1cc66bee6bdd1a",
332           "authtime":420
333        }
334
335     }
336
337     ------------------------------------
338     Request Completed Successfully
339     Request Time in seconds: 1.336568
340     ------------------------------------
341 ----------------------------------------------------------
342 +
343 If this does not work, it's time to do some <<install-troubleshooting-1,troubleshooting>>.
344 +
345 . As the *root* user, start the Apache web server.
346 +
347 If you encounter errors, refer to the <<install-troubleshooting-1,troubleshooting>> section 
348 of this documentation for tips on finding solutions and seeking further assistance
349 from the Evergreen community.
350
351 Review Release Notes
352 ~~~~~~~~~~~~~~~~~~~~
353
354 Review the <<_evergreen_2_10_release_notes,2.10 release notes>> for other tasks
355 that need to be done after upgrading.  If you have upgraded over several 
356 major versions, you will need to review the release notes for each version also.