Установка Vanilla Forum на CentOS 8 и защита через Let's Encrypt SSL

TL;DR
Vanilla — лёгкое и многоязычное ПО для форумов на PHP. В этой инструкции показано, как установить Vanilla на CentOS 8 с Nginx, MariaDB, PHP-FPM и получить бесплатный SSL от Let’s Encrypt. Включены команды, конфигурация Nginx, настройки SELinux и проверка работоспособности.
Важно: все команды выполняйте от пользователя с sudo или от root.
Кому подходит эта инструкция
- Системным администраторам, которые разворачивают форум на собственном сервере.
- Разработчикам, которым нужно локальное или боевое окружение на CentOS 8.
Основные шаги (вкратце)
- Установить стек LEMP (Nginx, MariaDB, PHP-FPM и расширения).
- Настроить базу данных MariaDB для Vanilla.
- Скачать и разместить файлы Vanilla в веб-корне.
- Настроить PHP-FPM для работы с Nginx.
- Добавить виртуальный хост Nginx для Vanilla.
- Получить и установить SSL через Certbot (Let’s Encrypt).
- Настроить SELinux и брандмауэр.
- Пройти веб-инсталлятор Vanilla и завершить настройку.
Требования
- Сервер с CentOS 8.
- Доступ root или пользователь с sudo.
- Доменное имя, указывающее на сервер (в примере используется vanilla.linuxbuz.com).
Установка LEMP (Nginx, MariaDB, PHP и расширения)
Установите Nginx, MariaDB и PHP с нужными расширениями одной командой:
dnf install nginx mariadb-server php php php-mysqlnd php-opcache php-xml php-xmlrpc php-gd php-mbstring php-json php-fpm php-curl php-pear php-openssl php-intl unzip -yЗапустите и включите сервисы:
systemctl start nginx
systemctl start php-fpm
systemctl start mariadb
systemctl enable nginx
systemctl enable php-fpm
systemctl enable mariadbПримечание: если вы используете нестандартные путевые или сокеты PHP-FPM, скорректируйте конфигурацию Nginx и пути в следующих шагах.
Настройка MariaDB (база данных для Vanilla)
Защитите MariaDB:
mysql_secure_installationОтвечайте на вопросы, как указано в подсказках. Затем войдите в консоль MariaDB:
mysql -u root -pСоздайте базу и пользователя для Vanilla:
MariaDB [(none)]> CREATE DATABASE vanilladb CHARACTER SET utf8 COLLATE utf8_general_ci;
MariaDB [(none)]> CREATE USER 'vanilla'@'localhost' IDENTIFIED BY 'password';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON vanilladb.* TO 'vanilla'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;Замените ‘password’ на безопасный пароль. В продакшене используйте более строгую кодировку (utf8mb4) при необходимости.
Скачивание и размещение Vanilla
Скачайте последнюю стабильную сборку Vanilla (пример для версии 3.3):
wget https://open.vanillaforums.com/get/vanilla-core-3.3.zipРаспакуйте архив:
unzip vanilla-core-3.3.zipПереместите пакет в корень веб-сервера и установите владельца:
mv package /var/www/html/vanilla
chown -R nginx:nginx /var/www/html/vanillaЕсли у вас другой веб-каталог (например, /var/www/vanilla), используйте его.
Настройка пула PHP-FPM
Отредактируйте пул по пути /etc/php-fpm.d/www.conf и установите пользователя и группу nginx:
nano /etc/php-fpm.d/www.confНайдите и измените:
user = nginx
group = nginxСоздайте каталог сессий и установите права:
mkdir -p /var/lib/php/session
chown -R nginx:nginx /var/lib/php/sessionПерезапустите php-fpm:
systemctl restart php-fpmВажно: проверьте путь сокета php-fpm в вашей конфигурации (обычно /var/run/php-fpm/www.sock). Позже он будет использоваться в конфигурации Nginx.
Конфигурация Nginx для Vanilla
Создайте виртуальный хост:
nano /etc/nginx/conf.d/vanilla.confВставьте конфигурацию (скорректируйте server_name):
server {
listen 80;
server_name vanilla.linuxbuz.com;
root /var/www/html/vanilla;
index index.php;
location ~* /\.git { deny all; return 403; }
location /build/ { deny all; return 403; }
location /cache/ { deny all; return 403; }
location /cgi-bin/ { deny all; return 403; }
location /uploads/import/ { deny all; return 403; }
location /conf/ { deny all; return 403; }
location /tests/ { deny all; return 403; }
location /vendor/ { deny all; return 403; }
location ~* ^/index\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
try_files $fastcgi_script_name =404;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root/index.php;
fastcgi_param X_REWRITE 1;
fastcgi_pass unix:/var/run/php-fpm/www.sock;
}
location ~* \.php(/|$) {
rewrite ^ /index.php$uri last;
}
location / {
try_files $uri $uri/ @vanilla;
}
location @vanilla {
rewrite ^ /index.php$uri last;
}
}Сохраните и перезапустите Nginx:
systemctl restart nginxСовет: в продакшне добавьте механизмы кэширования и gzip для производительности.
Защита сайта через Let’s Encrypt (Certbot)
Установите certbot-auto и сделайте его исполняемым:
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Получите сертификат и автоматическую настройку Nginx:
certbot-auto --nginx -d vanilla.linuxbuz.comВо время работы утилиты вам предложат ввести email, принять условия и выбрать перенаправление HTTP на HTTPS. Выберите перенаправление (обычно пункт 2) для новых сайтов.
Примерный вывод, который вы увидите при установке сертификата:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
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 vanilla.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/vanilla.confЕсли certbot успешно отработал, он внесёт изменения в конфигурацию Nginx и создаст сертификаты в /etc/letsencrypt/live/ваш_домен/. Для автоматического продления добавьте cron или systemd таймер, если certbot-auto не установил его сам:
# Проверка продления (можно в cron раз в день)
certbot-auto renew --dry-runНастройка SELinux и брандмауэра
Если SELinux включён, дайте httpd право на установление сетевых соединений и исправьте контекст файлов:
setsebool httpd_can_network_connect on -P
chcon -R -u system_u -t httpd_sys_rw_content_t -r object_r /var/www/html/vanillaОткройте порты в firewalld:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadВажно: проверяйте, не блокируют ли внешние брандмауэры (например, облачный провайдер) порты 80/443.
Первый запуск и веб-инсталлятор
Откройте в браузере https://vanilla.linuxbuz.com. Вы увидите страницу установки, где нужно указать:
- настройки базы данных (имя, пользователь, пароль, host);
- название приложения, email администратора;
- логин и пароль администратора.


После заполнения и нажатия Continue установка завершится, и вы попадёте в административную панель:

Критерии приёмки
- Сайт доступен по HTTPS без ошибок сертификата.
- Веб-инсталлятор успешно сохранил конфигурацию и показал панель администратора.
- PHP-FPM обрабатывает запросы, нет ошибок 500 в логах.
- SELinux не мешает записи в нужные каталоги.
Резервное копирование и обновление
- Регулярно бэкапьте базу данных и каталог /var/www/html/vanilla.
- Перед обновлением проверяйте совместимость плагинов и PHP-версии.
Пример простой команды для бэкапа базы:
mysqldump -u root -p vanilladb > vanilladb-$(date +%F).sqlАльтернативные подходы
- Docker: если вы предпочитаете контейнеры, используйте официальные/сообщественные образы PHP+Nginx+MariaDB для упрощённого развёртывания.
- Apache + mod_php: можно использовать Apache вместо Nginx, тогда настройки виртуального хоста и PHP-FPM не потребуются.
- Управляемый хостинг: для минимизации поддержки можно выбрать провайдера с преднастроенным форумом.
Частые ошибки и способы их устранения
- 502 Bad Gateway: проверьте, запущен ли php-fpm и совпадает ли путь сокета в nginx (fastcgi_pass unix:/var/run/php-fpm/www.sock;).
- 500 Internal Server Error: смотрите логи /var/log/nginx/error.log и /var/log/php-fpm/www-error.log.
- Проблемы с правами: убедитесь, что nginx владеет файловой системой, и SELinux контексты выставлены верно.
Пример быстрого чеклиста для устранения неполадок
- systemctl status php-fpm nginx mariadb
- tail -n 100 /var/log/nginx/error.log
- tail -n 100 /var/log/php-fpm/error.log
- ls -la /var/www/html/vanilla
- restorecon -R /var/www/html/vanilla (если SELinux)
Рекомендации по безопасности
- Отключите права записи на каталоги, где это не требуется.
- Регулярно обновляйте PHP, MariaDB и Vanilla.
- Ограничьте доступ к административной панели по IP, если возможно.
- Подумайте о WAF (web application firewall) и защите от брута.
Мини-методика развёртывания (SOP)
- Подготовить сервер, задать hostname и timezone.
- Установить обновления: dnf update -y.
- Установить LEMP стек (см. выше).
- Настроить базу и пользователя MariaDB.
- Разместить файлы Vanilla и установить права.
- Настроить и перезапустить php-fpm, nginx.
- Получить сертификат через certbot-auto.
- Проверить логи и функциональность сайта.
- Настроить автоматическое обновление сертификатов и бэкапы.
Роли и задачи (кто что делает)
- Системный администратор: установка LEMP, настройка SELinux, брандмауэра, SSL.
- DevOps/инженер по развёртыванию: автозапуск, CI/CD для обновлений, мониторинг.
- Владелец сообщества/админ форума: финальные настройки в панели Vanilla, модерация.
Короткий словарь
- LEMP: Linux, Nginx (Engine-X), MariaDB/MySQL, PHP.
- PHP-FPM: FastCGI Process Manager для обработки PHP-запросов.
- Certbot: клиент для автоматического получения сертификатов от Let’s Encrypt.
Когда этот способ может не подойти
- Если вы не администрируете сервер — лучше выбрать управляемый хостинг.
- Если у вас строгие требования к доступности и масштабированию, рассмотрите кластерные решения и балансировщики.
Заключение
Поздравляю — после выполнения шагов вы получите рабочий форум Vanilla, доступный по HTTPS. Проверьте безопасность, настройте резервное копирование и мониторинг, и периодически обновляйте компоненты системы.
Если возникли вопросы по конкретным ошибкам, приведите логи и конфигурации, и я помогу с диагностикой.
Краткое резюме:
- Установите LEMP, настройте MariaDB и PHP-FPM.
- Разместите Vanilla в /var/www/html/vanilla и настройте права.
- Настройте Nginx и получите сертификат Let’s Encrypt через certbot-auto.
- Проверьте SELinux, откройте порты и завершите инсталляцию через веб-интерфейс.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента