Project

General

Profile

20230623 IK » History » Version 3

Carsten Rose, 23.06.2023 13:50

1 1 Carsten Rose
{{child_pages}}
2
3
{{toc}}
4
5
h1. IK-Tool: OS Update U18>U22, T3 V9>V11, PHP 7.2>8.1, MariaDB 10.1>10.6
6
7
| Backup / Datenaustausch | @[tl] /scratch/tmp/30/ik/@ OS:ik.system.tgz, DB:*.sql, html, dev |
8
| Lokaler Dump | @[inframitool01] /var/tmp/dev@ |
9
| Installtool | https://www.ik.uzh.ch/typo3/install.php |
10
| MariaDB | Update 10.1 > 10.6 - all columns need a default value if INSERT does not specify the column |
11
12
* The use of dump files doesn't include sql functions. Exporting them with phpMyAdmin from source to target is currently the best solution. In most cases not necessary because upgrade happens on an existing instance with given databases.
13
* Sometimes T3 Cache could make problems while upgrading. Deleting the typo3temp folder helps.
14
* Using relative paths in typo3 template editor could make problems in v11. It helps to change them to absolute paths. Good example for these situations are the use of 'cd.stylesheet =' options.
15
16 3 Carsten Rose
Times
17
18
* 09:05 Apache stop
19
* 09:09 VMWare einloggen
20
* 09:16 do-release-upgrade  18 > 20
21
* 09:40 reboot
22
* 09:41 do-release-upgrade  20 > 22
23
* 09:55 reboot
24
25
26 1 Carsten Rose
h2. VMWare Konsole
27
28
* Check das CR sich einloggen kann: https://wikiit.math.uzh.ch/it/bestpractice/vmware-console
29
30
  * Wird der IE genommen, funktioniert der Aufruf der vsphere Seite nciht.
31
  * Edge hat mehrere Minuten gebraucht um zu starten.
32
  * Firefox konnte sich anmelden, dann hat CR aber abgebrochen weil mittlerweile Edge gestartet ist.
