Установка phpBB с Nginx на Debian 13, 12, 11: полное руководство

phpBB — это одна из самых популярных бесплатных систем управления форумами с открытым исходным кодом, написанная на PHP. Она идеально подходит для создания сообщества, форума поддержки или дискуссионной площадки любой сложности.

В этом руководстве я покажу полную установку phpBB 3.3.x на Debian с веб-сервером Nginx, базой данных MariaDB и PHP-FPM.

⚠️ Важное примечание по версиям PHP:

Релиз DebianPHP по умолчаниюСовместимость с phpBB 3.3.xДействие
Debian 13 (Trixie)PHP 8.4❌ Не совместим
(phpBB 3.3.x требует
PHP ≤ 8.3)
Установить PHP 8.3
отдельно
Debian 12 (Bookworm)PHP 8.2✅ СовместимИспользовать PHP 8.2
по умолчанию
Debian 11 (Bullseye)PHP 7.4✅ СовместимИспользовать PHP 7.4
по умолчанию

Если вы хотите использовать PHP 8.4 на Debian 13 — вам нужно устанавливать phpBB 4.x (более новую ветку). Это руководство для phpBB 3.3.x, поэтому на Debian 13 мы установим PHP 8.3 из стороннего репозитория.


Оглавление

Предварительные требования

Перед установкой убедитесь, что:

  • У вас есть доменное имя, привязанное к IP-адресу сервера (для HTTPS)
  • Открыты порты 80 (HTTP) и 443 (HTTPS) в файрволе
  • Вы имеете права sudo (администратора)

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo — выполняет команду от имени суперпользователя; whoami — показывает имя текущего пользователя.

Ожидаемый вывод в терминале:

root

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.


Установка Nginx, MariaDB и вспомогательных утилит

Шаг 1: Обновите систему

sudo apt update && sudo apt upgrade -y

Шаг 2: Установите базовые пакеты

sudo apt install -y nginx mariadb-server curl wget unzip

Что делает:

  • nginx — веб-сервер
  • mariadb-server — база данных
  • curl, wget, unzip — для скачивания и распаковки phpBB

Шаг 3: Проверьте, что сервисы работают

Nginx:

systemctl status nginx --no-pager --lines=6

Ожидаемый вывод: Active: active (running)

MariaDB:

systemctl status mariadb --no-pager --lines=6

Ожидаемый вывод: Active: active (running)

Если какой-то сервис не запущен:

sudo systemctl enable --now nginx mariadb

Установка PHP (в зависимости от версии Debian)

Для Debian 13 (Trixie) — установка PHP 8.3

Debian 13 по умолчанию использует PHP 8.4, но phpBB 3.3.x требует PHP 8.3 или старше. Поэтому установим PHP 8.3 из репозитория Sury.

Шаг 1: Установите необходимые утилиты

sudo apt install -y ca-certificates curl gpg

Шаг 2: Добавьте GPG-ключ репозитория Sury

curl -fsSL https://packages.sury.org/php/apt.gpg | sudo gpg --dearmor -o /usr/share/keyrings/sury-php.gpg

Примечание: Этот способ добавления ключа рабочий, но в других статьях мы используем другой путь (через wget или через ключ с --dearmor). Это не ошибка, просто другой метод.

Шаг 3: Добавьте репозиторий Sury (DEB822 формат)

echo "Types: deb
URIs: https://packages.sury.org/php
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: main
Signed-By: /usr/share/keyrings/sury-php.gpg" | sudo tee /etc/apt/sources.list.d/sury-php.sources

Шаг 4: Обновите список пакетов и установите PHP 8.3

sudo apt update
sudo apt install -y php8.3-fpm php8.3-cli php8.3-mysql php8.3-mbstring php8.3-xml

Шаг 5: Установите переменную версии PHP

export PHP_VERSION=8.3

Для Debian 12 (Bookworm) — PHP 8.2 из репозиториев

sudo apt install -y php-fpm php-cli php-mysql php-mbstring php-xml
export PHP_VERSION=8.2

Для Debian 11 (Bullseye) — PHP 7.4 из репозиториев

sudo apt install -y php-fpm php-cli php-mysql php-mbstring php-xml
export PHP_VERSION=7.4

Проверка PHP-FPM и модулей

Проверьте версию PHP:

php$PHP_VERSION --version | head -n 1

Ожидаемый вывод: PHP 8.3.x (Debian 13), PHP 8.2.x (Debian 12) или PHP 7.4.x (Debian 11)

Проверьте статус PHP-FPM:

systemctl status php$PHP_VERSION-fpm --no-pager --lines=6

Ожидаемый вывод: Active: active (running)

Проверьте, что сокет PHP-FPM доступен:

readlink -f /run/php/php-fpm.sock

Ожидаемый вывод: /run/php/php8.3-fpm.sock (или другой версии)

Проверьте необходимые модули PHP:

php$PHP_VERSION -m | grep -E 'json|mbstring|xml|mysqli'

Ожидаемый вывод: строки json, libxml, mbstring, mysqli, xml, xmlreader, xmlwriter.


Настройка PHP для phpBB

Отредактируйте конфигурационный файл PHP-FPM:

sudo nano /etc/php/$PHP_VERSION/fpm/php.ini

Найдите и измените следующие параметры:

max_execution_time = 180
max_input_time = 180
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M

Сохраните файл (Ctrl+O, Enter, Ctrl+X).

Перезапустите PHP-FPM:

sudo systemctl restart php$PHP_VERSION-fpm

Скачивание и настройка phpBB

Шаг 1: Определите последнюю версию phpBB 3.3.x

PHPBB_TAG="$(curl -fsSL https://api.github.com/repos/phpbb/phpbb/tags?per_page=20 | grep -oE '"name": "release-3\.3\.[0-9]+"' | head -n 1 | cut -d '"' -f4)"
PHPBB_VERSION="${PHPBB_TAG#release-}"
printf '%s\n' "$PHPBB_VERSION"

Ожидаемый вывод: 3.3.15 (или новее)

Шаг 2: Скачайте и распакуйте архив

cd /tmp
wget https://download.phpbb.com/pub/release/3.3/$PHPBB_VERSION/phpBB-$PHPBB_VERSION.zip
unzip phpBB-$PHPBB_VERSION.zip
sudo mv phpBB3 /var/www/html/phpbb

Шаг 3: Установите права и владельца

sudo chown -R www-data:www-data /var/www/html/phpbb
sudo find /var/www/html/phpbb -type d -exec chmod 755 {} \;
sudo find /var/www/html/phpbb -type f -exec chmod 644 {} \;

Специальные права для директорий, в которые phpBB пишет данные:

sudo chmod 777 /var/www/html/phpbb/cache
sudo chmod 777 /var/www/html/phpbb/files
sudo chmod 777 /var/www/html/phpbb/store
sudo chmod 777 /var/www/html/phpbb/images/avatars/upload

Шаг 4: Проверьте, что файлы на месте

ls -ld /var/www/html/phpbb
ls -l /var/www/html/phpbb/bin/phpbbcli.php

Ожидаемый вывод: директория существует, файл phpbbcli.php присутствует.


Создание базы данных для phpBB

Шаг 1: Войдите в MariaDB

sudo mariadb

Шаг 2: Создайте базу данных

CREATE DATABASE phpbb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Шаг 3: Создайте пользователя

Замените 'strong-password-here' на надёжный пароль:

CREATE USER 'phpbbuser'@'localhost' IDENTIFIED BY 'strong-password-here';

Шаг 4: Дайте права пользователю

GRANT ALL PRIVILEGES ON phpbb.* TO 'phpbbuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Шаг 5: Проверьте, что база данных и пользователь созданы

sudo mariadb -e "SHOW DATABASES LIKE 'phpbb'; SELECT user, host FROM mysql.user WHERE user = 'phpbbuser';"

Ожидаемый вывод:

Database (phpbb)
phpbb

User      Host
phpbbuser localhost

Настройка Nginx для phpBB

Шаг 1: Создайте конфигурационный файл

Замените forums.example.com на ваше реальное доменное имя:

sudo nano /etc/nginx/sites-available/phpbb.conf

Содержимое файла:

server {
    listen 80;
    listen [::]:80;
    server_name forums.example.com;

    root /var/www/html/phpbb;
    index index.php index.html index.htm;

    access_log /var/log/nginx/phpbb.access.log;
    error_log /var/log/nginx/phpbb.error.log;

    location / {
        try_files $uri $uri/ @rewriteapp;
    }

    location @rewriteapp {
        rewrite ^(.*)$ /app.php/$1 last;
    }

    location /install/ {
        try_files $uri $uri/ @rewrite_installapp =404;
    }

    location @rewrite_installapp {
        rewrite ^(.*)$ /install/app.php/$1 last;
    }

    location ~ \.php(/|$) {
        include fastcgi.conf;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_pass unix:/run/php/php-fpm.sock;
    }

    location ~ /(config|common\.php|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb(?!\w+)|store|vendor) {
        deny all;
        internal;
    }

    location ~ /\.svn|/\.git {
        deny all;
        internal;
    }
}

Шаг 2: Включите сайт и проверьте конфигурацию

sudo ln -s /etc/nginx/sites-available/phpbb.conf /etc/nginx/sites-enabled/
sudo nginx -t

Ожидаемый вывод: syntax is ok и test is successful

Шаг 3: Перезагрузите Nginx

sudo systemctl reload nginx

Настройка HTTPS с Let’s Encrypt (рекомендуется)

Если ваше доменное имя уже указывает на сервер, установите SSL-сертификат:

sudo apt install -y python3-certbot-nginx
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d forums.example.com

Замените:

  • you@example.com — ваш email
  • forums.example.com — ваше доменное имя

Настройка UFW (файрвола)

Если вы используете UFW, откройте необходимые порты:

sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Проверьте статус:

sudo ufw status

Завершение установки phpBB через веб-интерфейс

Шаг 1: Откройте установщик в браузере

Перейдите по адресу:

http://forums.example.com/install/app.php

(или https://..., если настроили SSL)

Шаг 2: Пройдите этапы установки

  1. Нажмите «Install» на первом экране.
  2. Проверьте требования — все должно быть зелёным.
  3. Создайте администратора — придумайте логин, пароль и email.
  4. Настройте базу данных:
  • Тип: MySQL with MySQLi Extension
  • Сервер: localhost
  • Имя БД: phpbb
  • Пользователь: phpbbuser
  • Пароль: (тот, что вы задали)
  • Префикс таблиц: phpbb_ (оставьте по умолчанию)
  1. Настройте форум — название, описание, язык.

Шаг 3: После успешной установки — удалите папку /install

⚠️ Критически важно! phpBB заблокирует работу форума, пока папка install не будет удалена.

sudo rm -rf /var/www/html/phpbb/install

Настройка cron для phpBB

phpBB может выполнять фоновые задачи через системный cron (рекомендуется вместо триггеров от посетителей).

printf '%s\n' '*/5 * * * * www-data /usr/bin/php /var/www/html/phpbb/bin/phpbbcli.php cron:run >/dev/null 2>&1' | sudo tee /etc/cron.d/phpbb > /dev/null
sudo chmod 644 /etc/cron.d/phpbb

Проверьте, что cron создан:

sudo cat /etc/cron.d/phpbb

Ожидаемый вывод: строка с */5 * * * * www-data ...

После этого в панели администратора phpBB (ACP) переключите выполнение задач на системный cron.


Решение типичных проблем

8.1 Ошибка: Unit php-fpm.service could not be found

Симптом: При попытке проверить статус PHP-FPM появляется ошибка:

Unit php-fpm.service could not be found.

Причина: Debian использует версионные названия сервисов PHP-FPM (php8.3-fpm, php8.2-fpm, php7.4-fpm), а не общее php-fpm.

Пошаговое решение:

Шаг 1: Узнайте, какая версия PHP у вас установлена:

PHP_VERSION="$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')"
echo $PHP_VERSION

Шаг 2: Проверьте статус правильного сервиса:

systemctl status php$PHP_VERSION-fpm

Шаг 3: В конфигурации Nginx используйте общий путь к сокету, который не зависит от версии:

fastcgi_pass unix:/run/php/php-fpm.sock;

Debian автоматически создаёт символическую ссылку php-fpm.sock на актуальную версию.


8.2 Ошибка: Установщик phpBB не видит расширения PHP

Симптом: При проверке требований установщик показывает красным, что отсутствуют mbstring, xml или mysqli.

Причина: Не установлены соответствующие пакеты PHP.

Пошаговое решение:

Шаг 1: Установите недостающие расширения:

sudo apt install -y php$PHP_VERSION-mbstring php$PHP_VERSION-xml php$PHP_VERSION-mysql

Шаг 2: Перезапустите PHP-FPM:

sudo systemctl restart php$PHP_VERSION-fpm

Шаг 3: Проверьте, что расширения загружены:

php$PHP_VERSION -m | grep -E 'mbstring|xml|mysqli'

8.3 Ошибка: База данных не создаётся (Access denied)

Симптом: Установщик phpBB выдаёт ошибку подключения к базе данных.

Причина: Неверные данные в поле DB_HOST или пароль не совпадает.

Пошаговое решение:

Шаг 1: Проверьте, что база данных создана:

sudo mariadb -e "SHOW DATABASES LIKE 'phpbb';"

Шаг 2: Проверьте, что пользователь существует:

sudo mariadb -e "SELECT user, host FROM mysql.user WHERE user = 'phpbbuser';"

Шаг 3: Если пользователя нет — создайте его заново (см. раздел «Создание базы данных»).

Шаг 4: В установщике убедитесь, что в поле Database server hostname указано localhost (или 127.0.0.1).


8.4 Ошибка: 403 Forbidden или File not found

Симптом: При открытии форума появляется ошибка 403 или 404.

Причина: Неправильные права на файлы или отсутствует индексный файл.

Пошаговое решение:

Шаг 1: Проверьте, что файлы phpBB на месте:

ls -la /var/www/html/phpbb/index.php

Шаг 2: Проверьте владельца файлов:

ls -ld /var/www/html/phpbb

Должно быть www-data:www-data.

Шаг 3: Если права неверные — выполните:

sudo chown -R www-data:www-data /var/www/html/phpbb
sudo find /var/www/html/phpbb -type d -exec chmod 755 {} \;
sudo find /var/www/html/phpbb -type f -exec chmod 644 {} \;

Шаг 4: Проверьте конфигурацию Nginx:

sudo nginx -t
sudo systemctl reload nginx

8.5 Ошибка: «The installer directory is still present»

Симптом: После установки форум не открывается, а вместо него появляется сообщение:

The installer directory is still present. Please remove it.

Причина: Вы не удалили папку /install после завершения установки.

Пошаговое решение:

Удалите папку установщика:

sudo rm -rf /var/www/html/phpbb/install

Обновите страницу — форум должен заработать.


Чек-лист: что проверить после установки

  • [ ] Nginx работает: systemctl status nginxactive (running)
  • [ ] MariaDB работает: systemctl status mariadbactive (running)
  • [ ] PHP-FPM работает: systemctl status php$PHP_VERSION-fpmactive (running)
  • [ ] Сокет PHP-FPM существует: test -S /run/php/php-fpm.sock && echo "OK"
  • [ ] База данных создана: sudo mariadb -e "SHOW DATABASES LIKE 'phpbb';"
  • [ ] Пользователь БД создан: sudo mariadb -e "SELECT user FROM mysql.user WHERE user = 'phpbbuser';"
  • [ ] Файлы phpBB на месте: ls /var/www/html/phpbb/index.php
  • [ ] Права на файлы: ls -ld /var/www/html/phpbbwww-data:www-data
  • [ ] Директории для записи доступны: ls -ld /var/www/html/phpbb/cachedrwxrwxrwx
  • [ ] Папка /install удалена: test ! -d /var/www/html/phpbb/install && echo "OK"
  • [ ] Cron настроен: sudo cat /etc/cron.d/phpbb показывает строку с www-data
  • [ ] HTTPS работает (если настроен): открытие https://ваш-домен → зелёный замок

Удаление phpBB (полная очистка)

Шаг 1: Удалите файлы phpBB

sudo rm -rf /var/www/html/phpbb

Шаг 2: Удалите базу данных и пользователя

sudo mariadb -e "DROP DATABASE IF EXISTS phpbb; DROP USER IF EXISTS 'phpbbuser'@'localhost'; FLUSH PRIVILEGES;"

Шаг 3: Удалите конфигурацию Nginx

sudo rm -f /etc/nginx/sites-enabled/phpbb.conf
sudo rm -f /etc/nginx/sites-available/phpbb.conf
sudo systemctl reload nginx

Шаг 4: Удалите SSL-сертификат (если создавали)

sudo certbot delete --cert-name forums.example.com

Шаг 5: Удалите cron-задачу

sudo rm -f /etc/cron.d/phpbb

Шаг 6: Удалите пакеты LEMP (опционально — только если больше не нужны)

sudo apt remove --purge nginx mariadb-server php$PHP_VERSION-fpm php$PHP_VERSION-cli php$PHP_VERSION-mysql php$PHP_VERSION-mbstring php$PHP_VERSION-xml -y
sudo apt autoremove -y

⚠️ Внимание: Это удалит все сайты и базы данных на сервере. Выполняйте, только если сервер используется исключительно для этого форума.


Часто задаваемые вопросы (FAQ)

Вопрос: Почему нельзя использовать PHP 8.4 на Debian 13 с phpBB 3.3.x?
Ответ: Официальная документация phpBB 3.3.15 указывает максимальную версию PHP 8.3. С PHP 8.4 могут возникать ошибки совместимости. Для PHP 8.4 используйте phpBB 4.x.

Вопрос: Как узнать, какая версия PHP у меня активна?
Ответ: php -v в командной строке.

Вопрос: Нужно ли устанавливать phpMyAdmin для управления базой данных?
Ответ: Не обязательно. Все операции можно выполнять через командную строку sudo mariadb. Но если хотите, установите phpMyAdmin отдельно.

Вопрос: Как обновить phpBB до новой версии?
Ответ: Скачайте новый архив, распакуйте поверх существующих файлов (кроме config.php), затем запустите http://ваш-форум/install/app.php/update.

Вопрос: Поддерживает ли phpBB русский язык?
Ответ: Да. После установки вы можете скачать языковой пакет с официального сайта phpBB и установить его в панели администратора.


Заключение

Теперь phpBB установлен на вашем Debian с Nginx, MariaDB и PHP-FPM. Вы можете:

  • Управлять форумом через панель администратора (ACP)
  • Настраивать права пользователей, разделы и темы
  • Устанавливать расширения

Что дальше?

  • Изучите официальную документацию phpBB
  • Настройте резервное копирование базы данных и файлов форума
  • Установите phpMyAdmin для удобного управления базой данных
  • Настройте мониторинг сервера для отслеживания нагрузки