Project

General

Profile

Migration » History » Version 70

Enis Nuredini, 19.10.2023 13:19

1 55 Carsten Rose
{{child_pages}}
2
3
{{toc}}
4
5 52 Carsten Rose
h1. Update Typo3 v8 > v9 > v10 > v11
6 1 Benjamin Baer
7 28 Carsten Rose
h2. Compatibility
8
9 29 Carsten Rose
 * https://typo3.org/cms/roadmap
10 24 Carsten Rose
 * Required PHP version per Typo3, default PHP Version per Ubuntu OS, required PHP Version per PHP-Unit version.
11 54 Carsten Rose
 * "ig_ldap_sso_auth":https://extensions.typo3.org/extension/ig_ldap_sso_auth, @/scratch/software/typo3/extension@
12 23 Carsten Rose
13 40 Carsten Rose
| *Typo3* | *T3 EOL*   | *QFQ* | *PHP required T3*   | *U18.04* | *U20.04* | *U22.04* | *PHPUnit 6* | *PHPUnit 9* | *PHPUnit 10* |*ldap 3.6.0*|*ldap 3.7.1*|
14
| *V8*    |-31.03.2020-| ?     | 7.0-7.4             | 7.2      | 7.4      | -8.1-    | 7.0-7.2     | >=7.3       | ->=8.1-      | 8.7 - 10.4 | -          |
15
| *V9.5*  |-30.04.2021-| 19.5.0| 7.2-7.4             | 7.2      | 7.4      | -8.1-    | 7.0-7.2     | >=7.3       | ->=8.1-      | 8.7 - 10.4 | 9.5 - 11.5 |
16 53 Carsten Rose
| *V10*   |-30.04.2023-|22.10.1| 7.2-7.4             | 7.2      | 7.4      | -8.1-    | 7.0-7.2     | >=7.3       | ->=8.1-      | 8.7 - 10.4 | 9.5 - 11.5 |
17 40 Carsten Rose
| *V11*   | 31.10.2024 | -     | 7.4, 8.0-8.2        | -7.2-    | 7.4      | 8.1      | -7.0-7.2-   | >=7.3       | >=8.1        | -          | 9.5 - 11.5 |
18
| *V12*   | 30.04.2026 | -     | 8.1, 8.2            | -7.2-    | -7.4-    | 8.1      | -7.0-7.2-   | >=7.3       | >=8.1        | -          | -          |
19 39 Carsten Rose
20 1 Benjamin Baer
h2. Preparation Typo3 v8
21
22
* Update Extensions to avoid problems after update.
23
** The IG LDAP Extension is the most likely culprit, we recommend to update to version 3.6.0 (which is compatible for typo3 v8 - v10). (Warning: later versions had problem with our LDAP Server, do not install any newer version if not needed)
24 46 Carsten Rose
*** Open the ldap 3.6 *extension* config dialog (e.g. enable fe ldap, be ldap,...) and save it, to replay the config in T3 V9.
25 1 Benjamin Baer
*** Check if login still works (if not, it is possible to create new local admin users via /typo3/install.php)
26
** Update QFQ
27
* To easily downgrade again:
28
** copy the entire `typo3conf` Folder and store it in a temporary folder.
29
** Backup the typo3 database
30
31 3 Benjamin Baer
Versions of Extensions:
32 4 Benjamin Baer
|_.Extension|_.Version|
33 3 Benjamin Baer
| ig_ldap_sso | 3.6.0 |
34
35 1 Benjamin Baer
h2. upgrade to newest version of Typo3 v9
36
37
* download 9.5.26
38
* replace symlink typo3_src
39
<pre>
40
rm typo3_src
41
ln -s /var/www/typo3_src-9.5.26/ typo3_src
42
</pre>
43
44
* go to installtool: /typo3/install.php
45 45 Carsten Rose
* *Upgrade*: Run the upgrade wizard under 
46 1 Benjamin Baer
** Whenever there is an option, choose the default (most of the time to not do it, like backward compability to typo3 7 etc.)
47 45 Carsten Rose
* *Maintenance*: 
48
49
  * Database analyzer and apply the changes
50
  * Flush Caches
