Установка Flarum на CentOS 8

Flarum — бесплатное, с открытым исходным кодом и современное программное обеспечение для форумов, которое упрощает запуск и развитие онлайн‑сообщества. Оно простое, лёгкое, быстрое и адаптировано под мобильные устройства. Базируется на PHP и включает набор возможностей: аккуратный интерфейс, двухпанельную структуру, бесконечную прокрутку, плавающий композитор сообщений, полную отзывчивость и другое.
В этом руководстве показано, как установить форум Flarum на сервер с CentOS 8.
Требования
- Сервер с CentOS 8.
- Доменное имя, указывающее на IP вашего сервера.
- Пароль root настроен на сервере.
Важно: перед началом сделайте резервную копию данных сервера и убедитесь, что у вас есть доступ по SSH.
Быстрый план установки (мини‑методология)
- Подготовка: включение репозиториев EPEL и Remi.
- Установка стеков: Nginx, MariaDB, PHP 7.3 и зависимостей.
- Настройка базы данных и PHP‑FPM.
- Установка Composer и Flarum в /var/www/html.
- Конфигурация Nginx и SELinux/фаервола.
- Получение SSL через Let\’s Encrypt.
Начало работы
Сначала установите репозитории EPEL и Remi.
dnf install epel-release -yЗатем загрузите и установите Remi:
wget http://rpms.remirepo.net/enterprise/remi-release-8.rpm
rpm -Uvh remi-release-8.rpmУстановка Nginx, MariaDB и PHP
Установите Nginx и MariaDB:
dnf install nginx mariadb-server -yВключите модуль php:remi-7.3 для установки PHP 7.3:
dnf module enable php:remi-7.3Установите PHP и необходимые расширения:
dnf install php php-fpm php-common php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -yЗапустите и включите службы для автозапуска:
systemctl start nginx
systemctl start mariadb
systemctl start php-fpm
systemctl enable nginx
systemctl enable mariadb
systemctl enable php-fpmНастройка базы данных MariaDB
По умолчанию MariaDB не защищена. Запустите скрипт безопасности:
mysql_secure_installationОтветьте на вопросы, например:
Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] YЗатем войдите в MariaDB и создайте базу и пользователя для Flarum:
mysql -u root -pВ MariaDB shell выполните:
CREATE DATABASE flarumdb;
GRANT ALL PRIVILEGES on flarumdb.* to 'flarum'@'localhost' identified by 'password';
FLUSH PRIVILEGES;
EXIT;Примечание: замените ‘password’ на надёжный пароль и учтите, что команда GRANT в разных версиях MariaDB/MySQL может требовать другой синтаксис.
Настройка PHP-FPM для Nginx
Отредактируйте файл /etc/php-fpm.d/www.conf:
nano /etc/php-fpm.d/www.confЗамените пользователя и группу apache на nginx:
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginxНайдите строку
;listen = /run/php-fpm/www.sockи замените на
listen = 127.0.0.1:9000Сохраните и перезапустите PHP-FPM:
systemctl restart php-fpmВажно: использование TCP сокета 127.0.0.1:9000 упрощает совместимость с Nginx, но можно использовать и unix сокет — тогда и в конфиге nginx укажите соответствующий путь.
Установка Flarum
Установите Composer:
curl -sS https://getcomposer.org/installer | phpОжидаемый вывод:
All settings correct for using Composer
Downloading...
Composer (version 1.9.2) successfully installed to: /root/composer.phar
Use it: php composer.pharПереместите бинарник и дайте права:
mv composer.phar /usr/local/bin/composer
chmod 755 /usr/local/bin/composerПерейдите в корень веб-сервера и создайте проект Flarum:
cd /var/www/html
composer create-project flarum/flarum . --stability=betaУстановите владельца и права на веб‑корень:
chown -R nginx:nginx /var/www/html
chmod -R 755 /var/www/html
chown -R nginx:nginx /var/lib/phpВажно: если у вас большая установка и много плагинов, используйте composer с достаточным объёмом памяти и проверяйте требования RAM.
Конфигурация Nginx для Flarum
Создайте виртуальный хост:
nano /etc/nginx/conf.d/flarum.confДобавьте конфигурацию (пример):
server {
listen 80;
server_name flarum.example.com;
# note that these lines are originally from the "location /" block
root /var/www/html/public;
index index.php index.html index.htm;
location / { try_files $uri $uri/ /index.php?$query_string; }
location /api { try_files $uri $uri/ /api.php?$query_string; }
location /admin { try_files $uri $uri/ /admin.php?$query_string; }
location /flarum {
deny all;
return 404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.html$ {
expires -1;
}
location ~* \.(css|js|gif|jpe?g|png)$ {
expires 1M;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types application/atom+xml
application/javascript
application/json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/svg+xml
image/x-icon
text/css
#text/html -- text/html is gzipped by default by nginx
text/plain
text/xml;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
}Сохраните файл. Затем увеличьте server_names_hash_bucket_size в /etc/nginx/nginx.conf, добавив
server_names_hash_bucket_size 64;перед закрывающей фигурной скобкой main context. Проверьте конфигурацию и перезапустите службы:
nginx -t
systemctl restart php-fpm
systemctl restart nginxПримечание: если вы видите ошибки типа “unknown directive gzip_types” или проблемы с компиляцией, проверьте версию Nginx и наличие модулей.
SELinux и фаервол
Разрешите HTTP/HTTPS в фаерволе:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadЕсли SELinux включён, разрешите PHP подключаться к сети:
setsebool httpd_can_network_connect on -PЕсли после этого возникают ошибки доступа к файлам, проверьте контексты SELinux для /var/www/html и /var/lib/php и при необходимости примените restorecon или semanage fcontext.
Доступ к веб‑интерфейсу Flarum
Откройте в браузере http://flarum.example.com. Вы увидите страницу установщика.

Заполните название форума, параметры базы данных, учётные данные администратора и нажмите Install Flarum. После успешной установки вы попадёте в панель управления:

Защита Flarum с помощью Let\’s Encrypt SSL
Скачайте клиента certbot (примеры для автоматической установки):
wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-autoПолучите и установите сертификат:
certbot-auto --nginx -d flarum.example.comВо время процесса вас попросят ввести email и согласиться с условиями. Пример вывода:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for flarum.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/flarum.confЗатем выберите перенаправление HTTP на HTTPS, например опцию 2 для полного редиректа.
После установки вы увидите пути к сертификатам и рекомендации по продлению. В исходном примере сертификат истекает 2020-03-23 — это демонстрационный вывод.
Важно: certbot-auto может требовать дополнительных зависимостей и времени на установку. На сервере без интернета или с ограничениями использования внешних репозиториев процедура будет отличаться.
Критерии приёмки
- URL https://ваш-домен открывает форум без ошибок сертификата.
- Главная страница, /admin и /api возвращают 200 и корректный HTML/JSON.
- Авторизация администратора работает, темы можно создавать и читать.
- Nginx не выдаёт ошибок конфигурации (nginx -t OK).
- Регулярное обновление сертификатов настроено (certbot-auto renew).
Сводка команд (cheat sheet)
- Установить репозитории: dnf install epel-release -y; rpm -Uvh remi-release-8.rpm
- Установить стек: dnf install nginx mariadb-server -y
- Включить PHP 7.3: dnf module enable php:remi-7.3
- Composer: curl -sS https://getcomposer.org/installer | php
- Создать проект: composer create-project flarum/flarum . –stability=beta
- SELinux: setsebool httpd_can_network_connect on -P
- Получить SSL: certbot-auto –nginx -d example
Список для администратора (role-based checklist)
Серверный администратор:
- Установить и обновлять пакеты OS и PHP.
- Настроить бэкапы /var/www/html и базы данных.
- Настроить мониторинг (доступность, диск, память).
Вебмастер:
- Проверить права на файлы и владельца nginx.
- Настроить gzip, кеширование и заголовки безопасности.
Модератор/контент:
- Создать тестовую тему и проверить загрузку файлов.
- Проверить локализацию UI и плагинов.
Отладка и типичные ошибки
- Проблемы с правами: убедитесь, что владелец nginx: nginx и права 755/644; для загрузки файлов может потребоваться 775.
- Ошибки PHP-FPM 502 Bad Gateway: проверьте соответствие listen в www.conf и fastcgi_pass в nginx.
- SELinux блокирует запись: проверьте контекст и примените restorecon или semanage fcontext.
- Composer не может выделить память: запустите COMPOSER_MEMORY_LIMIT=-1 composer …
- Certbot не может верифицировать домен: проверьте DNS и правило firewall, временно отключите редиректы.
Безопасность и рекомендации по эксплуатации
- Регулярно обновляйте Composer-зависимости и плагины Flarum.
- Настройте автоматическое продление сертификатов (cron systemd timer для certbot-auto renew).
- Ограничьте доступ к SSH с помощью ключей и fail2ban.
- Рассмотрите бэкап базы данных с retention policy и тестом восстановления.
Миграция и совместимость
- При миграции с Apache сохраните конфиги .htaccess и адаптируйте правила для Nginx (try_files).
- Проверяйте версии PHP и расширений: старые расширения могут отсутствовать в newer Remi repo.
Тесты и приёмочные критерии
- Подключение: открыть страницу, залогиниться, создать тему и комментарий.
- Производительность: базовая проверка времени отклика страницы < 1.5 с на простом тесте с 1 пользователем (ориентир).
- SSL: проверить в SSL Labs для подтверждения корректной цепочки.
Короткое резюме
Вы установили Flarum на CentOS 8: подготовили репозитории, установили LEMP‑стек, настроили PHP‑FPM и базу данных, развернули Flarum, настроили Nginx и SSL. Дополнительно — рекомендации по безопасности, отладке и контрольный список для запуска в продакшн.
Важно: всегда тестируйте в staging перед продакшном и храните резервные копии.
Сводка ключевых шагов и чеклисты помогут вам повторить установку и быстро устранить типичные проблемы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента