Upgrade 2204 » History » Revision 19
Revision 18 (Enis Nuredini, 18.01.2024 11:28) → Revision 19/22 (Enis Nuredini, 18.01.2024 11:29)
{{toc}} h1. Docker Upgrade - Ubuntu 22-04 h2. New docker container It is recommended to create a new docker container with the new typo3 docker branch *ubuntu22* instead of upgrading an existing one. How to clone the specific branch: <pre> git clone -b ubuntu22 https://git.math.uzh.ch/typo3/typo3-docker.git </pre> Upgrading from T3 V10 to V11 - keeping pages and tt_content. Use following querys to select the T3 V11 compatible columns and export them for your new T3 instance: <pre> SELECT uid, pid, tstamp, crdate, cruser_id, deleted, hidden, starttime, endtime, fe_group, sorting, rowDescription, editlock, sys_language_uid, l10n_parent, l10n_source, l10n_state, t3_origuid, l10n_diffsource, t3ver_oid, t3ver_wsid, t3ver_state, t3ver_stage, perms_userid, perms_groupid, perms_user, perms_group, perms_everybody, title, slug, doktype, TSconfig, is_siteroot, php_tree_stop, url, shortcut, shortcut_mode, subtitle, layout, target, media, lastUpdated, keywords, cache_timeout, cache_tags, newUntil, description, no_search, SYS_LASTCHANGED, abstract, module, extendToSubpages, author, author_email, nav_title, nav_hide, content_from_pid, mount_pid, mount_pid_ol, l18n_cfg, fe_login_mode, backend_layout, backend_layout_next_level, tsconfig_includes, categories FROM pages; SELECT uid, rowDescription, pid, tstamp, crdate, cruser_id, deleted, hidden, starttime, endtime, fe_group, sorting, editlock, sys_language_uid, l18n_parent, l10n_source, l10n_state, t3_origuid, l18n_diffsource, t3ver_oid, t3ver_wsid, t3ver_state, t3ver_stage, CType, header, header_position, bodytext, bullets_type, uploads_description, uploads_type, assets, image, imagewidth, imageorient, imagecols, imageborder, media, layout, frame_class, cols, space_before_class, space_after_class, records, pages, colPos, subheader, header_link, image_zoom, header_layout, list_type, sectionIndex, linkToTop, file_collections, filelink_size, filelink_sorting, filelink_sorting_direction, target, date, `recursive`, imageheight, pi_flexform, accessibility_title, accessibility_bypass, accessibility_bypass_text, selected_categories, category_field, table_class, table_caption, table_delimiter, table_enclosure, table_header_position, table_tfoot, categories FROM tt_content; </pre> h2. Upgrading existing docker Manual to upgrade an existing docker container and setting up websocket server. *Caution:* The used websocket port 8090 in this manual is only an example. Please use a port number which is not already used from others on the same server. <pre> 1. At least Ubuntu 22.04 needs to be installed in docker container. (Usually done inside Dockerfile.nginx): FROM ubuntu:22.04 1.1 Add the following to the top of your docker file (after FROM ubuntu:22.04) if it does not already exist. It defines the timezone configurations for the ubuntu 22.04 installation: ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ apt-get install -y tzdata && \ ln -fs /usr/share/zoneinfo/Europe/Zurich /etc/localtime && \ dpkg-reconfigure --frontend noninteractive tzdata 1.2(optional) If you are using wkhtmltopdf 0.12.6-1, you will need to manually install libssl1.1 in the docker file before wkhtmltopdf is installed. Reason: libssl1.1 is no longer included in Ubuntu 22.04: # Manually install libssl1.1 RUN wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb RUN dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb 1.3 Change all path entries which has *7.4* to *8.1* in files Dockerfile.nginx, docker-compose.yml and default.conf (docker/sites-available/) 2. Best practice is to expose the websocket port in the dockerfile (Dockerfile.nginx), it should be added before the services start, example: EXPOSE 8090 CMD service php8.1-fpm start && service ssh start && nginx 3. Add new websocket port (8090) to nginx webserver in Dockerfile, example: nginx: image: webserver build: dockerfile: Dockerfile.nginx ports: - "46301:46301" - "51301:51301" - "44909:22" - "8090:8090" <------ Websocket port 4. nginx config file adjustments, add following proxy: location /ws { proxy_pass http://mydomain:8090; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } 4.1 apache ssl config file: Modules: sudo a2enmod proxy sudo a2enmod proxy_wstunnel # Enable the necessary proxy modules for websocket ProxyRequests Off ProxyPreserveHost On ProxyPass /ws ws://localhost:8090 ProxyPassReverse /ws ws://localhost:8090 5.(optional) If you upgrade your docker from an older version of ubuntu, your xdebug configuration may not work anymore. Adjustments are needed in the .ini file (99-math.ini), replace the existing xdebug configuration with this one: # New xdebug 3 version: xdebug.mode = debug xdebug.start_with_request = yes xdebug.client_port = 51301 <------------- Here should stay your xDebug port! xdebug.discover_client_host = 1 xdebug.max_nesting_level = 400 #xdebug.log=/var/log/apache2/xdebug.log 6. Start/Restart (Build first time) the docker container. 7. Set the configured websocket port and websocket url in QFQ Config, examples: websocketPort: 8090 websocketUrl: ws://mydomain:46301/ws 8. If websocketPort is set in qfq config, the websocket server should start automatically the first time a web page with qfq content is loaded. </pre> 9. If you are upgrading the qfq extension (new with FE Chat) in an already existing project, then you need to add the new enum value *chat* to the column *type* from the *FormElement* table.