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

Установка Vanilla Forum на Fedora 29 с Nginx

6 min read Установка Форум Обновлено 25 Nov 2025
Установка Vanilla Forum на Fedora 29 с Nginx
Установка Vanilla Forum на Fedora 29 с Nginx

Введение

Логотип и интерфейс Vanilla Forum

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 — экран ввода данных

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

Vanilla Forum — пример интерфейса, развёрнут на Ubuntu

Полезные ссылки

Отказные случаи — когда установка может не сработать

  • PHP-расширения не установлены или не загружены — проверяйте php -m и логи php-fpm.
  • Неправильные права на файлы/папки — веб-сервер не сможет записывать конфигурационные файлы и загрузки.
  • MariaDB в strict mode — Vanilla ожидает отключённый strict mode.
  • Блокировка портов 80/443 — acme.sh не сможет получить сертификат.

Альтернативы

  • Использовать Apache вместо Nginx — официально поддерживается.
  • Использовать управляемый хостинг с поддержкой PHP (например, PaaS или shared hosting) — уменьшает трудозатраты по обслуживанию.
  • Развернуть контейнеры (Docker) с готовыми образами Vanilla — быстрее и переносимее.

Мини‑методология развёртывания

  1. Выполнить обновление системы и установить зависимости.
  2. Установить и настроить СУБД, создать пользователя и базу.
  3. Установить PHP-FPM и убедиться в наличии всех расширений.
  4. Настроить Nginx, обеспечить доступ к файлам и сокет php-fpm.
  5. Скопировать файлы Vanilla и настроить владельца папок.
  6. Пройти установку через веб-интерфейс и проверить логи.
  7. Включить регулярное резервное копирование базы и файлов.

Чеклист для ролей

  • Системный администратор:

    • Проверить и установить OS-обновления.
    • Настроить firewall и SELinux (при необходимости) для доступа 80/443.
    • Настроить резервное копирование/мониторинг.
  • DevOps/Инженер релиза:

    • Автоматизировать развёртывание (Ansible, Terraform).
    • Настроить CI/CD для бэкап/обновлений.
  • Владелец продукта/контент-менеджер:

    • Настроить категории и права доступа в админке Vanilla.
    • Проверить плагины и темы.

Критерии приёмки

  • Сайт отвечает по HTTP(S) и открывает установщик Vanilla.
  • Админская учётная запись создаётся, можно войти в админку.
  • Форум создаёт темы и посты, загрузка файлов работает.
  • SSL валиден (если установлен) и сертификат автоматически обновляется.

Runbook при проблемах (короткий)

  1. При ошибке 502/504: проверьте status php-fpm и логи /var/log/php-fpm/www-error.log.
  2. При ошибке соединения с БД: проверьте MySQL/MariaDB статус, учётные данные в конфиге.
  3. При ошибках прав доступа: проверьте владельца /var/www/vanilla и права папок.
  4. При проблемах с сертификатом: проверьте 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.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Tooly — универсальные утилиты для Android
Android.

Tooly — универсальные утилиты для Android

APC Index Mismatch — как исправить BSOD на Windows
Техподдержка

APC Index Mismatch — как исправить BSOD на Windows

Доступ к Android с разбитым экраном
Android.

Доступ к Android с разбитым экраном

Сброс Samsung при заблокированном телефоне
Мобильные устройства

Сброс Samsung при заблокированном телефоне

Как разогнать монитор через NVIDIA Control Panel
Гайды

Как разогнать монитор через NVIDIA Control Panel

APC_INDEX_MISMATCH: как исправить BSOD в Windows
Инструкции

APC_INDEX_MISMATCH: как исправить BSOD в Windows