Гид по технологиям

Установка ExpressionEngine на CentOS 8 с PHP, MariaDB и Nginx

• 6 min read • DevOps • Обновлено 26 Nov 2025
Установка ExpressionEngine на CentOS 8
Установка ExpressionEngine на CentOS 8

Иллюстрация: логотип ExpressionEngine или общий вид CMS

Введение

ExpressionEngine — зрелая, гибкая и безопасная система управления контентом с открытым исходным кодом, написанная на PHP. С её помощью можно создать полноценный сайт, веб-приложение или API для мобильных приложений без глубоких знаний программирования. Этот пошаговый гид проведёт через установку на CentOS 8 с использованием PHP-FPM, MariaDB и Nginx.

Ключевые понятия:

  • PHP-FPM: FastCGI Process Manager для запуска PHP-приложений.
  • MariaDB: форк MySQL, реляционная СУБД.
  • Nginx: лёгкий и быстрый HTTP-сервер и обратный прокси.

Требования

Необходим минимальный стек:

  • PHP 7.0+ с PHP-FPM и расширениями: gd, fileinfo, intl, mbstring, mysql / pdo_mysql.
  • MariaDB или MySQL 5.6+ (в примерах используется MariaDB).
  • Веб-сервер Nginx или Apache (в этом руководстве — Nginx).

Совет: используйте отдельную тестовую VM или контейнер для первой установки.

Быстрый план действий

  1. Обновить систему и установить утилиты.
  2. Установить PHP и расширения.
  3. Установить MariaDB и выполнить базовую защиту.
  4. Опционально — получить SSL-сертификат с помощью acme.sh.
  5. Установить и настроить Nginx.
  6. Расположить файлы ExpressionEngine и пройти мастер установки.

Начальные действия

Проверка версии CentOS:

cat /etc/centos-release
# Пример вывода: CentOS Linux release 8.0.1905 (Core)

Установите часовой пояс (пример):

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

Обновите систему:

sudo yum update -y

Установите базовые утилиты:

sudo yum install -y curl wget vim git unzip socat bash-completion epel-release

Важно: обновления содержат исправления безопасности. Выполняйте их перед установкой ПО.

Шаг 1 — Установка PHP и расширений

Установка PHP и рекомендуемых расширений:

sudo yum install -y php-cli php-fpm php-common php-mbstring php-gd php-intl php-mysqlnd php-json php-zip

Проверка версии PHP:

php --version
# Пример: PHP 7.2.19 (cli)

Просмотр установленных модулей:

php -m

Запустите и включите сервис PHP-FPM:

sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service

Совет: проверьте, под каким пользователем работает php-fpm (файл /etc/php-fpm.d/www.conf). Мы настроим его на nginx позже.

Шаг 2 — Установка MariaDB

Установка MariaDB:

sudo yum install -y mariadb-server

Проверка версии MariaDB:

mysql --version
# Пример: mysql Ver 15.1 Distrib 10.3.x-MariaDB

Запустите и включите MariaDB:

sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

Запустите скрипт безопасности:

sudo mysql_secure_installation

Войдите как root и создайте базу и пользователя:

sudo mysql -u root -p
# Введите пароль root MariaDB
CREATE DATABASE dbname;
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit

Важно: замените dbname, username и password на реальные значения. Используйте сильный пароль.

Совет по безопасности: ограничьте доступ к аккаунту MariaDB из внешних сетей, если не требуется.

Шаг 3 — Получение SSL с помощью acme.sh (опционально)

HTTPS — рекомендация, но не строго обязательна. Для автоматизации выдачи сертификатов от Let’s Encrypt используем acme.sh — лёгкий шелл-клиент.

Установка acme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail 'you@example.com'
source ~/.bashrc
cd ~

Проверка версии:

acme.sh --version

Получение сертификатов (пример для домена example.com):

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Для тестирования добавьте флаг –staging.

Установка сертификатов в каталог /etc/letsencrypt:

mkdir -p /etc/letsencrypt/example.com
mkdir -p /etc/letsencrypt/example.com_ecc

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd 'sudo systemctl reload nginx.service'

# ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd 'sudo systemctl reload nginx.service'

Выданные сертификаты по умолчанию автоматом продлеваются клиентом acme.sh.

Выход из root:

exit

Примечание: в некоторых окружениях порт 80/443 может быть занят. На время получения сертификата standalone режим поднимает временный веб-сервер.

Шаг 4 — Установка и настройка Nginx

Установите Nginx:

sudo yum install -y nginx

Проверьте версию:

nginx -v

Запустите и включите сервис:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Создайте конфигурацию для ExpressionEngine:

Откройте файл /etc/nginx/conf.d/expressionengine.conf и вставьте (пример):

server {

  listen 443 ssl;
  listen 80;
  
  server_name example.com;
  root /var/www/expressionengine;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com/private.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;

  index index.php;
  
  location / {
    index index.php;
    try_files $uri $uri/ @ee;
  }
  
  location @ee {
    rewrite ^(.*) /index.php?$1 last;
  }
  
  location ~* \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

}

Проверьте синтаксис:

sudo nginx -t

Перезагрузите Nginx:

sudo systemctl reload nginx.service

Важно: в конфигурации пути к сертификатам и ключам должны быть корректны. Если вы используете только RSA или только ECDSA, удалите или закомментируйте лишние директивы.

Шаг 5 — Установка ExpressionEngine

Создайте корневую папку сайта и загрузите релиз:

sudo mkdir -p /var/www/expressionengine
cd /var/www/expressionengine
sudo wget -O ee.zip --referer https://expressionengine.com/ 'https://expressionengine.com/?ACT=243'
sudo unzip ee.zip
sudo rm ee.zip

Поменяйте владельца на nginx:

sudo chown -R nginx:nginx /var/www/expressionengine

Отредактируйте /etc/php-fpm.d/www.conf и установите user и group в nginx:

# user = nginx
# group = nginx

Перезапустите PHP-FPM:

sudo systemctl restart php-fpm.service

Откройте в браузере адрес установки, например:

http://example.com/admin.php

Следуйте мастеру установки. После успешной установки удалите или переименуйте каталог установщика system/ee/installer/.

Шаг 6 — Завершение настройки ExpressionEngine

При установке введите реквизиты базы и учётную запись администратора.

Форма: настройки подключения к базе данных

После установки вы увидите страницу входа в админку:

Страница входа в систему ExpressionEngine

Панель администратора выглядит так:

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

Фронтенд по умолчанию после установки:

Внешний вид сайта по умолчанию

Поздравляем — базовая установка завершена.

Безопасность и рекомендации по жёсткому укреплению

  • Настройте firewall (firewalld или iptables) и разрешите только нужные порты (80, 443, SSH по необходимости).
  • Запретите вход в MariaDB с удалённых адресов, если не требуется.
  • Регулярно обновляйте пакеты и применяйте патчи.
  • Перенесите конфигурационные файлы и ключи в защищённые каталоги с правами 640/600.
  • Ограничьте права файлов приложения, избегайте chmod 777.

Тонкие настройки и отладка

  • Проверьте логи: /var/log/nginx/error.log и /var/log/php-fpm/www-error.log (пути могут отличаться).
  • Ошибка 502 Bad Gateway чаще всего указывает на то, что PHP-FPM не запущен или слушает другой сокет/порт.
  • Убедитесь, что fastcgi_pass в конфигурации Nginx совпадает с настройкой PHP-FPM.

Альтернативные подходы

  • Вместо Nginx можно использовать Apache с модулем mod_php или php-fpm. Apache проще в конфигурации для .htaccess, но Nginx даёт лучшую производительность под высокой нагрузкой.
  • Для развёртывания в контейнерах используйте Docker-контейнеры: php-fpm, nginx, mariadb. Это упрощает переносимость и изоляцию окружений.

Сравнение: Nginx vs Apache (кратко)

  • Производительность: Nginx быстрее при статике и большом числе соединений.
  • Гибкость: Apache проще для legacy-приложений с .htaccess.
  • Ресурсоёмкость: Nginx экономичнее по памяти.

Частые ошибки и способы исправления

  1. 502 Bad Gateway
    • Решение: проверьте, запущен ли php-fpm, совпадает ли порт/сокет в fastcgi_pass.
  2. 403 Forbidden
    • Решение: проверьте права файлов и владельца директорий; убедитесь, что index.php доступен.
  3. Ошибки подключения к БД
    • Решение: проверьте конфигурацию базы, правильность учётных данных и доступ хоста.

Роль — чек-листы

Системный администратор:

  • Установил и настроил PHP-FPM.
  • Настроил и защитил MariaDB.
  • Настроил Nginx и SSL.
  • Настроил бэкапы.

Разработчик:

  • Проверил рабочий индекс и маршрутизацию.
  • Проверил права на запись для необходимых каталогов (cache, uploads).
  • Протестировал базовые шаблоны.

Специалист по безопасности:

  • Проверил обновления и CVE.
  • Настроил firewall и fail2ban.
  • Проверил права доступа к ключам и конфигам.

Критерии приёмки

  • Страница установки admin.php доступна и проходит все шаги мастера.
  • Вход в панель администратора возможен под созданной учётной записью.
  • Главная страница сайта отображается без ошибок PHP/Nginx.
  • HTTPS корректно настроен (если применимо) и сертификат валиден.

Мини-методология быстрой установки (cheat sheet)

  1. Обновить систему: sudo yum update -y
  2. Установить PHP и php-fpm
  3. Установить MariaDB, выполнить mysql_secure_installation
  4. Установить Nginx
  5. Настроить виртуальный хост, распаковать ExpressionEngine
  6. Настроить права, перезапустить сервисы

Пример дерева принятия решения (Mermaid)

flowchart TD
  A[Нужен HTTPS?] -->|Да| B[Использовать acme.sh]
  A -->|Нет| C[Оставить HTTP]
  B --> D[Получить сертификат]
  D --> E[Установить в /etc/letsencrypt]
  C --> F[Пропустить шаг с certs]

Проверочные тесты и приёмка

  • Откройте http://example.com/admin.php и пройдите установщик.
  • Войдите в админку и создайте запись в канал; убедитесь, что запись отображается на фронтенде.
  • Проверьте логи на предмет ошибок в течение 24 часов после запуска.

Полезные ссылки

Итог

Установка ExpressionEngine на CentOS 8 несложна при соблюдении базовых шагов: подготовка окружения, установка PHP-FPM и MariaDB, настройка Nginx и (при желании) получение SSL. Держите систему обновлённой, ограничьте права доступа и тестируйте установку на тестовом окружении перед продакшеном.

Важно: регулярно делайте резервные копии базы и файлов сайта.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро