Установка TYPO3 CMS с помощью Nginx на AlmaLinux 9

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.

добавить репозиторий EPEL

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

добавить репозиторий remi

Теперь выполните следующую команду, чтобы сбросить модуль репозитория PHP по умолчанию и включить модуль PHP 8.1 из репозитория Remi.

sudo dnf module reset php -y
sudo dnf module enable php:remi-8.1 -y

включить модуль php8.1 из репозитория Remi

Далее выполните приведенную ниже команду 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 включены.

настройка firewalld

Настройка сервера 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, проверив файл сокетов по умолчанию для PHP-FPM, а именно /run/php-fpm/www.sock. Выполните приведенную ниже команду ss, чтобы получить список доступных сокетов в вашей системе и отфильтровать вывод, чтобы показать только www.sock.

ss -pl | grep www.sock

Если PHP-FPM запущен, вы должны увидеть стандартный файл сокетов PHP-FPM /run/php-fpm/www.sock можно получить следующим образом:

проверить носок php-fpm

Загрузка 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 CMS

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

ls -lah /var/www/typo3

Вы должны увидеть похожие файлы и каталоги:

список файлов исходный код TYPO3 CMS

Наконец, запустите бинарный файл TYPO3 CMS, чтобы начать конфигурацию, и вам будет предложено выполнить некоторые настройки.

sudo -u nginx ./vendor/bin/typo3 setup

Вам будет предложено ввести некоторые настройки TYPO3 CMS.

  • Введите драйвер базы данных для mysqli.
  • Введите пользователя базы данных, пароль, порт и хост.
  • Теперь введите имя базы данных, которая будет использоваться для TYPO3 CMS. В данном примере имя базы данных — typo3db.
  • Введите нового пользователя-администратора, электронную почту и пароль для TYPO3 CMS.
  • Для имени проекта и URL-адреса основного сайта нажмите ENTER, чтобы оставить их по умолчанию.

После завершения настройки TYPO3 CMS вы должны увидеть сообщение «Поздравляем — настройка TYPO3 завершена«.

установка TYPO3 CMS через командную строку

Настройка серверного блока 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

установить certbot

Теперь выполните следующую команду, чтобы сгенерировать новые 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.

Введите созданные вами пользователя и пароль администратора, затем нажмите кнопку Вход.

вход в CMS TYPO3

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

Панель администратора TYPO3 CMS

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

информация об установке typo3 cms

Заключение

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *