Project

General

Profile

20230623 IK » History » Version 2

Carsten Rose, 23.06.2023 13:10

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
h2. VMWare Konsole
17
18
* Check das CR sich einloggen kann: https://wikiit.math.uzh.ch/it/bestpractice/vmware-console
19
20
  * Wird der IE genommen, funktioniert der Aufruf der vsphere Seite nciht.
21
  * Edge hat mehrere Minuten gebraucht um zu starten.
22
  * Firefox konnte sich anmelden, dann hat CR aber abgebrochen weil mittlerweile Edge gestartet ist.
23
24
* Edge hat die Konsole gut dargestellt.
25
26
h2. Preparation on production
27
28
<pre>
29
# Check das der neueste Kernel aktiv ist, falls nicht reboot
30
$ uname -a
31
$ dpkg --list | grep linux
32
33
#
34
# Alle alten Kernel entfernen! Das ist wichtig damit der do-release-upgrade Process nicht unnoetig alte Kernel Module aktualisiert.
35
#
36
$ CURRENT=`uname -a | cut -f 3 -d ' '`
37
$ ALL=`dpkg --list | grep -e linux-modules -e linux-image | grep -v $CURRENT | awk '{ print $2 }'`
38
$ for II in $ALL; do apt purge -y $II; done
39
40
# Backup Dir anlegen:
41
[user@tlX] mkdir /scratch/tmp/30/ik
42
# Latest T3 nach Production kopieren
43
[user@tlX] scp /scratch/software/typo3/typo3_src-11.5.25.tgz root@inframitool01.uzh.ch:/var/tmp/
44
45
# T3 schonmal auspacken
46 2 Carsten Rose
[root@inframitool01] cd /var/html; tar zxf typo3_src-11.5.25.tgz
47 1 Carsten Rose
48
# ** Am Tag vor der Migration **
49
# Backup anlegen. Zuerst auf TL: `mkdir /scratch/tmp/30/ik`
50
# 
51 2 Carsten Rose
[root@inframitool01
52 1 Carsten Rose
$ cd /
53
$ 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
54
$ scp /var/tmp/ik.system.tgz crose@ssh.math.uzh.ch:/scratch/tmp/30/ik/
55
$ rsync -av /var/www/html crose@ssh.math.uzh.ch:/scratch/tmp/30/ik/
56
57 2 Carsten Rose
# phpMyAdmin
58
$ scp crose@ssh.math.uzh.ch:/scratch/software/php/phpMyAdmin-5.2.1-all-languages.zip /var/tmp/
59
$ cd /var/www/; unzip /var/tmp/phpMyAdmin-5.2.1-all-languages.zip
60
$ cd /var/www/phpMyAdmin-5.2.1-all-languages/
61
$ cp config.sample.inc.php 
62
$ vim config.inc.php
63
64 1 Carsten Rose
# 
65
# ** Am Tag der Migration **
66
#
67
68
# Apache anhalten
69
$ service apache2 stop
70
71
# Alle Cronjobs anhalten:
72
$ crontab -e
73
$ crontab -e -u www-data
74
75
# DBs - einmal lokal ablegen und dann nochmal remote sichern
76
$ mkdir /var/tmp/prod; cd /var/tmp/prod
77
$ rm *.sql
78
79
$ ALL="mi_preview_db mi_preview_t3 mi_prod_db mi_prod_t3 mysql"
80
$ for II in $ALL; do echo $II; mysqldump $II > $II.sql ; done
81 2 Carsten Rose
$ mysqldump mi_prod_t3 fe_users > mi_prod_t3.fe_users.sql
82 1 Carsten Rose
$ scp *.sql crose@ssh.math.uzh.ch:/scratch/tmp/30/ik/
83
84
# Backup latest files:
85
$ rsync -av --delete /var/www/html/ crose@ssh.math.uzh.ch:/scratch/tmp/30/ik/html/
86
87
# 
88
# OS Migration: 
89
# 
90
91
# Ubuntu 20
92
$ do-release-upgrade 
93
94
# Login IK(u20) und Apache direkt wieder anhalten:
95
$ service apache2 stop
96
97
# Ubuntu 22
98
$ do-release-upgrade 
99
100
# Login IK(u22) und Apache direkt wieder anhalten:
101
$ service apache2 stop
102
103
# Check welche PHP Version installiert. Ggfs. sind noch alte installiert. 
104
# Am besten vergleichen ob alle PHP Pakete von der alten Version auch in der neuen installiert sind. 
105
$ dpkg --list | grep php
106 2 Carsten Rose
$ apt purge php7.0* php7.4* libapache2-mod-php7.2 libapache2-mod-php7.0
107 1 Carsten Rose
$ apt install php-xml php-json
108 2 Carsten Rose
$ rm /etc/apache2/mods-enabled/php7.4*
109
$ a2enmod php8.1
110
111 1 Carsten Rose
</pre>
112
113
h2. Preparation on dev (webwork22)
114
115
<pre>
116
# Create dump of typo3 database:
117 2 Carsten Rose
$ mysqldump mi_dev_t3 > /var/tmp/ik_dev_t3_v11.sql
118 1 Carsten Rose
119
# Filestruktur 
120
$ cd /var/www/html
121 2 Carsten Rose
$ tar zcf /var/tmp/ik_dev_v11.tgz mi
122 1 Carsten Rose
</pre>
123
124
h2. File transfer: Dev to Production
125
126
Jump host TL
127
<pre>
128
[crose@tlX]
129 2 Carsten Rose
$ scp root@webwork22:/var/tmp/ik_dev_t3_v11.sql /scratch/tmp/30/ik/dev/
130
$ scp root@webwork22:/var/tmp/ik_dev_v11.tgz /scratch/tmp/30/ik/dev/
131 1 Carsten Rose
132
$ rsync -av  /scratch/tmp/30/ik/dev root@inframitool01.uzh.ch:/var/tmp/
133
</pre>
134
135
h2. Setup Production
136
137
<pre>
138
[root@inframitoool01]
139
140
$ cd /var/www/
141 2 Carsten Rose
$ mv html /var/tmp/html.v8
142 1 Carsten Rose
143
# Unpack page instance for prod and preview. Rename them to original name and check the right permissions:
144
145
# Prod
146
$ cd /var/www/
147
$ tar -xzf /var/tmp/dev/ik_dev_v11.tgz
148 2 Carsten Rose
$ mv mi html
149 1 Carsten Rose
150
# Preview
151
$ tar -xzf /var/tmp/dev/ik_dev_v11.tgz
152
$ mv mi html/preview
153
154
# Drop old T3 (tables might be changed), create empty one
155
$ mysql
156
% drop database mi_prod_t3;
157
% drop database mi_preview_t3;
158
% create database mi_prod_t3;
159
% create database mi_preview_t3;
160
161
# Not necessary if there is a full sync in the next step: Import T3 DBs (Prod & Peview same)
162
$ mysql mi_prod_t3 < /var/tmp/dev/ik_dev_t3_v11.sql
163
$ mysql mi_preview_t3 < /var/tmp/dev/ik_dev_t3_v11.sql
164
165 2 Carsten Rose
# FE Users
166
$ mysql mi_prod_t3 < /var/tmp/prod/mi_prod_t3.fe_users.sql
167
168
169
170 1 Carsten Rose
#
171
# ** Sync QFQ Data **
172
# 
173
[crose@tlX]
174
$ cd /scratch/share/system/sync/ik/
175
$ ./IKDevPreviewSync.sh -f
176 2 Carsten Rose
$ ./IKPreviewProdSync.sh -f
177 1 Carsten Rose
178
# 
179
# Restore fileadmin
180
# 
181
$ mkdir /var/tmp/fileadmin.dev
182
183
# Keep dev version temporarily on prod for comparison in case 
184 2 Carsten Rose
$ mv /var/www/html/fileadmin/protected /var/tmp/prod/dev-protected
185 1 Carsten Rose
186
# Restore prod: financialrequests & protected
187 2 Carsten Rose
$ mv /var/tmp/html.v8/fileadmin/protected /var/www/html/fileadmin/
188 1 Carsten Rose
189
# Restore preview: financialrequests & protected
190
$ \rm -R /var/www/html/preview/fileadmin/protected 
191 2 Carsten Rose
$ mv /var/tmp/html.v8/preview/fileadmin/protected /var/www/html/preview/fileadmin/
192 1 Carsten Rose
</pre>
193
194
h2. Configuration: qfq.json and LocalConfiguration.php
195
196
* Prepare the final config files in `/var/tmp/dev/prev|prod`
197
198
LocalConfiguration.php:
199
200
* db
201
* user
202
* password
203
* baseUrl
204
* wkhtmltopdf 
205
* redirect E-Mail
206
* sitename
207
* installtoolpw
208
209
Copy config files:
210
211
<pre>
212
$ cp /var/tmp/dev/prod/LocalConfiguration.php /var/www/html/typo3conf/
213
$ cp /var/tmp/dev/prev/LocalConfiguration.php /var/www/html/preview/typo3conf/
214
</pre>
215
216
h2. Finalize
217
218
* Play ansible playbook
219
<pre>
220
[user@tlX] 
221
$ cd git/it/ansible/playbooks
222
$ ansible-playbook -i ../hosts qfq.yml --limit inframitool01
223
224 2 Carsten Rose
[root@inframitool01]
225 1 Carsten Rose
$ a2enmod php8.1 
226
$ service apache2 restart
227
228
</pre>
229
230
* Misc
231
<pre>
232
# Set Permissions
233
$ chown -R www-data:www-data /var/www/html
234
235
# Alle Cronjobs aktvieren:
236
$ cronjob -e
237
$ cronjob -e -u www-data
238
</pre>
239
240
* Check Backup.
241
* Remove old IK dev instance (webwork16).
242
243
  * Incl. 'Autocron' Dev
244
245
* Update kpit PWs with webwork16/webwork22 credentials.
246
* Update "Project Wiki":https://project.math.uzh.ch/projects/IK/wiki summary with new dev instance (webwork22).
247
248
h2. Probleme bei der Migration
249
250 2 Carsten Rose
* Netzwerk Config /etc/network/interfaces wurde nicht ubertragen nach /etc/netplan/50-cloud-init.yaml ... Manuell angelegt.
251 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@
252
* 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@)