33
34
* Edge hat die Konsole gut dargestellt.
35
36
h2. Preparation on production
37
38
<pre>
39
# Check das der neueste Kernel aktiv ist, falls nicht reboot
40
$ uname -a
41
$ dpkg --list | grep linux
42
43
#
44
# Alle alten Kernel entfernen! Das ist wichtig damit der do-release-upgrade Process nicht unnoetig alte Kernel Module aktualisiert.
45
#
46
$ CURRENT=`uname -a | cut -f 3 -d ' '`
47
$ ALL=`dpkg --list | grep -e linux-modules -e linux-image | grep -v $CURRENT | awk '{ print $2 }'`
48
$ for II in $ALL; do apt purge -y $II; done
49
50
# Backup Dir anlegen:
51
[user@tlX] mkdir /scratch/tmp/30/ik
52
# Latest T3 nach Production kopieren
53
[user@tlX] scp /scratch/software/typo3/typo3_src-11.5.25.tgz root@inframitool01.uzh.ch:/var/tmp/
54
55
# T3 schonmal auspacken
56 2 Carsten Rose
[root@inframitool01] cd /var/html; tar zxf typo3_src-11.5.25.tgz
57 1 Carsten Rose
58
# ** Am Tag vor der Migration **
59
# Backup anlegen. Zuerst auf TL: `mkdir /scratch/tmp/30/ik`
60
# 
61 2 Carsten Rose
[root@inframitool01
62 1 Carsten Rose
$ cd /
63
$ tar --exclude=var/www/html -czvf /tmp/ik.system.tgz bin boot etc home initrd.img lib lib64 opt root sbin snap srv swap.img usr var vmlinuz
64
$ scp /var/tmp/ik.system.tgz crose@ssh.math.uzh.ch:/scratch/tmp/30/ik/
65
$ rsync -av /var/www/html crose@ssh.math.uzh.ch:/scratch/tmp/30/ik/
66
67 2 Carsten Rose
# phpMyAdmin
68
$ scp crose@ssh.math.uzh.ch:/scratch/software/php/phpMyAdmin-5.2.1-all-languages.zip /var/tmp/
69
$ cd /var/www/; unzip /var/tmp/phpMyAdmin-5.2.1-all-languages.zip
70
$ cd /var/www/phpMyAdmin-5.2.1-all-languages/
71
$ cp config.sample.inc.php 
72
$ vim config.inc.php
73
74 1 Carsten Rose
# 
75
# ** Am Tag der Migration **
76
#
77
78
# Apache anhalten
79
$ service apache2 stop
80
81
# Alle Cronjobs anhalten:
82
$ crontab -e
83
$ crontab -e -u www-data
84
85
# DBs - einmal lokal ablegen und dann nochmal remote sichern
86
$ mkdir /var/tmp/prod; cd /var/tmp/prod
87
$ rm *.sql
88
89
$ ALL="mi_preview_db mi_preview_t3 mi_prod_db mi_prod_t3 mysql"
90
$ for II in $ALL; do echo $II; mysqldump $II > $II.sql ; done
91 2 Carsten Rose
$ mysqldump mi_prod_t3 fe_users > mi_prod_t3.fe_users.sql
92 1 Carsten Rose
$ scp *.sql crose@ssh.math.uzh.ch:/scratch/tmp/30/ik/
93
94
# Backup latest files:
95
$ rsync -av --delete /var/www/html/ crose@ssh.math.uzh.ch:/scratch/tmp/30/ik/html/
96
97
# 
98
# OS Migration: 
99
# 
100
101
# Ubuntu 20
102
$ do-release-upgrade 
103
104
# Login IK(u20) und Apache direkt wieder anhalten:
105
$ service apache2 stop
106
107
# Ubuntu 22
108
$ do-release-upgrade 
109
110
# Login IK(u22) und Apache direkt wieder anhalten:
111
$ service apache2 stop
112
113
# Check welche PHP Version installiert. Ggfs. sind noch alte installiert. 
114
# Am besten vergleichen ob alle PHP Pakete von der alten Version auch in der neuen installiert sind. 
115
$ dpkg --list | grep php
116 2 Carsten Rose
$ apt purge php7.0* php7.4* libapache2-mod-php7.2 libapache2-mod-php7.0
117 1 Carsten Rose
$ apt install php-xml php-json
118 2 Carsten Rose
$ rm /etc/apache2/mods-enabled/php7.4*
119
$ a2enmod php8.1
120
121 1 Carsten Rose
</pre>
122
123
h2. Preparation on dev (webwork22)
124
125
<pre>
126
# Create dump of typo3 database:
127 2 Carsten Rose
$ mysqldump mi_dev_t3 > /var/tmp/ik_dev_t3_v11.sql
128 1 Carsten Rose
129
# Filestruktur 
130
$ cd /var/www/html
131 2 Carsten Rose
$ tar zcf /var/tmp/ik_dev_v11.tgz mi
132 1 Carsten Rose
</pre>
133
134
h2. File transfer: Dev to Production
135
136
Jump host TL
137
<pre>
138
[crose@tlX]
139 2 Carsten Rose
$ scp root@webwork22:/var/tmp/ik_dev_t3_v11.sql /scratch/tmp/30/ik/dev/
140
$ scp root@webwork22:/var/tmp/ik_dev_v11.tgz /scratch/tmp/30/ik/dev/
141 1 Carsten Rose
142
$ rsync -av  /scratch/tmp/30/ik/dev root@inframitool01.uzh.ch:/var/tmp/
143
</pre>
144
145
h2. Setup Production
146
147
<pre>
148
[root@inframitoool01]
149
150
$ cd /var/www/
151 2 Carsten Rose
$ mv html /var/tmp/html.v8
152 1 Carsten Rose
153
# Unpack page instance for prod and preview. Rename them to original name and check the right permissions:
154
155
# Prod
156
$ cd /var/www/
157
$ tar -xzf /var/tmp/dev/ik_dev_v11.tgz
158 2 Carsten Rose
$ mv mi html
159 1 Carsten Rose
160
# Preview
161
$ tar -xzf /var/tmp/dev/ik_dev_v11.tgz
162
$ mv mi html/preview
163
164
# Drop old T3 (tables might be changed), create empty one
165
$ mysql
166
% drop database mi_prod_t3;
167
% drop database mi_preview_t3;
168
% create database mi_prod_t3;
169
% create database mi_preview_t3;
170
171
# Not necessary if there is a full sync in the next step: Import T3 DBs (Prod & Peview same)
172
$ mysql mi_prod_t3 < /var/tmp/dev/ik_dev_t3_v11.sql
173
$ mysql mi_preview_t3 < /var/tmp/dev/ik_dev_t3_v11.sql
174
175 2 Carsten Rose
# FE Users
176
$ mysql mi_prod_t3 < /var/tmp/prod/mi_prod_t3.fe_users.sql
177
178
179
180 1 Carsten Rose
#
181
# ** Sync QFQ Data **
182
# 
183
[crose@tlX]
184
$ cd /scratch/share/system/sync/ik/
185
$ ./IKDevPreviewSync.sh -f
186 2 Carsten Rose
$ ./IKPreviewProdSync.sh -f
187 1 Carsten Rose
188
# 
189
# Restore fileadmin
190
# 
191
$ mkdir /var/tmp/fileadmin.dev
192
193
# Keep dev version temporarily on prod for comparison in case 
194 2 Carsten Rose
$ mv /var/www/html/fileadmin/protected /var/tmp/prod/dev-protected
195 1 Carsten Rose
196
# Restore prod: financialrequests & protected
197 2 Carsten Rose
$ mv /var/tmp/html.v8/fileadmin/protected /var/www/html/fileadmin/
198 1 Carsten Rose
199
# Restore preview: financialrequests & protected
200
$ \rm -R /var/www/html/preview/fileadmin/protected 
201 2 Carsten Rose
$ mv /var/tmp/html.v8/preview/fileadmin/protected /var/www/html/preview/fileadmin/
202 1 Carsten Rose
</pre>
203
204
h2. Configuration: qfq.json and LocalConfiguration.php
205
206
* Prepare the final config files in `/var/tmp/dev/prev|prod`
207
208
LocalConfiguration.php:
209
210
* db
211
* user
212
* password
213
* baseUrl
214
* wkhtmltopdf 
215
* redirect E-Mail
216
* sitename
217
* installtoolpw
218
219
Copy config files:
220
221
<pre>
222
$ cp /var/tmp/dev/prod/LocalConfiguration.php /var/www/html/typo3conf/
223
$ cp /var/tmp/dev/prev/LocalConfiguration.php /var/www/html/preview/typo3conf/
224
</pre>
225
226
h2. Finalize
227
228
* Play ansible playbook
229
<pre>
230
[user@tlX] 
231
$ cd git/it/ansible/playbooks
232
$ ansible-playbook -i ../hosts qfq.yml --limit inframitool01
233
234 2 Carsten Rose
[root@inframitool01]
235 1 Carsten Rose
$ a2enmod php8.1 
236
$ service apache2 restart
237
238
</pre>
239
240
* Misc
241
<pre>
242
# Set Permissions
243
$ chown -R www-data:www-data /var/www/html
244
245
# Alle Cronjobs aktvieren:
246
$ cronjob -e
247
$ cronjob -e -u www-data
248
</pre>
249
250
* Check Backup.
251
* Remove old IK dev instance (webwork16).
252
253
  * Incl. 'Autocron' Dev
254
255
* Update kpit PWs with webwork16/webwork22 credentials.
256
* Update "Project Wiki":https://project.math.uzh.ch/projects/IK/wiki summary with new dev instance (webwork22).
257
258
h2. Probleme bei der Migration
259
260 2 Carsten Rose
* Netzwerk Config /etc/network/interfaces wurde nicht ubertragen nach /etc/netplan/50-cloud-init.yaml ... Manuell angelegt.
261 1 Carsten Rose
* T3 Site-Konfiguration: T3 hat in der Site Konfiguration die URL von webwork22 gehabt (dump von webwork22). Das wird aktuell durch die I-MATH Sync Skripte noch nicht automatisch angepasst. @Sites > Site Configuration > Entry Point@
262
* Das FE Login Template sieht schlecht aus. Im @typo3_src@ Vezeichnis hat EN einige Anpassungen gemacht (webwork22) - darum als Quickfix die angepasste Version auf IK kopiert (geht mit dem naechsten Typo3 Update verloren (@typo3_src-11.5.25/typo3/sysext/felogin/Resources/Private/Templates/Login/Login.html@)