Установка Fuel CMS на сервере Fedora 31
Кратко: пошаговая инструкция по установке Fuel CMS на сервер с Fedora 31 и стеком LEMP — настройка MariaDB, параллельная установка PHP 7.3 рядом с PHP 7.4, конфигурация php-fpm и Nginx, загрузка и первоначальная настройка Fuel CMS, подключение HTTPS через Let’s Encrypt. Включены проверочные тесты, чеклисты ролей, распространённые ошибки и план отката.

О чём эта инструкция
Эта статья объясняет, как установить Fuel CMS на сервер с Fedora 31 и LEMP (Linux, Nginx, MariaDB, PHP). Подойдёт для системных администраторов и DevOps-инженеров, которым нужно развернуть CMS для сайта или блога.
Краткие определения:
- Fuel CMS — open-source CMS, построенная на CodeIgniter (PHP-фреймворк).
- LEMP — набор: Linux + Nginx + MariaDB/MySQL + PHP-FPM.
Требования
- Сервер под управлением Fedora 31 с LEMP-стеком (Nginx, MariaDB, PHP). Следуйте вашей существующей инструкции для настройки LEMP, если нужно.
- Пользователь с правами sudo (не root).
- Подключение к интернету для скачивания репозитория и сертификатов.
- Резервная копия текущих данных, если вы разворачиваете на рабочем сервере.
Важное примечание: в исходной инструкции PHP 7.4 уже был установлен, а Fuel CMS был совместим с PHP 7.3. Здесь описан способ параллельной установки PHP 7.3 как коллекции, чтобы не удалять PHP 7.4.
Подготовка системы
Обновите систему перед началом:
$ sudo dnf upgrade
Важно: убедитесь, что у вас достаточно свободного места и настроен брандмауэр/SELinux в соответствии с политиками вашей среды.
Настройка MariaDB для Fuel CMS
- Зайдите в консоль MariaDB/MySQL:
$ sudo mysql
- Создайте базу данных и пользователя (в примере — fuelcms / fueluser):
mysql> CREATE DATABASE fuelcms;
mysql> CREATE USER 'fueluser'@'localhost' IDENTIFIED BY 'yourpassword';
mysql> GRANT ALL PRIVILEGES ON fuelcms.* TO 'fueluser'@'localhost';
mysql> exitСовет: используйте надёжный пароль и, при необходимости, ограничьте доступ по IP/хосту.
Установка PHP 7.3 параллельно с PHP 7.4
Если у вас уже стоит PHP 7.4 и Fuel CMS пока несовместим с ней, выполните установку PHP 7.3 как коллекции:
$ sudo dnf install php73-php-fpm php73-php-mysqlnd php73-php-cli -y
Это установит PHP 7.3 в виде сборки, позволяющей работать рядом с системной версией PHP 7.4.
Запустите и включите сервис PHP-FPM для 7.3:
$ sudo systemctl start php73-php-fpm
$ sudo systemctl enable php73-php-fpm
Проверьте версию:
$ php73 --version
PHP 7.3.16 (cli) (built: Mar 17 2020 10:18:38) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.16, Copyright (c) 1998-2018 Zend Technologies
Откройте конфигурационный файл пула PHP-FPM для редактирования:
$ sudo nano /etc/opt/remi/php73/php-fpm.d/www.conf
Измените Unix-пользователя и группу процессов на nginx (по умолчанию в RPM указано apache):
...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...
Установите список пользователей для ACL сокета:
listen.acl_users = nginx
Запомните значение параметра listen — это путь Unix-сокета, где будет слушать PHP-FPM. В примере оно выглядит так:
listen = /var/opt/remi/php73/run/php-fpm/www.sock
Сохраните файл (Ctrl+X, затем Y) и перезапустите сервис:
$ sudo systemctl restart php73-php-fpmВажно: если вы используете SELinux в режиме Enforcing, проверьте контексты сокета и разрешения на доступ Nginx к сокету. В некоторых случаях потребуется задать правильные контексты или переключиться на TCP-соединение между Nginx и php-fpm.
Конфигурация Nginx для Fuel CMS
Создайте файл конфигурации сайта:
$ sudo nano /etc/nginx/sites-available/fuel.conf
Вставьте следующую конфигурацию (сохраните как есть). Обратите внимание на root, server_name и fastcgi_pass — fastcgi_pass следует настроить на путь сокета, который вы скопировали ранее.
server {
listen 80;
listen [::]:80;
root /var/www/fuel;
index index.php index.html index.htm;
server_name fuel.example.com;
client_max_body_size 100M;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
access_log /var/log/nginx/fuel.example.com.access.log;
error_log /var/log/nginx/fuel.example.com.error.log;
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Примечание: замените fastcgi_pass на путь сокета PHP 7.3, если он отличается, например /var/opt/remi/php73/run/php-fpm/www.sock.
Активируйте конфигурацию:
$ sudo ln -s /etc/nginx/sites-available/fuel.conf /etc/nginx/sites-enabled/
Проверьте конфигурацию Nginx и перезагрузите сервис:
$ sudo nginx -t
Ожидаемый вывод:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl reload nginxУстановка Fuel CMS
Создайте корневую веб-папку и перейдите в неё:
$ sudo mkdir -p /var/www/fuel
$ cd /var/www/fuel
Скачайте последнюю версию из репозитория GitHub:
$ sudo wget https://github.com/daylightstudio/FUEL-CMS/archive/master.zip
Распакуйте и переместите файлы в корень сайта:
$ sudo unzip master.zip
$ sudo rm master.zip
$ sudo mv FUEL-CMS-master/* .
$ sudo rm -r FUEL-CMS-master
Создайте папку для сессий:
$ sudo mkdir /var/www/fuel/fuel/application/sessions
Откройте конфигурацию подключения к базе данных:
$ sudo nano /var/www/fuel/fuel/application/config/database.php
Отредактируйте параметры подключения на ваши значения:
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'fueluser',
'password' => 'yourpassword',
'database' => 'fuelcms',
'dbdriver' => 'mysqli',
Сохраните файл (Ctrl+X, Y).
Импортируйте структуру базы данных:
$ mysql -u fueluser -p fuelcms < /var/www/fuel/fuel/install/fuel_schema.sql
Сгенерируйте случайный ключ шифрования (пример с OpenSSL):
$ openssl rand -base64 20
Скопируйте сгенерированную строку и вставьте её в файл конфигурации:
$ sudo nano /var/www/fuel/fuel/application/config/config.php
Измените значение параметра encryption_key:
$config['encryption_key'] = 'nisT56baLm+U24ZYFRvVbVKIdOE=';
Также укажите путь хранения сессий:
$config['sess_save_path'] = APPPATH.'sessions/';
APPPATH здесь указывает на /var/www/fuel/fuel/application/.
Включите административную панель: откройте файл MY_fuel.php:
$ sudo nano /var/www/fuel/fuel/application/config/MY_fuel.php
Измените значения:
// whether the admin backend is enabled or not
$config['admin_enabled'] = TRUE;
....
$config['fuel_mode'] = 'auto';
Сохраните файл. Параметр fuel_mode = ‘auto’ заставляет Fuel CMS сначала искать страницу в базе, а затем — в представлениях.
Наконец, назначьте владельца файлового дерева nginx и установите права:
sudo chown -R nginx:nginx /var/www/fuel
Совет: при необходимости задайте более строгие права на директории (например 755 для директорий и 644 для файлов), а для папок загрузки — разрешения, необходимые для записи.
Откройте в браузере: http://fuel.example.com/fuel и войдите в админку.
Начальная конфигурация Fuel CMS
После первого входа вас попросят сменить пароль. Зайдите в Раздел «Изменить пароль», укажите новое имя пользователя и email, заполните имя пользователя и сохраните.

Для дальнейших настроек в админке можно задать название сайта, лимиты загрузки, редактор текста, парсер, список модулей и т. п.
Для подробностей обратитесь к официальной документации Fuel CMS.
Настройка HTTPS (Let’s Encrypt)
Установите Certbot и плагин для Nginx:
$ sudo dnf install certbot certbot-nginx -y
Запустите выдачу сертификата для вашего домена:
$ sudo certbot --nginx -d fuel.example.com
Если вы впервые используете certbot, согласитесь с условиями и укажите email (не передаёте его в EFF, если не хотите делиться). При предложении выбора редиректа выберите 2 (Redirect), чтобы все HTTP-запросы перенаправлялись на HTTPS.
Добавьте автоматическое обновление сертификатов в crontab:
$ echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null
Проверьте сайт по адресу: https://fuel.example.com

Проверки после установки — Критерии приёмки
- Сайт открывается по HTTP и/или HTTPS (в зависимости от настройки).
- Админ-панель доступна по /fuel и позволяет войти под заданной учётной записью.
- Соединение с базой данных успешно (в админке и при выполнении тестовых действий).
- Nginx и PHP-FPM работают без ошибок (systemctl status + nginx -t).
- SSL-сертификат корректно установлен и валиден в браузере.
Тестовые команды:
$ sudo systemctl status nginx php73-php-fpm mariadb
$ sudo nginx -t
$ curl -I https://fuel.example.com
$ mysql -u fueluser -p -e "USE fuelcms; SHOW TABLES;"Чеклист ролей (кто за что отвечает)
- Системный администратор:
- Настройка сервера, установка LEMP, управление пользователями, резервное копирование и права доступа.
- DevOps / Инженер по развёртыванию:
- Настройка php-fpm, Nginx-конфигурация, автоматизация деплоя, настройка мониторинга и обновлений сертификатов.
- Разработчик:
- Адаптация темы и модулей Fuel CMS, проверка совместимости с PHP, работа с базой данных и миграциями.
- Контент-менеджер:
- Настройка страниц в админ-панели, загрузка медиа, проверка корректности отображения контента.
Распространённые ошибки и способы их устранения
502 Bad Gateway или 504 Gateway Timeout
- Причина: Nginx не может связаться с PHP-FPM (неверный fastcgi_pass или сервис упал).
- Устранение: проверьте путь сокета, status php-fpm, логи /var/log/nginx/ и /var/log/php-fpm/.
500 Internal Server Error после входа в админку
- Причина: проблема с правами на папки (например sessions или upload) или неверный encryption_key.
- Устранение: проверьте права, владельца (nginx:nginx), и корректность $config[‘encryption_key’].
Ошибки подключения к базе данных
- Причина: неверные параметры в fuel/application/config/database.php.
- Устранение: проверьте hostname, username, password, database и привилегии пользователя.
SELinux блокирует доступ к сокету
- Причина: SELinux в Enforcing. Nginx не имеет прав на доступ к Unix-сокету php-fpm.
- Устранение: либо переведите SELinux в permissive на время отладки, либо настройте соответствующие контексты и boolean-параметры (рекомендуется координироваться с политикой безопасности). Проверяйте audit.log.
Порядок отката (Runbook — быстрый откат при проблемах)
Если после развертывания сайт перестал работать:
- Откатить изменения Nginx: восстановите резервную копию /etc/nginx/sites-available/fuel.conf или удалите симлинк из sites-enabled и перезагрузите nginx.
- Остановить php73-php-fpm, если он вызывает ошибки: sudo systemctl stop php73-php-fpm.
- Восстановить файлы приложения из резервной копии (если вы предварительно делали бэкап).
- Восстановить базу данных из дампа (mysqldump) при необходимости.
- Сообщить заинтересованным сторонам и зафиксировать время/действия.
Безопасность и эксплуатация
- Права: держите права на файлы минимальными (директории 755, файлы 644), владелец nginx:nginx.
- Резервные копии: регулярно создавайте бэкапы базы данных и файлов сайта.
- Обновления: следите за обновлениями PHP, Nginx и CMS; тестируйте обновления в staging-среде.
- SELinux: предпочтительнее настроить корректные контексты, а не отключать SELinux.
- HTTPS: настраивайте автоматическое обновление сертификатов и мониторинг срока действия.
Альтернативные подходы
- Использовать Docker-контейнеры (php-fpm, nginx, mariadb) для изоляции окружения и воспроизводимости.
- Применить TCP-соединение между Nginx и PHP-FPM (fastcgi_pass 127.0.0.1:9000), чтобы избежать проблем с сокетами и SELinux.
- Развернуть Fuel CMS на платформе PaaS или в управляемом хостинге, если вы хотите сократить операционную нагрузку.
Мини-методология развертывания (быстрый план)
- Подготовить сервер (обновления, firewall, SELinux policy).
- Установить и настроить MariaDB.
- Установить необходимую версию PHP (или контейнеры).
- Настроить Nginx и тестировать конфигурацию.
- Загрузить и настроить Fuel CMS, импортировать схему БД.
- Настроить HTTPS и автоматическое обновление сертификатов.
- Выполнить тесты, настроить мониторинг и бэкапы.
Критерии приёмки (Короткое резюме)
- Сайт и админка доступны по HTTPS.
- Пользователь может войти и изменить настройки.
- Логи не содержат критических ошибок при базовом использовании.
- Процесс обновления сертификатов автоматизирован.
Ресурсы и ссылки
- Официальный репозиторий Fuel CMS: https://github.com/daylightstudio/FUEL-CMS
- Документация Certbot: https://certbot.eff.org/
Вывод
Эта инструкция покрывает полный цикл развёртывания Fuel CMS на Fedora 31: от подготовки сервера и создания базы данных до настройки PHP-FPM, Nginx, установки CMS и подключения HTTPS. Следуйте чеклистам, выполняйте тесты и сохраняйте резервные копии перед любыми изменениями.
Важно: если вы столкнётесь с ошибками, сначала проверьте логи Nginx, php-fpm и MariaDB — они дают ключ к быстрому решению большинства проблем.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента