]> git.evergreen-ils.org Git - Evergreen.git/blob - docs/modules/installation/pages/server_upgrade.adoc
LP2061136 - Stamping 1405 DB upgrade script
[Evergreen.git] / docs / modules / installation / pages / server_upgrade.adoc
1 = Upgrading the Evergreen Server =
2 :toc:
3
4 Before upgrading, it is important to carefully plan an upgrade strategy to minimize system downtime and service interruptions.
5 All of the steps in this chapter are to be completed from the command line.
6
7 == Software Prerequisites ==
8
9   * **PostgreSQL**: The minimum supported version is 10.
10   * **Linux**: Evergreen 3.X.X has been tested on Debian Buster
11     (10.0), Debian Bullseye (11.0), Debian Bookworm (11.0), 
12     Ubuntu Focal Fossa (20.04), and Ubuntu Jammy Jellyfish (22.04).
13     If you are running an older version of these distributions, you 
14     may want to upgrade before upgrading Evergreen. For instructions
15     on upgrading these distributions, visit the Debian or Ubuntu websites.
16 * **OpenSRF**: The minimum supported version of OpenSRF is 3.3.0.
17
18
19 In the following instructions, you are asked to perform certain steps as either the *root* or *opensrf* user.
20
21   * **Debian**: To become the *root* user, issue the `su` command and enter the password of the root user.
22   * **Ubuntu**: To become the *root* user, issue the `sudo su` command and enter the password of your current user.
23
24 To switch from the *root* user to a different user, issue the `su - [user]`
25 command; for example, `su - opensrf`. Once you have become a non-root user, to
26 become the *root* user again simply issue the `exit` command.
27
28 == Upgrade the Evergreen code ==
29
30 The following steps guide you through a simplistic upgrade of a production
31 server. You must adjust these steps to accommodate your customizations such
32 as catalog skins.
33
34 . Stop Evergreen and back up your data:
35  .. As *root*, stop the Apache web server.
36  .. As the *opensrf* user, stop all Evergreen and OpenSRF services:
37 +
38 [source, bash]
39 -----------------------------
40 osrf_control --localhost --stop-all
41 -----------------------------
42 +
43  .. Back up the /openils directory.
44 . Upgrade OpenSRF. Download and install the latest version of OpenSRF from
45 the https://evergreen-ils.org/opensrf-downloads/[OpenSRF download page].
46 . As the *opensrf* user, download and extract Evergreen 3.X.X:
47 +
48 [source, bash]
49 -----------------------------------------------
50 wget https://evergreen-ils.org/downloads/Evergreen-ILS-3.X.X.tar.gz
51 tar xzf Evergreen-ILS-3.X.X.tar.gz
52 -----------------------------------------------
53 +
54 [NOTE]
55 For the latest edition of Evergreen, check the https://evergreen-ils.org/egdownloads/[Evergreen download page] and adjust upgrading instructions accordingly.
56
57 . As the *root* user, install the prerequisites:
58 +
59 [source, bash]
60 ---------------------------------------------
61 cd /home/opensrf/Evergreen-ILS-3.X.X
62 ---------------------------------------------
63 +
64 On the next command, replace `[distribution]` with one of these values for your
65 distribution of Debian or Ubuntu:
66 +
67 indexterm:[Linux, Debian]
68 indexterm:[Linux, Ubuntu]
69 +
70   * `debian-buster` for Debian Buster (10.0)
71   * `debian-bullseye` for Debian Bullseye (11.0)
72   * `debian-bookworm` for Debian Bookworm (12.0)
73   * `ubuntu-focal` for Ubuntu Focal Fossa (20.04)
74   * `ubuntu-jammy` for Ubuntu Jammy Jellyfish (22.04)
75
76 +
77 [source, bash]
78 ------------------------------------------------------------
79 make -f Open-ILS/src/extras/Makefile.install [distribution]
80 ------------------------------------------------------------
81 +
82 . As the *opensrf* user, configure and compile Evergreen:
83 +
84 [source, bash]
85 ------------------------------------------------------------
86 cd /home/opensrf/Evergreen-ILS-3.X.X
87 PATH=/openils/bin:$PATH ./configure --prefix=/openils --sysconfdir=/openils/conf
88 make
89 ------------------------------------------------------------
90 +
91 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.
92 +
93 . As the *root* user, install Evergreen:
94 +
95 [source, bash]
96 ------------------------------------------------------------
97 cd /home/opensrf/Evergreen-ILS-3.X.X
98 make install
99 ------------------------------------------------------------
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 opensrf_core.xml and opensrf.xml by copying the
110   new example files (/openils/conf/opensrf_core.xml.example and
111   /openils/conf/opensrf.xml). The _-b_ option creates a backup copy of the old file.
112 +
113 [source, bash]
114 ------------------------------------------------------------
115 cp -b /openils/conf/opensrf_core.xml.example /openils/conf/opensrf_core.xml
116 cp -b /openils/conf/opensrf.xml.example /openils/conf/opensrf.xml
117 ------------------------------------------------------------
118 +
119 [CAUTION]
120 Copying these configuration files will remove any customizations you have made to them. Remember to redo your customizations after copying them.
121 +
122 . As the *opensrf* user, update the configuration files:
123 +
124 [source, bash]
125 -------------------------------------------------------------------------
126 cd /home/opensrf/Evergreen-ILS-3.X.X
127 perl Open-ILS/src/support-scripts/eg_db_config --update-config --service all \
128 --create-offline --database evergreen --host localhost --user evergreen --password evergreen
129 -------------------------------------------------------------------------
130 +
131 . As the *root* user, update the Apache files:
132 +
133 indexterm:[Apache]
134 +
135 Use the example configuration files in `Open-ILS/examples/apache/` (for
136 Apache versions below 2.4) or `Open-ILS/examples/apache_24/` (for Apache
137 versions 2.4 or greater) to configure your Web server for the Evergreen
138 catalog, staff client, Web services, and administration interfaces. Issue the
139 following commands as the *root* Linux account:
140 +
141 [CAUTION]
142 Copying these Apache configuration files will remove any customizations you have made to them. Remember to redo your customizations after copying them.
143 For example, if you purchased an SSL certificate, you will need to edit eg.conf to point to the appropriate SSL certificate files.
144 The diff command can be used to show the differences between the distribution version and your customized version. `diff <customized file> <dist file>`
145 +
146 .. Update _/etc/apache2/eg_startup_ by copying the example from _Open-ILS/examples/apache/eg_startup_.
147 +
148 [source, bash]
149 ----------------------------------------------------------
150 cp /home/opensrf/Evergreen-ILS-3.X.X/Open-ILS/examples/apache/eg_startup /etc/apache2/eg_startup
151 ----------------------------------------------------------
152 +
153 .. Update /etc/apache2/eg_vhost.conf by copying the example from Open-ILS/examples/apache/eg_vhost.conf.
154 +
155 [source, bash]
156 ----------------------------------------------------------
157 cp /home/opensrf/Evergreen-ILS-3.X.X/Open-ILS/examples/apache/eg_vhost.conf /etc/apache2/eg_vhost.conf
158 ----------------------------------------------------------
159 +
160 .. Update /etc/apache2/sites-available/eg.conf by copying the example from Open-ILS/examples/apache/eg.conf.
161 +
162 [source, bash]
163 ----------------------------------------------------------
164 cp /home/opensrf/Evergreen-ILS-3.X.X/Open-ILS/examples/apache/eg.conf /etc/apache2/sites-available/eg.conf
165 ----------------------------------------------------------
166
167 == Upgrade the Evergreen database schema ==
168
169 indexterm:[database schema]
170
171 The upgrade of the Evergreen database schema is the lengthiest part of the
172 upgrade process for sites with a significant amount of production data.
173
174 Before running the upgrade script against your production Evergreen database,
175 back up your database, restore it to a test server, and run the upgrade script
176 against the test server. This enables you to determine how long the upgrade
177 will take and whether any local customizations present problems for the
178 stock upgrade script that require further tailoring of the upgrade script.
179 The backup also enables you to cleanly restore your production data if
180 anything goes wrong during the upgrade.
181
182 [NOTE]
183 =============
184 Evergreen provides incremental upgrade scripts that allow you to upgrade
185 from one minor version to the next until you have the current version of
186 the schema. For example, if you want to upgrade from 2.9.0 to 2.11.0, you
187 would run the following upgrade scripts:
188
189 - 2.9.0-2.9.1-upgrade-db.sql
190 - 2.9.1-2.9.2-upgrade-db.sql
191 - 2.9.2-2.9.3-upgrade-db.sql
192 - 2.9.3-2.10.0-upgrade-db.sql (this is a major version upgrade)
193 - 2.10.0-2.10.1-upgrade-db.sql
194 - 2.10.1-2.10.2-upgrade-db.sql
195 - 2.10.2-2.10.3-upgrade-db.sql
196 - 2.10.3-2.10.4-upgrade-db.sql
197 - 2.10.4-2.10.5-upgrade-db.sql
198 - 2.10.5-2.10.6-upgrade-db.sql
199 - 2.10.6-2.10.7-upgrade-db.sql
200 - 2.10.7-2.11.0-upgrade-db.sql (this is a major version upgrade)
201
202 Note that you do *not* necessarily want to run additional upgrade scripts to
203 upgrade to the newest version, since currently there is no automated way, for
204 example to upgrade from 2.9.4+ to 2.10. Only upgrade as far as necessary to
205 reach the major version upgrade script (in this example, as far as 2.9.3).
206
207 =============
208
209 [CAUTION]
210 Pay attention to error output as you run the upgrade scripts. If you encounter errors
211 that you cannot resolve yourself through additional troubleshooting, please
212 report the errors to the https://evergreen-ils.org/communicate/mailing-lists/[Evergreen
213 Technical Discussion List].
214
215 Run the following steps (including other upgrade scripts, as noted above)
216 as a user with the ability to connect to the database server.
217
218 [source, bash]
219 ----------------------------------------------------------
220 cd /home/opensrf/Evergreen-ILS-3.X.X/Open-ILS/src/sql/Pg
221 psql -U evergreen -h localhost -f version-upgrade/3.X.W-3.X.X-upgrade-db.sql evergreen
222 ----------------------------------------------------------
223
224 [TIP]
225 After the some database upgrade scripts finish, you may see a
226 note on how to reingest your bib records. You may run this after you have
227 completed the entire upgrade and tested your system. Reingesting records
228 may take a long time depending on the number of bib records in your system.
229
230 == Restart Evergreen and Test ==
231
232 . As the *root* user, restart memcached to clear out all old user sessions.
233 +
234 [source, bash]
235 --------------------------------------------------------------
236 service memcached restart
237 --------------------------------------------------------------
238 +
239 . As the *opensrf* user, start all Evergreen and OpenSRF services:
240 +
241 [source, bash]
242 --------------------------------------------------------------
243 osrf_control --localhost --start-all
244 --------------------------------------------------------------
245 +
246 . As the *opensrf* user, run autogen to refresh the static organizational data files:
247 +
248 [source, bash]
249 --------------------------------------------------------------
250 cd /openils/bin
251 ./autogen.sh
252 --------------------------------------------------------------
253 +
254 . Start srfsh and try logging in using your Evergreen username and password:
255 +
256 [source, bash]
257 --------------------------------------------------------------
258 /openils/bin/srfsh
259 srfsh% login username password
260 --------------------------------------------------------------
261 +
262 You should see a result like:
263 +
264 [source, bash]
265 --------------------------------------------------------------
266 Received Data: "250bf1518c7527a03249858687714376"
267     ------------------------------------
268     Request Completed Successfully
269     Request Time in seconds: 0.045286
270     ------------------------------------
271
272     Received Data: {
273        "ilsevent":0,
274        "textcode":"SUCCESS",
275        "desc":" ",
276        "pid":21616,
277        "stacktrace":"oils_auth.c:304",
278        "payload":{
279           "authtoken":"e5f9827cc0f93b503a1cc66bee6bdd1a",
280           "authtime":420
281        }
282
283     }
284
285     ------------------------------------
286     Request Completed Successfully
287     Request Time in seconds: 1.336568
288     ------------------------------------
289 --------------------------------------------------------------
290 +
291 If this does not work, it's time to do some
292 xref:installation:server_installation.adoc#install-troubleshooting-1[troubleshooting].
293 +
294 . As the *root* user, start the Apache web server.
295 +
296 If you encounter errors, refer to the
297 xref:installation:server_installation.adoc#install-troubleshooting-1[troubleshooting] section 
298 of this documentation for tips on finding solutions and seeking further assistance
299 from the Evergreen community.
300
301 == Review Release Notes ==
302
303 Review this version's release notes for other tasks
304 that need to be done after upgrading.  If you have upgraded over several 
305 major versions, you will need to review the release notes for each version also.