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

Установка Fuel CMS на сервере Fedora 31

• 7 min read • Инструкции • Обновлено 18 Nov 2025
Установка Fuel CMS на Fedora 31
Установка 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 — логотип и пример сайта

О чём эта инструкция

Эта статья объясняет, как установить 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

  1. Зайдите в консоль MariaDB/MySQL:
$ sudo mysql
  1. Создайте базу данных и пользователя (в примере — 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

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

Для подробностей обратитесь к официальной документации 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

Secure Fuel CMS with a free Let's encrypt SSL certificate

Проверки после установки — Критерии приёмки

  • Сайт открывается по 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, работа с базой данных и миграциями.
  • Контент-менеджер:
    • Настройка страниц в админ-панели, загрузка медиа, проверка корректности отображения контента.

Распространённые ошибки и способы их устранения

  1. 502 Bad Gateway или 504 Gateway Timeout

    • Причина: Nginx не может связаться с PHP-FPM (неверный fastcgi_pass или сервис упал).
    • Устранение: проверьте путь сокета, status php-fpm, логи /var/log/nginx/ и /var/log/php-fpm/.
  2. 500 Internal Server Error после входа в админку

    • Причина: проблема с правами на папки (например sessions или upload) или неверный encryption_key.
    • Устранение: проверьте права, владельца (nginx:nginx), и корректность $config[‘encryption_key’].
  3. Ошибки подключения к базе данных

    • Причина: неверные параметры в fuel/application/config/database.php.
    • Устранение: проверьте hostname, username, password, database и привилегии пользователя.
  4. SELinux блокирует доступ к сокету

    • Причина: SELinux в Enforcing. Nginx не имеет прав на доступ к Unix-сокету php-fpm.
    • Устранение: либо переведите SELinux в permissive на время отладки, либо настройте соответствующие контексты и boolean-параметры (рекомендуется координироваться с политикой безопасности). Проверяйте audit.log.

Порядок отката (Runbook — быстрый откат при проблемах)

Если после развертывания сайт перестал работать:

  1. Откатить изменения Nginx: восстановите резервную копию /etc/nginx/sites-available/fuel.conf или удалите симлинк из sites-enabled и перезагрузите nginx.
  2. Остановить php73-php-fpm, если он вызывает ошибки: sudo systemctl stop php73-php-fpm.
  3. Восстановить файлы приложения из резервной копии (если вы предварительно делали бэкап).
  4. Восстановить базу данных из дампа (mysqldump) при необходимости.
  5. Сообщить заинтересованным сторонам и зафиксировать время/действия.

Безопасность и эксплуатация

  • Права: держите права на файлы минимальными (директории 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 или в управляемом хостинге, если вы хотите сократить операционную нагрузку.

Мини-методология развертывания (быстрый план)

  1. Подготовить сервер (обновления, firewall, SELinux policy).
  2. Установить и настроить MariaDB.
  3. Установить необходимую версию PHP (или контейнеры).
  4. Настроить Nginx и тестировать конфигурацию.
  5. Загрузить и настроить Fuel CMS, импортировать схему БД.
  6. Настроить HTTPS и автоматическое обновление сертификатов.
  7. Выполнить тесты, настроить мониторинг и бэкапы.

Критерии приёмки (Короткое резюме)

  • Сайт и админка доступны по HTTPS.
  • Пользователь может войти и изменить настройки.
  • Логи не содержат критических ошибок при базовом использовании.
  • Процесс обновления сертификатов автоматизирован.

Ресурсы и ссылки

Вывод

Эта инструкция покрывает полный цикл развёртывания Fuel CMS на Fedora 31: от подготовки сервера и создания базы данных до настройки PHP-FPM, Nginx, установки CMS и подключения HTTPS. Следуйте чеклистам, выполняйте тесты и сохраняйте резервные копии перед любыми изменениями.

Важно: если вы столкнётесь с ошибками, сначала проверьте логи Nginx, php-fpm и MariaDB — они дают ключ к быстрому решению большинства проблем.

Поделиться: 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 быстро