Установка Vanilla Forum на Fedora 29 с Nginx
Введение

Vanilla — это свободная и открытая система форумов, написанная на PHP. Исходный код распространяется по лицензии GNU GPL2 и доступен на GitHub. Для Vanilla доступна богатая система дополнений, контент можно писать в Markdown. В этом руководстве мы пройдём установку и базовую настройку Vanilla Forum на Fedora 29 с Nginx как веб-сервером, MariaDB как СУБД и опционально — с TLS через acme.sh и Let’s Encrypt.
Важно: PHP 7.0 устарел и не получает исправлений безопасности — используйте PHP 7.2 или новее.
Кому это руководство
- Сисадминам и DevOps-инженерам, которые разворачивают форумы на Linux-серверах.
- Тем, кто хочет локально или на VPS поставить Vanilla с Nginx и MariaDB.
Краткие определения
- PHP-FPM: демон для обслуживания PHP через FastCGI.
- acme.sh: клиент для получения сертификатов Let’s Encrypt на чистом shell.
Требования
Минимальные требования для работы Vanilla Forum:
- PHP 7.0 или новее (рекомендуется 7.2+).
- PHP-расширения: mbstring, curl, GD, PDO и MySQLi, OpenSSL.
- MySQL/MariaDB/Percona (MySQL 5.0+ минимально, рекомендуется 5.7+).
- Веб-сервер: Nginx или Apache.
- В MySQL должен быть выключен strict mode.
Рекомендуется включить SSL для шифрования трафика.
Предварительные условия
- Fedora 29.
- Ненулевой пользователь с правами sudo.
Начальные шаги: обновление и базовая настройка
Проверьте версию Fedora:
cat /etc/fedora-release
# Fedora release 29 (Twenty Nine)Установите часовой пояс (пример — Europe/Moscow):
timedatectl list-timezones
sudo timedatectl set-timezone 'Europe/Moscow'Обновите пакеты системы:
sudo dnf upgrade -yУстановите базовые утилиты:
sudo dnf install -y curl wget vim git sudo zip unzip socat bash-completionШаг 1 — Установка PHP и расширений
Установите PHP и необходимые расширения:
sudo dnf install -y php-cli php-fpm php-common php-mbstring php-curl php-gd php-mysqlnd php-jsonПроверьте установленные модули PHP:
php -mПроверка версии PHP:
php --version
# Пример: PHP 7.2.16 (cli)Запустите и включите службу PHP-FPM:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.serviceВажно: Убедитесь, что сокет или адрес для fastcgi в конфигурации Nginx совпадает с настройками php-fpm (см. /etc/php-fpm.d/www.conf).
Шаг 2 — Установка MariaDB и создание базы данных
Vanilla поддерживает MySQL, MariaDB и Percona. Мы используем MariaDB.
Установите MariaDB:
sudo dnf install -y mariadb-serverПроверьте версию:
mysql --version
# пример: mysql Ver 15.1 Distrib 10.3.x-MariaDBЗапустите и включите службу:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.serviceЗапустите сценарий повышения безопасности:
sudo mysql_secure_installationПример ответов во время выполнения (вводите свои пароли):
Enter current password for root (enter for none): [Enter]
Set root password? [Y/n] Y
New password: your_secure_password
Re-enter new password: your_secure_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 как root:
sudo mysql -u root -p
# введите парольСоздайте базу и пользователя для Vanilla (замените dbname/username/password):
CREATE DATABASE dbname;
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;Запомните учётные данные — они понадобятся при установке через веб-интерфейс.
Шаг 3 — Установка acme.sh и получение сертификата Let’s Encrypt (опционально)
SSL не обязателен для работы, но рекомендуется для продакшена.
Установка acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~Проверьте версию acme.sh:
acme.sh --version
# пример: v2.8.0Получение RSA и ECDSA сертификатов (замените 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.
Сертификаты будут в домашнем каталоге пользователя, например /home/username/example.com.
Скопируйте сертификаты в системный каталог (корректные пути):
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_eccУстановите сертификаты и укажите команду перезагрузки nginx (пример):
# 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'
# ECC/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Важно: Для standalone-режима certbot/acme.sh должен иметь доступ к порту 80/443 во время выдачи.
Шаг 4 — Установка и конфигурация Nginx для Vanilla
Установите Nginx:
sudo dnf install -y nginxПроверьте версию и включите службу:
nginx -v
sudo systemctl start nginx.service
sudo systemctl enable nginx.serviceСоздайте файл конфигурации:
sudo vim /etc/nginx/conf.d/vanilla.confПример конфигурации Nginx для Vanilla (замените example.com и пути на реальные):
server {
listen 80;
listen 443 ssl http2;
server_name example.com;
root /var/www/vanilla;
index index.php;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECC/ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
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(/|$) {
include default.d/php.conf;
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root/index.php;
fastcgi_param X_REWRITE 1;
fastcgi_pass unix:/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:
sudo nginx -t
sudo systemctl reload nginx.serviceПримечание: Для production рекомендуется изучить рекомендации по безопасности из официальной документации Vanilla и Nginx (HSTS, оптимальные шифры, OCSP stapling и т.д.).
Шаг 5 — Установка файлов Vanilla
Создайте корневую папку веб-сайта и задайте права:
sudo mkdir -p /var/www/vanilla
sudo chown -R your_user:your_user /var/www/vanillaПерейдите в директорию и скачайте архив Vanilla (замените версию при необходимости):
cd /var/www/vanilla
wget https://open.vanillaforums.com/get/vanilla-core-2.8.1.zip
unzip vanilla-core-2.8.1.zip
rm vanilla-core-2.8.1.zip
mv vanilla-2.8.1/* . && mv vanilla-2.8.1/.* .Задайте владельца веб-процесса (nginx):
sudo chown -R nginx:nginx /var/www/vanillaОтредактируйте PHP-FPM пул, чтобы процессы работали от пользователя nginx:
sudo vim /etc/php-fpm.d/www.conf
# user = nginx
# group = nginxЗатем перезапустите php-fpm:
sudo systemctl restart php-fpm.serviceОткройте домен в браузере и следуйте инструкциям установщика.
Шаг 6 — Завершение установки через веб-интерфейс
После перехода на сайт вы увидите страницу установщика.

Заполните поля с данными базы данных и административной учётной записью, затем нажмите «Продолжить →». После прохождения установки откроется административная панель Vanilla.

Полезные ссылки
- https://open.vanillaforums.com/
- https://github.com/vanilla/vanilla
- Официальная документация по Nginx: https://docs.vanillaforums.com/developer/backend/server-nginx/
- Документация по Apache: https://docs.vanillaforums.com/developer/backend/server-apache/
Отказные случаи — когда установка может не сработать
- PHP-расширения не установлены или не загружены — проверяйте php -m и логи php-fpm.
- Неправильные права на файлы/папки — веб-сервер не сможет записывать конфигурационные файлы и загрузки.
- MariaDB в strict mode — Vanilla ожидает отключённый strict mode.
- Блокировка портов 80/443 — acme.sh не сможет получить сертификат.
Альтернативы
- Использовать Apache вместо Nginx — официально поддерживается.
- Использовать управляемый хостинг с поддержкой PHP (например, PaaS или shared hosting) — уменьшает трудозатраты по обслуживанию.
- Развернуть контейнеры (Docker) с готовыми образами Vanilla — быстрее и переносимее.
Мини‑методология развёртывания
- Выполнить обновление системы и установить зависимости.
- Установить и настроить СУБД, создать пользователя и базу.
- Установить PHP-FPM и убедиться в наличии всех расширений.
- Настроить Nginx, обеспечить доступ к файлам и сокет php-fpm.
- Скопировать файлы Vanilla и настроить владельца папок.
- Пройти установку через веб-интерфейс и проверить логи.
- Включить регулярное резервное копирование базы и файлов.
Чеклист для ролей
Системный администратор:
- Проверить и установить OS-обновления.
- Настроить firewall и SELinux (при необходимости) для доступа 80/443.
- Настроить резервное копирование/мониторинг.
DevOps/Инженер релиза:
- Автоматизировать развёртывание (Ansible, Terraform).
- Настроить CI/CD для бэкап/обновлений.
Владелец продукта/контент-менеджер:
- Настроить категории и права доступа в админке Vanilla.
- Проверить плагины и темы.
Критерии приёмки
- Сайт отвечает по HTTP(S) и открывает установщик Vanilla.
- Админская учётная запись создаётся, можно войти в админку.
- Форум создаёт темы и посты, загрузка файлов работает.
- SSL валиден (если установлен) и сертификат автоматически обновляется.
Runbook при проблемах (короткий)
- При ошибке 502/504: проверьте status php-fpm и логи /var/log/php-fpm/www-error.log.
- При ошибке соединения с БД: проверьте MySQL/MariaDB статус, учётные данные в конфиге.
- При ошибках прав доступа: проверьте владельца /var/www/vanilla и права папок.
- При проблемах с сертификатом: проверьте acme.sh –list и логи acme.sh.
Security & Privacy — базовые рекомендации
- Используйте современные версии PHP и MariaDB.
- Включите HTTPS и настройте HSTS.
- Ограничьте доступ к /conf, /vendor и другим служебным директорям через Nginx (см. конфиг выше).
- Периодически проверяйте обновления Vanilla и установленных плагинов.
- Храните резервные копии вне сервера приложения и шифруйте их при необходимости.
Советы по миграции и совместимости
- Перед обновлением Vanilla создавайте полные бэкапы базы и папки uploads.
- Проверяйте совместимость плагинов с версией core при обновлении.
- При переносе на другой сервер используйте экспорт/импорт SQL и rsync для файлов.
Краткое резюме
Vanilla Forum можно надёжно развернуть на Fedora 29 с Nginx, PHP-FPM и MariaDB. Опциональная интеграция с acme.sh и Let’s Encrypt обеспечивает HTTPS. Важные аспекты — корректные права на файлы, наличие PHP-расширений и правильная конфигурация Nginx/PHP-FPM.
Важно: всегда проверяйте логи (Nginx, php-fpm, MariaDB) при отладке и поддерживайте регулярные бэкапы.
Краткое объявление: Разверните Vanilla Forum быстро — используйте этот пошаговый план для Fedora 29, Nginx и MariaDB; добавьте acme.sh для автоматической выдачи Let’s Encrypt.
Похожие материалы
Tooly — универсальные утилиты для Android
APC Index Mismatch — как исправить BSOD на Windows
Доступ к Android с разбитым экраном
Сброс Samsung при заблокированном телефоне
Как разогнать монитор через NVIDIA Control Panel