51
52
* *Environment*: Directory Status" and autofix problems (this should create .htaccess for page slugs)
53 47 Carsten Rose
* *Settings > Configure Extension > ig_ldap_sso_auth*: Backend / Frontend.
54 1 Benjamin Baer
* Try to login to the backend
55
* Update to the newest Version of uzh_cd: https://www.math.uzh.ch/repo/?dir=uzhcd/v9
56
** Please note changes that have to be made to the config:
57
*** Remove all default js and css references for qfq, they are included now
58
*** Rewrite cd.fullWidth.pidList = 5,10 to: 
59
    <pre>cd.fullWidth.pidList = 5 in tree.rootLineIds || 10 in tree.rootLineIds</pre>
60
* If not happened before, update QFQ: https://qfq.io/download/?dir=releases (at least v 22.10.1)
61 45 Carsten Rose
* Do *not* update ig_ldap past 3.6.0!
62 3 Benjamin Baer
63
Versions of Extensions:
64 4 Benjamin Baer
|_.Extension|_.Version|
65 3 Benjamin Baer
| ig_ldap_sso | 3.6.0 |
66 5 Benjamin Baer
| uzh_cd_extension | 22.11.07 + |
67 3 Benjamin Baer
| qfq | 22.10.1 + |
68
69 9 Enis Nuredini
h3. Enable content columns
70 7 Enis Nuredini
71 10 Enis Nuredini
Edit root page
72
73 1 Benjamin Baer
!columnDesignT3V9.png!
74 16 Enis Nuredini
75 19 Enis Nuredini
h3. Cache problem
76 16 Enis Nuredini
77 19 Enis Nuredini
Pages don't refresh immediately when the backend user is logged in. This behavior is not given with logged out beUser.
78 6 Enis Nuredini
79 1 Benjamin Baer
h2. Upgrade to Typo3 v10
80
81 48 Carsten Rose
Update reference index (in T3 V9):
82
83
* “System” > “DB check” module and use the “Check and update global reference index” function. "UpdateReferenceIndex":https://docs.typo3.org/m/typo3/guide-installation/master/en-us/Upgrade/UpdateReferenceIndex/Index.html
84 1 Benjamin Baer
85 50 Carsten Rose
V10 Update:
86 48 Carsten Rose
87
* Download Typo3 v10
88 1 Benjamin Baer
<pre>
89
cd /var/www/
90
wget --content-disposition https://get.typo3.org/10.4.15
91
tar -xzf typo3_src-10.4.15.tar.gz
92
rm typo3_src-10.4.15.tar.gz
93
</pre>
94
95 50 Carsten Rose
* Replace symlink
96 1 Benjamin Baer
<pre>
97
rm typo3_src
98
ln -s /var/www/typo3_src-10.4.15/ typo3_src
99
</pre>
100
101
Hint: After changing the symlink to newer typo3 versions sometimes it's helpful to delete the content from typo3temp folder. This clears some errors that can appear after version upgrade.
102 38 Enis Nuredini
103 65 Philipp Gröbelbauer
*Install tool*: /typo3/install.php (If an error message appears instead of the install tool, clear the typo3temp folder!)
104 1 Benjamin Baer
105 51 Carsten Rose
* *Upgrade > Upgrade wizzard:*
106
107
  * execute all except the ones that install extensions
108
109
* *Maintenance > Analyze Database Structure > apply all changes*
110
* *Settings > Manage System Maintainers* > List all BE accounts which needs access to extension installation.
111 1 Benjamin Baer
* Dump TCA
112 50 Carsten Rose
113 51 Carsten Rose
* *Maintenance > Clear caches:* Maintenance > Flush Cache
114
* *Maintenance > Remove Temporary Assets*
115 50 Carsten Rose
* *Environment > Directory Status*  autofix problems (this should create/update .htaccess for page slugs)
116 1 Benjamin Baer
117 51 Carsten Rose
*Typo3 Backend*
118
119
* Sites > New Configuration 
120 1 Benjamin Baer
** This is needed for slugs to work. Also you need to create a second language entry here, if you have a german/english site.
121 51 Carsten Rose
122
*Apache*
123 1 Benjamin Baer
124 12 Enis Nuredini
* Configure apache webserver correctly:
125 11 Enis Nuredini
** If not done then insert following parameters in /etc/apache2/sites-enabled/default-ssl.conf
126
<pre><code class="yaml">
127
<Directory /var/www/html>
128
	Options -Indexes +FollowSymLinks +Includes
129
	AllowOverride All
130
	Order allow,deny
131
	Allow from all   
132
	DirectoryIndex index.php index.html index.shtml
133
</Directory>
134
</code></pre>
135
136
** Execute 'service apache2 reload' in terminal
137
138 2 Benjamin Baer
* Open any page with a qfq record, you will get a warning message that you need to update {{pageAlias:T}} and {{pageId:T}} with an option to automatically do this > run the updater
139
** Afterwards click on check again and then choose "to never check for this again".
140
** Please note that all handwritten urls in qfq and form records have to be changed to slugs!
141
** Check if everything is working and make adjustment. Usually it just misses the slugs.
142
** For multilanguage setup, note that there is no longer an L=1 url parameter and you have to adjust records accordingly
143
144 56 Enis Nuredini
h2. FeLogin template configuration
145
146 57 Enis Nuredini
If Typo3 V10.4 or newer is used, then felogin plugin is deprecated and the previously setup configuration of the UZH CD Extension doesn't work anymore. There are two options of using a FeLogin template in T3 V11:
147 56 Enis Nuredini
* Own created template
148
* Template from UZH CD Extension
149
150
h3. Own created template
151
152
153 58 Enis Nuredini
The own created feLogin template must be written with the fluid engine syntax. Other used engine syntax doesn't work anymore in Typo3 V11. Variables are defined with curly brackets and can be created on your own:
154 56 Enis Nuredini
<pre>
155
plugin.tx_felogin_login {
156
157
  settings {
158
    # First own variable
159
    myValueOne = Example Text
160
    # Second own variable
161
    myValueTwo = Hello, world!
162
  }  
163
}
164
</pre>
165
166
Get the access to these variables in fluid template with:
167
<pre>
168
{settings.myValueOne}
169
{settings.myValueTwo}
170
</pre>
171
172 63 Enis Nuredini
Linking your own feLogin template is done following way (destination folder should be named 'Felogin') (Template > Setup):
173 56 Enis Nuredini
!t3V11OwnLoginSetup.png!
174
175
For starting use the two examples of fluid felogin templates which are attached to this documentation.
176
177 61 Enis Nuredini
IMPORTANT: Sometimes the user given template will not be priorised from typo3. This can be fixed by renaming the original Felogin templates (Login.html, Logout.html) from the typo3 folder: 
178
<pre>
179
typo3/sysext/felogin/Resources/Private/Templates/Login
180
</pre>
181
182 64 Enis Nuredini
Templates has to be named *Login.html/Logout.html*
183
184 56 Enis Nuredini
h3. Use from UZH CD extension
185 59 Enis Nuredini
186 62 Enis Nuredini
Actually the uzh cd extension does not deliver a compatible fluid version of a felogin template. Its still in progress and should be delivered soon. But you can use the two example template files from the attachement of this documentation. 
187
To link the templates from the UZH CD extension (Template > Setup):
188 60 Enis Nuredini
!uzhTemplate.png!
189 15 Enis Nuredini
190 1 Benjamin Baer
h2. Nginx
191
192
NGinx does not read .htaccess files, so you need to manually add the config to your nginx sites. Here is an include:
193
194
<pre>
195
# Compressing resource files will save bandwidth and so improve loading speed especially for users
196
# with slower internet connections. TYPO3 can compress the .js and .css files for you.
197
# *) Set $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = 9 for the Backend
198
# *) Set $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] = 9 together with the TypoScript properties
199
#    config.compressJs and config.compressCss for GZIP compression of Frontend JS and CSS files.
200
location ~ \.js\.gzip$ {
201
    add_header Content-Encoding gzip;
202
    gzip off;
203
    types { text/javascript gzip; }
204
}
205
location ~ \.css\.gzip$ {
206
    add_header Content-Encoding gzip;
207
    gzip off;
208
    types { text/css gzip; }
209
}
210
211
# TYPO3 - Rule for versioned static files, configured through:
212
# - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
213
# - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
214
if (!-e $request_filename) {
215
    rewrite ^/(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ /$1.$3 last;
216
}
217
218
# TYPO3 - Block access to composer files
219
location ~* composer\.(?:json|lock) {
220
    deny all;
221
}
222
223
# TYPO3 - Block access to flexform files
224
location ~* flexform[^.]*\.xml {
225
    deny all;
226
}
227
228
# TYPO3 - Block access to language files
229
location ~* locallang[^.]*\.(?:xml|xlf)$ {
230
    deny all;
231
}
232
233
# TYPO3 - Block access to static typoscript files
234
location ~* ext_conf_template\.txt|ext_typoscript_constants\.txt|ext_typoscript_setup\.txt {
235
    deny all;
236
}
237
238
# TYPO3 - Block access to miscellaneous protected files
239
location ~* /.*\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql|sqlite)$ {
240
    deny all;
241
}
242
243
# TYPO3 - Block access to recycler and temporary directories
244
location ~ _(?:recycler|temp)_/ {
245
    deny all;
246
}
247
248
# TYPO3 - Block access to configuration files stored in fileadmin
249
location ~ fileadmin/(?:templates)/.*\.(?:txt|ts|typoscript)$ {
250
    deny all;
251
}
252
253
# TYPO3 - Block access to libraries, source and temporary compiled data
254
location ~ ^(?:vendor|typo3_src|typo3temp/var) {
255
    deny all;
256
}
257
258
# TYPO3 - Block access to protected extension directories
259
location ~ (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ {
260
    deny all;
261
}
262
263
264
location / {
265
    try_files $uri $uri/ /index.php$is_args$args;
266
}
267
268
location ~ [^/]\.php(/|$) {
269
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
270
    if (!-f $document_root$fastcgi_script_name) {
271
        return 404;
272
    }
273
    fastcgi_buffer_size 32k;
274
    fastcgi_buffers 8 16k;
275
    fastcgi_connect_timeout 240s;
276
    fastcgi_read_timeout 240s;
277
    fastcgi_send_timeout 240s;
278
279
    # this is the PHP-FPM upstream - see also: https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/#connecting-nginx-to-php-fpm
280
    include snippets/fastcgi-php.conf;
281
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
282
283
}
284
</pre>
285
286
the fastcgi_pass needs to be edited, here it is for standard ubuntu 20.04 nginx server.
287
288
You can save this file to /etc/nginx/snippets/typo3.conf and include it in your site config via `include ../snippets/typo3.conf`
289 66 Enis Nuredini
290
h2. DB set default values
291
292
Use following script to set default values in DB. It's necessary in newer database versions.
293
<pre>
294
php /usr/sepp/scripts/mysqlFixDefaults.php schema.sql > schemaupdate.sql
295
</pre>
296 67 Enis Nuredini
297
h2. Search bar configuration
298
299
The search bar will not work anymore out of the box after upgrading to Typo3 V11. There needs to be done some changes to get it work.
300
1. Define TypoScript setup propertys in main template:
301
<pre>
302
page {
303
    10 = FLUIDTEMPLATE
304
    10 {
305
        file = typo3conf/ext/uzh_cd_template/Resources/Private/Templates/template.html
306
        dataProcessing {
307
            10 = TYPO3\CMS\Frontend\DataProcessing\SiteProcessor
308
        }
309
    }
310
}
311
</pre>
312
313 68 Enis Nuredini
2. Under following path change the action from search form tag with new variable *{site.base}* and added pageSlug from search page:
314 67 Enis Nuredini
<pre>
315
typo3conf/ext/uzh_cd_template/Resources/Private/Templates/template.html
316
</pre>
317
318
The result part should look like this:
319
<pre>
320
<div class="search">
321 70 Enis Nuredini
   <f:variable name="languagePath" value="" />
322
   <f:if condition="{data.sys_language_uid} = 1">
323
        <f:then>
324
             <f:variable name="languagePath" value="en/" />
325
        </f:then>
326
   </f:if>
327
   <form action="{site.base}{languagePath}search" name="searchform" method="get">
328 67 Enis Nuredini
        <input type="text" class="search" name="sword" size="20" placeholder="Search" />
329
        <input type="image" name="submit" src="typo3conf/ext/uzh_cd_template/Resources/Public/Images/search.png" alt="" class="searchbutton" />
330
        <input type="hidden" name="id" value="<f:cObject typoscriptObjectPath='cd.header.search' />" />
331
    </form>                
332
</div>
333
</pre>