TYPO3 — это бесплатная система управления контентом корпоративного уровня с открытым исходным кодом. Она предоставляет множество функций корпоративного уровня, таких как масштабируемая CMS с поддержкой нескольких сайтов, многоязычная установка, надежная защита, молниеносная скорость и возможность запуска в любом месте.
Использование TYPO3 CMS позволяет создавать гибкие и надежные веб-сайты. TYPO3 CMS поддерживается активным профессиональным сообществом. По своей сути TYPO3 CMS — это подключаемая система управления контентом с адаптируемой и раздельной архитектурой.
В этом руководстве я покажу вам, как установить TYPO3 CMS на AlmaLinux 9 шаг за шагом. Мы установим TYPO3 CMS с веб-сервером Nginx, сервером баз данных MariaDB и PHP-FPM.
Предварительные условия
Прежде чем приступить к работе, убедитесь, что у вас есть следующее:
- Сервер AlmaLinux 9 — в этом примере используется сервер с именем хоста almalinux9.
- Некорневой пользователь с привилегиями sudo root.
- Доменное имя, указывающее на IP-адрес сервера.
Установка зависимостей
В следующих шагах вы установите зависимости пакетов для TYPO3 CMS, включая:
- Nginx: В качестве веб-сервера.
- MariaDB: в качестве сервера баз данных.
- PHP-FPM: В данном примере будет использоваться PHP 8.1 для TYPO3 CMS.
- Composer: Управление зависимостями для PHP-приложения.
Теперь давайте приступим.
Сначала выполните следующую команду, чтобы добавить репозитории EPEL и Remi в вашу систему. Репозиторий Remi предоставляет несколько версий пакетов PHP и некоторые дополнительные расширения PHP, которые недоступны в стандартном репозитории appstream.
sudo dnf epel-release sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Введите y для подтверждения установки и нажмите ENTER.
Добавление репозитория EPEL.

Добавление репозитория PHP Remi для RHEL 9.

Теперь выполните следующую команду, чтобы сбросить модуль репозитория PHP по умолчанию и включить модуль PHP 8.1 из репозитория Remi.
sudo dnf module reset php -y sudo dnf module enable php:remi-8.1 -y

Далее выполните приведенную ниже команду dnf для установки зависимостей пакетов для TYPO3 CMS. Когда появится запрос, введите y для подтверждения, затем нажмите ENTER.
sudo dnf install nginx mariadb-server composer ImageMagick php-fpm php-mysqlnd php-gd php-curl php-json php-intl php-bcmath php-zip php-apcu php-mbstring php-fileinfo php-xml php-soap

После установки зависимостей выполните приведенную ниже команду systemctl, чтобы запустить и включить основные службы, такие как Nginx, MariaDB и PHP-FPM.
sudo systemctl enable --now nginx mariadb php-fpm

Затем проверьте службы с помощью следующей команды, чтобы убедиться, что все эти службы запущены.
sudo systemctl status nginx mariadb php-fpm
Если служба запущена, вы должны увидеть вывод активен (работает). Пример ниже показывает, что служба Nginx запущена.

Наконец, выполните следующую команду, чтобы убедиться, что Composer установлен, и проверьте его версию.
sudo -u nginx composer -V
На момент написания этой статьи Composer v2.5.5 устанавливается через репозиторий EPEL.

Настройка Firewalld
После установки зависимостей пакета следующим шагом будет настройка firewalld и открытие поверх него протоколов HTTP и HTTPS.
Выполните приведенную ниже команду firewall-cmd, чтобы открыть службы HTTP и HTTPS. Затем перезагрузите firewalld, чтобы применить изменения.
sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload
Теперь проверьте список открытых портов и служб в firewalld с помощью следующей команды.
sudo firewall-cmd --list-all
В разделе служб вы должны увидеть, что HTTP и HTTPS включены.

Настройка сервера MariaDB
В следующем разделе вы обеспечите безопасность сервера MariaDB и создадите новую базу данных и пользователя, которые будут использоваться при установке TYPO3 CMS.
Сначала выполните команду mariadb-secure-installation команда для защиты установки MariaDB.
sudo mariadb-secure-installation
На протяжении всего процесса вам будут предложены конфигурации сервера MariaDB. Введите Y, чтобы подтвердить шаг.
- Переключить аутентификацию корня MariaDB на unix_socket? Введите n.
- Установить пароль корня MariaDB? Введите y, затем введите новый пароль и повторите.
- Отключить удаленный вход для пользователя root? Введите y.
- Удалить проверку базы данных по умолчанию? Снова введите y.
- Удалить анонимного пользователя по умолчанию? Введите y для подтверждения.
- Перезагрузить привилегии таблицы, чтобы применить изменения? Введите y.
После того как MariaDB будет защищена, войдите в MariaDB с помощью команды mariadb, приведенной ниже. Когда появится запрос на ввод пароля, введите пароль корня MariaDB.
sudo mariadb -u root -p
После входа в MariaDB выполните следующие запросы для создания новой базы данных typo3db, пользователь опечатка3, и пароль typo3password.
CREATE DATABASE typo3db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON typo3db.* to typo3@localhost IDENTIFIED BY 'typo3password'; FLUSH PRIVILEGES;

Далее выполните следующий запрос, чтобы проверить привилегии пользователя MariaDB typo3 и убедитесь, что пользователь может получить доступ к базе данных typo3db.
SHOW GRANTS FOR typo3@localhost;
В выводе вы должны увидеть, что пользователь MariaDB опечатка3 может получить доступ к базе данных typo3db.

Введите quit, чтобы выйти из сервера MariaDB и завершить этот шаг.
Настройка PHP-FPM
После того как сервер MariaDB настроен, следующим шагом будет установка PHP-FPM. Вы будете интегрировать установку PHP-FPM с веб-сервером Nginx.
Сначала выполните следующую команду, чтобы установить часовой пояс по умолчанию для вашей системы.
sudo timedatectl set-timezone Europe/Stockholm
Теперь откройте конфигурацию PHP /etc/php.ini с помощью команды редактора vim.
sudo vim /etc/php.ini
Откомментируйте параметр date.timezone и измените его значение на нужное.
date.timezone = Europe/Stockholm
Увеличьте и включите некоторые параметры PHP следующим образом. Для memory_limit параметр, настройте его в соответствии с текущим объемом памяти.
memory_limit = 512M max_execution_time = 300 max_input_vars = 2000
Теперь увеличьте post_max_size и upload_максимальный размер_файла параметры 30 МБ.
post_max_size = 30M upload_max_filesize = 30M
Сохраните файл и выйдите из редактора после завершения работы.
Далее откройте конфигурацию пула PHP-FPM /etc/php-fpm.d/www.conf с помощью редактора vim.
sudo vim /etc/php-fpm.d/www.conf
Измените значение по умолчанию параметра user и group на nginx следующим образом:
user = nginx group = nginx
Сохраните файл и выйдите из редактора.
Теперь выполните следующую команду, чтобы перезапустить службу PHP-FPM и применить изменения. Затем проверьте PHP-FPM, чтобы убедиться, что он работает.
sudo systemctl restart php-fpm sudo systemctl status php-fpm
Если он работает, вы должны получить следующее сообщение:

Кроме того, вы можете проверить PHP-FPM, проверив файл сокетов по умолчанию для PHP-FPM, а именно /run/php-fpm/www.sock. Выполните приведенную ниже команду ss, чтобы получить список доступных сокетов в вашей системе и отфильтровать вывод, чтобы показать только www.sock.
ss -pl | grep www.sock
Если PHP-FPM запущен, вы должны увидеть стандартный файл сокетов PHP-FPM /run/php-fpm/www.sock можно получить следующим образом:

Загрузка CMS TYPO3
TYPO3 CMS можно установить разными способами, и в данном демо-ролике вы установите TYPO3 CMS через менеджер пакетов Composer.
Выполните следующую команду, чтобы создать новую директорию /var/www/typo3. Этот каталог будет использоваться в качестве целевого каталога для установки TYPO3 CMS
mkdir -p /var/www/typo3
Далее выполните приведенную ниже команду, чтобы изменить право собственности на каталог /var/www/typo3 пользователю nginx и обеспечьте доступ на чтение и запись для владельца этого каталога.
sudo chown -R nginx:nginx /var/www/typo3 sudo chmod u+rw /var/www/typo3
Теперь перейдите в каталог /var/www/typo3 и выполните приведенную ниже команду Composer, чтобы загрузить исходный код TYPO3 CMS.
cd /var/www/typo3 sudo -u nginx composer create-project typo3/cms-base-distribution:^12 .
Когда установка будет запущена, вы должны увидеть процесс следующим образом:

После загрузки TYPO3 выполните следующую команду, чтобы проверить список файлов и каталогов на диске /var/www/typo3.
ls -lah /var/www/typo3
Вы должны увидеть похожие файлы и каталоги:

Наконец, запустите бинарный файл TYPO3 CMS, чтобы начать конфигурацию, и вам будет предложено выполнить некоторые настройки.
sudo -u nginx ./vendor/bin/typo3 setup
Вам будет предложено ввести некоторые настройки TYPO3 CMS.
- Введите драйвер базы данных для mysqli.
- Введите пользователя базы данных, пароль, порт и хост.
- Теперь введите имя базы данных, которая будет использоваться для TYPO3 CMS. В данном примере имя базы данных — typo3db.
- Введите нового пользователя-администратора, электронную почту и пароль для TYPO3 CMS.
- Для имени проекта и URL-адреса основного сайта нажмите ENTER, чтобы оставить их по умолчанию.
После завершения настройки TYPO3 CMS вы должны увидеть сообщение «Поздравляем — настройка TYPO3 завершена«.

Настройка серверного блока Nginx для TYPO3 CMS
После установки и настройки TYPO3 CMS вы настроите серверный блок Nginx для TYPO3 CMS. Прежде чем начать, убедитесь, что доменное имя указывает на IP-адрес вашего сервера.
Создание новой конфигурации серверного блока Nginx/etc/nginx/conf.d/typo3.conf с помощью vim.
sudo vim /etc/nginx/conf.d/typo3.conf
Вставьте следующую конфигурацию и не забудьте изменить имя целевого домена на имя_сервера параметр.
server {
listen 80;
server_name typo3.local;
root /var/www/typo3/public;
index index.php;
# Load configuration typo3.conf.
include /etc/nginx/default.d/typo3-nginx.conf;
}
После завершения работы сохраните и выйдите из файла.
Далее создайте еще одну конфигурацию /etc/nginx/default.d/typo3-nginx.conf с помощью команды vim, приведенной ниже.
sudo vim /etc/nginx/default.d/typo3-nginx.conf
Вставьте в файл следующую конфигурацию. Это основная конфигурация Nginx для TYPO3 CMS.
# Compressing resource files will save bandwidth and so improve loading speed, especially for users
# with slower internet connections. TYPO3 can compress the .js and .css files for you.
# *) Set $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = 9 for the Backend
# *) Set $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] = 9 together with the TypoScript properties
# config.compressJs and config.compressCss for GZIP compression of Frontend JS and CSS files.
location ~ \.js\.gzip$ {
add_header Content-Encoding gzip;
gzip off;
types { text/javascript gzip; }
}
location ~ \.css\.gzip$ {
add_header Content-Encoding gzip;
gzip off;
types { text/css gzip; }
}
# TYPO3 — Rule for versioned static files, configured through:
# — $GLOBALS[‘TYPO3_CONF_VARS’][‘BE’][‘versionNumberInFilename’]
# — $GLOBALS[‘TYPO3_CONF_VARS’][‘FE’][‘versionNumberInFilename’]
if (!-e $request_filename) {
rewrite ^/(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ /$1.$3 last;
}
# TYPO3 — Block access to composer files
location ~* composer\.(?:json|lock) {
deny all;
}
# TYPO3 — Block access to flexform files
location ~* flexform[^.]*\.xml {
deny all;
}
# TYPO3 — Block access to language files
location ~* locallang[^.]*\.(?:xml|xlf)$ {
deny all;
}
# TYPO3 — Block access to static typoscript files
location ~* ext_conf_template\.txt|ext_typoscript_constants\.txt|ext_typoscript_setup\.txt {
deny all;
}
# TYPO3 — Block access to miscellaneous protected files
location ~* /.*\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql|sqlite)$ {
deny all;
}
# TYPO3 — Block access to recycler and temporary directories
location ~ _(?:recycler|temp)_/ {
deny all;
}
# TYPO3 — Block access to configuration files stored in fileadmin
location ~ fileadmin/(?:templates)/.*\.(?:txt|ts|typoscript)$ {
deny all;
}
# TYPO3 — Block access to libraries, source and temporary compiled data
location ~ ^(?:vendor|typo3_src|typo3temp/var) {
deny all;
}
# TYPO3 — Block access to protected extension directories
location ~ (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ {
deny all;
}
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location = /typo3 {
rewrite ^ /typo3/;
}
location /typo3/ {
absolute_redirect off;
try_files $uri /typo3/index.php$is_args$args;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_buffer_size 32k;
fastcgi_buffers 8 16k;
fastcgi_connect_timeout 240s;
fastcgi_read_timeout 240s;
fastcgi_send_timeout 240s;
# this is the PHP-FPM upstream — see also: https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/#connecting-nginx-to-php-fpm
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
Сохраните и закройте файл, когда закончите.
Теперь выполните следующую команду, чтобы убедиться, что у вас правильная конфигурация Nginx. Затем перезапустите службу Nginx, чтобы применить изменения.
sudo nginx -t sudo systemctl restart nginx
После выполнения команды вы должны получить сообщение «синтаксис в порядке — тест пройден успешно» и ваша установка TYPOC3 CMS должна быть доступна.
Защита TYPO3 CMS с помощью SSL/TLS
В следующем разделе вы защитите свою установку TYPO3 CMS с помощью сертификатов SSL/TLS, которые будут сгенерированы в Letsencrypt. Для этого вам необходимо установить Certbot на вашу систему.
Выполните приведенную ниже команду dnf, чтобы установить Certbot и плагин Certbot для Nginx. Введите y для подтверждения установки, затем нажмите ENTER.
sudo dnf install certbot python3-certbot-nginx

Теперь выполните следующую команду, чтобы сгенерировать новые SSL-сертификаты от Letsencrypt для TYPO3 CMS. Не забудьте изменить доменное имя и адрес электронной почты.
sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [email protected] -d typo3.local
Если процесс идет гладко, новые SSL-сертификаты будут сгенерированы по адресу /etc/letsencrypt/live/typo3.local каталог. Кроме того, в конфигурации серверного блока для TYPO3 CMS будет автоматически настроен SSL с помощью certbot.
Запустите веб-браузер и перейдите по адресу установки TYPO3 CMS (т.е: https://typo3.local/). У вас должен появиться экран входа в систему TYPO3 CMS.
Введите созданные вами пользователя и пароль администратора, затем нажмите кнопку Вход.

Если вы ввели правильного пользователя и пароль администратора, у вас должна появиться панель администратора TYPO3 CMS, как показано ниже:

В правом верхнем меню нажмите кнопку значок информации и вы получите подробную информацию о программных стеках, которые вы сейчас используете для установки TYPO3 CMS. В данной демонстрации установлена версия TYPO3 CMS v12 с веб-сервером Nginx, сервером баз данных MariaDB и PHP-FPM 8.1.

Заключение
Все готово! Вы завершили установку TYPO3 CMS на ваш сервер AlmaLinux 9 с сервером баз данных MariaDB, PHP-FPM и веб-сервером Nginx. Вы также обеспечили безопасность развертывания с помощью сертификатов SSL/TLS от Letsencrypt. Теперь вы можете создать новый сайт с помощью TYPO3 CMS.