Ubuntu 22.04 安装 phpBB 指南
在 Ubuntu 22.04 上从零安装 phpBB 3.3.19 论坛:LNMP/LAMP 基础环境、官方完整包与安装向导全步骤实测、install 目录安全清理、登录发帖验证闭环与升级/多实例管理,双方案全流程实测。
Ubuntu 22.04 安装 phpBB 指南
目标:在 Ubuntu 22.04 服务器上从零安装 phpBB 3.3.19 论坛系统,覆盖 Nginx + PHP-FPM(主线实测)与 Apache2 + mod_php(备用实测)两套方案、安装向导全步骤、install 目录安全清理、登录与发帖验证闭环、升级与多版本管理,全部命令与回显均来自实测环境。
一、环境信息
本文全部步骤已在以下环境实测通过(命令输入与回显逐行对应):
- 操作系统:Ubuntu 22.04.5 LTS(x86_64)
- Web 服务器:Nginx 1.18.0(Ubuntu 官方源,方案 A)/ Apache 2.4.52(Ubuntu 官方源,方案 B)
- PHP:8.1.2-1ubuntu2.28(Ubuntu 22.04 官方源,FPM 与 mod_php 两种形态均实测)
- 数据库:MariaDB 10.6.23(Ubuntu 22.04 官方源)
- phpBB:3.3.19(官方完整包
phpBB-3.3.19.tar.bz2,2026-09-24 发布,撰写本文时 3.3 稳定线最新版) - Web 根目录:
/var/www/phpbb(方案 A 主实例)、/var/www/phpbb2(方案 B 备用实例) - 演示站点名称:phpBB 演示社区
- 演示账号:管理员
admin,密码q1w2e3r4;数据库账号phpbb/phpbb2,密码q1w2e3r4
二、前置条件
2.1 官方系统要求(3.3.19 包内 docs/INSTALL.html)
phpBB 3.3.x 对环境的要求如下(引自官方完整包随附 INSTALL 文档):
| 项目 | 要求 |
|---|---|
| PHP | 7.2.0 起步,最高支持到 PHP 8.3 |
| 必需 PHP 模块 | json、mbstring、XML 支持、getimagesize() 函数可用 |
| 可选 PHP 模块 | zlib(压缩)、FTP(远程)、GD(图形验证码/头像处理) |
| 数据库 | MySQL 4.1.3+(需 MySQLi)/ MariaDB 5.1+ / PostgreSQL 8.3+ / SQLite 3.6.15+ / MS SQL Server 2000+ / Oracle |
| Web 服务器 | 任何支持 PHP 的(Apache、Nginx 等) |
Ubuntu 22.04 官方源的 PHP 8.1 恰好落在支持区间内,数据库源里的 MariaDB 10.6 满足 5.1+ 要求,无需第三方软件源即可安装。
💡 技术拓展:PHP 有 FPM(FastCGI Process Manager)与 mod_php(Apache 模块)两种运行形态——
形态 原理 特点 适用 PHP-FPM 独立进程池,Web 服务器通过 FastCGI 反代 Nginx 必用;Apache 也可用;资源可控(pm.max_children 等) Nginx 方案、追求资源弹性 mod_php PHP 作为 Apache 模块嵌入 worker 进程 配置最简单,无 socket;但每个 Apache 进程都常驻 PHP 解释器 Apache 单服务器、求省事 本文方案 A 采用 PHP-FPM + Nginx(生产主流),方案 B 采用 mod_php + Apache(最简部署)。
2.2 服务器基础要求
- 一台 Ubuntu 22.04 服务器(本实测为单机全组件同机部署);
- 可访问公网(下载 phpBB 完整包与 apt 软件源;若在隔离网络,把 phpBB-3.3.19.tar.bz2 离线拷入即可,安装流程完全一致);
- 80/81 等 Web 端口未被占用(多 Web 服务共存时的端口规划见 5.3 节实测排障)。
三、版本选型说明
3.1 版本选择
phpBB 当前稳定线为 3.3.x,本文发布时最新稳定版为 3.3.19(发布于 2026-09-24,实查官方下载服务器 download.phpbb.com 与 GitHub Releases,查询日期 2026-10-22)。下一代 4.0.0 处于 alpha 阶段(仅 4.0.0-a1/a2),生产安装请选 3.3.19。版本号确认方法:
# 查看官方 3.3 发布目录,确认最新版本号
curl -sS https://download.phpbb.com/pub/release/3.3/ | grep -oE '3\.3\.[0-9]+' | sort -uV | tail -5
实测回显:
3.3.15
3.3.16
3.3.17
3.3.18
3.3.19
3.2 官方发布包类型对照(3.3.19 发布目录实查)
| 包类型 | 文件名(3.3.19 实际文件) | 用途 |
|---|---|---|
| 完整包 | phpBB-3.3.19.tar.bz2 / .zip | 新装首选,含全部文件与 install 安装器 |
| 更新包 | phpBB-3.3.18_to_3.3.19.zip 等 | 只含版本间变化的文件,用于升级 |
| 补丁包 | phpBB-3.3.19-patch.zip | diff 最小差异,高级用户手工打补丁 |
| 文件比对包 | phpBB-3.3.19-files.zip | 供深度改造过的站点做文件比对升级 |
| 跨版本升级包 | phpBB-3.2.11_to_3.3.19.zip 等 | 跨大版本升级 |
每种包旁边都有同名 .sha256 校验文件,下载后必须校验。
选型结论:新安装选完整包 phpBB-3.3.19.tar.bz2(约 4 MB,压缩后 7.54 MB 解压体积的包体),本文主线即用完整包。
四、方案 A:Nginx + PHP-FPM + MariaDB(主线实测)
4.1 方案说明
这是生产环境最主流的形态:Nginx 处理静态与转发、PHP-FPM 独立进程池跑 PHP、MariaDB 存数据。以下步骤从一台全新 Ubuntu 22.04 开始,逐步执行并给出真实回显。
4.2 安装基础组件
安装 Nginx、MariaDB 与 PHP 8.1(含 phpBB 必需/可选模块,一次性补齐):
sudo apt-get update
sudo apt-get install -y nginx mariadb-server php8.1-fpm php8.1-mysql php8.1-gd \
php8.1-curl php8.1-mbstring php8.1-xml php8.1-zip php8.1-intl php8.1-cli \
php8.1-bcmath php8.1-ldap unzip curl
实测回显(节选,依赖解析输出很长,保留首尾):
Reading package lists... Done
Building dependency tree... Done
...
Processing triggers for php8.1-cli (8.1.2-1ubuntu2.28) ...
Processing triggers for php8.1-fpm (8.1.2-1ubuntu2.28) ...
启动并自启三个服务(注意每条命令只操作一个服务单元):
sudo systemctl enable --now nginx
sudo systemctl enable --now php8.1-fpm
sudo systemctl enable --now mariadb
验证服务状态与版本:
systemctl is-active nginx php8.1-fpm mariadb
实测回显:
active
active
active
nginx -v; php -v | head -1; mariadb --version
实测回显:
nginx version: nginx/1.18.0 (Ubuntu)
PHP 8.1.2-1ubuntu2.28 (cli) (built: Oct 19 2026 18:54:45) (NTS)
mariadb Ver 15.1 Distrib 10.6.23-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
确认 phpBB 依赖的 PHP 模块已就绪:
php8.1 -m | grep -iE 'mysqli|gd|mbstring|xml|curl|intl|zip'
实测回显:
curl
gd
intl
libxml
mbstring
mysqli
SimpleXML
xml
xmlreader
xmlwriter
4.3 创建数据库与账号
phpBB 安装向导需要一个已存在(或有建库权限)的数据库与账号。用 root 进入 MariaDB 创建:
sudo mariadb
在 MariaDB 提示符内执行(账号密码按需替换,本文演示用 phpbb/q1w2e3r4):
CREATE DATABASE phpbb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'phpbb'@'localhost' IDENTIFIED BY 'q1w2e3r4';
GRANT ALL PRIVILEGES ON phpbb.* TO 'phpbb'@'localhost';
FLUSH PRIVILEGES;
EXIT;
⚠️ 注意:
utf8mb4_unicode_ci排序规则必须指定。MariaDB 10.6 的默认排序规则是utf8mb3_general_ci(三字节 utf8),存中文 emoji 等四字节字符会出问题;phpBB 官方安装器也会校验字符集。
验证建库结果:
sudo mariadb -e 'SHOW DATABASES;' | grep phpbb
实测回显:
phpbb
4.4 下载完整包并校验 sha256
sudo mkdir -p /opt/src && cd /opt/src
curl -sS -O https://download.phpbb.com/pub/release/3.3/3.3.19/phpBB-3.3.19.tar.bz2
curl -sS -O https://download.phpbb.com/pub/release/3.3/3.3.19/phpBB-3.3.19.tar.bz2.sha256
ls -la
实测回显:
total 4040
drwxr-xr-x 2 root root 4096 Oct 22 01:53 .
drwxr-xr-x 1 root root 4096 Oct 22 01:53 ..
-rw-r--r-- 1 root root 4122696 Oct 22 01:53 phpBB-3.3.19.tar.bz2
-rw-r--r-- 1 root root 87 Oct 22 01:53 phpBB-3.3.19.tar.bz2.sha256
sha256sum -c phpBB-3.3.19.tar.bz2.sha256
实测回显:
phpBB-3.3.19.tar.bz2: OK
校验输出必须是 OK。若报 FAILED,重新下载或改用 .zip 包对应校验文件。
4.5 部署到 /var/www/phpbb 并设置权限
cd /opt/src
tar -xjf phpBB-3.3.19.tar.bz2
sudo mkdir -p /var/www
sudo cp -a phpBB3 /var/www/phpbb
sudo chown -R www-data:www-data /var/www/phpbb
确认目录结构(36 个顶层条目,节选):
ls /var/www/phpbb | head -20
实测回显:
adm
app.php
assets
bin
cache
common.php
composer.json
composer.lock
config
config.php
cron.php
docs
download
ext
faq.php
feed.php
files
images
includes
index.php
💡 说明:
cp -a保留原始权限位。运行时 Web 进程(www-data)需要对config.php(安装器要写入)以及cache/、store/、files/、images/avatars/upload/(运行时要写)有写权限——整体 chown 给 www-data 是服务器场景下最省事的达标方式;官方 INSTALL 文档中的 666/777 权限方案是给无 shell 的虚拟主机 FTP 场景准备的。
4.6 配置 Nginx 站点
phpBB 官方在 docs/nginx.sample.conf 提供了 Nginx 参考配置(含屏蔽内部目录的安全规则),改两处即可用:server_name 与 root。创建 /etc/nginx/sites-available/phpbb.conf:
upstream phpbb-php {
server unix:/run/php/php8.1-fpm.sock;
}
server {
listen 80;
server_name _;
root /var/www/phpbb;
index index.php index.html index.htm;
access_log /var/log/nginx/phpbb.access.log;
error_log /var/log/nginx/phpbb.error.log warn;
location / {
try_files $uri $uri/ @rewriteapp;
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;
try_files $uri $uri/ /app.php$is_args$args;
fastcgi_pass phpbb-php;
}
location ~ /(config|common\.php|composer\.(json|lock)|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb(?!\w+)|store|vendor) {
deny all;
internal;
}
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}
location /install/ {
try_files $uri $uri/ @rewrite_installapp =404;
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;
try_files $uri $uri/ /install/app.php$is_args$args =404;
fastcgi_pass phpbb-php;
}
}
location @rewrite_installapp {
rewrite ^(.*)$ /install/app.php/$1 last;
}
location ~ /\.svn|/\.git {
deny all;
internal;
}
}
配置项逐条说明:
| 配置 | 作用 |
|---|---|
upstream phpbb-php | 指向 Ubuntu 打包的 PHP-FPM socket,路径固定为 /run/php/php8.1-fpm.sock(ls /run/php/ 实测可见) |
root /var/www/phpbb | phpBB 部署目录,与 4.5 节一致 |
location / 内嵌 \.php 段 | 所有 PHP 请求走 FPM,PATH_INFO 支持优雅路由(如 app.php/路由路径) |
deny all 那段 | 屏蔽 config.php、cache/、files/、includes/、vendor/ 等内部文件/目录的 HTTP 直读,是官方给的安全基线 |
location /install/ | 安装器专用入口,/install/ 下的请求重写到 /install/app.php |
启用站点并重载(先禁用默认站点避免冲突):
sudo ln -sf /etc/nginx/sites-available/phpbb.conf /etc/nginx/sites-enabled/phpbb.conf
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx
实测回显:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
此时访问站点根路径,phpBB 检测到未安装会 302 到安装器:
curl -sS -o /dev/null -w '%{http_code} -> %{redirect_url}\n' http://localhost/
实测回显:
302 -> http://localhost/install/app.php
4.7 运行安装向导
浏览器打开 http://<服务器地址>/(或直接访问 http://<服务器地址>/install/app.php),自动跳转到安装器。向导共 6 个界面步骤,实测字段与填值如下。
步骤 1:Introduction(欢迎页)。页面标题 "Introduction",正文为项目介绍;上方侧栏列出 Introduction / Support / License / Install / Convert / Update 几个标签页。点击 "Install" 标签进入 "Welcome to Installation" 页,页面提示官方支持数据库列表(MySQL/MariaDB/PostgreSQL/SQLite/MS SQL/Oracle,"Only those databases supported on your server will be displayed."),点击 Install 按钮开始。安装器会先自动完成 Introduction 与 Requirements(环境自检)两步,无需人工干预。
步骤 2:Administrator configuration(管理员配置)。实测表单字段:
| 字段 | 实测填值 | 说明 |
|---|---|---|
| Administrator username | admin | 站长账号名 |
| Contact e-mail address | admin@example.com | 站点联系邮箱 |
| Administrator password | q1w2e3r4 | 要求 6–30 字符 |
| Confirm administrator password | q1w2e3r4 | 重复输入 |
点击 Submit 提交。
步骤 3:Database configuration(数据库配置)。实测表单字段:
| 字段 | 实测填值 | 说明 |
|---|---|---|
| Database type | MySQL with MySQLi Extension(值 mysqli) | 下拉框只列出当前服务器可用的驱动 |
| Database server hostname | localhost | 数据库主机 |
| Database server port | 3306 | 留空也会按默认处理 |
| Database username | phpbb | 4.3 节创建的账号 |
| Database password | q1w2e3r4 | 对应密码 |
| Database name | phpbb | 4.3 节创建的库 |
| Prefix for tables in database | phpbb_ | 默认值即可 |
点击 Submit。填错时向导会直接报错并退回本页(例如密码错误报 "Could not connect to the database"),改对后重提即可。
步骤 4:Server configuration(服务器参数)。实测表单字段(默认值适配单域名标准部署,本实测全部保持默认):
| 字段 | 实测值 | 说明 |
|---|---|---|
| Cookie secure | No(默认) | 站点启用 HTTPS 后改为 Yes |
| Force server URL settings | No(默认) | 一般保持 No |
| Server protocol | http://(默认) | 上 HTTPS 后改 https:// |
| Domain name | localhost | 改成你的域名 |
| Server port | 80(默认) | HTTP 默认端口 |
| Script path | /(默认) | phpBB 部署在子目录时改如 /forum |
点击 Submit。
步骤 5:E-mail configuration(邮件配置)。实测表单字段(无 SMTP 时保持默认):
| 字段 | 实测值 | 说明 |
|---|---|---|
| Enable board-wide e-mails | Enabled(默认) | 关闭后全站不发邮件 |
| Use SMTP server for e-mail | No(默认) | Yes 则展开 SMTP 主机/端口/认证字段 |
点击 Submit。生产环境建议后续在 ACP 里配真实 SMTP(PHP mail() 依赖本机邮件代理,裸服务器发信到达率很差)。
步骤 6:Bulletin board configuration(版面信息)。实测表单字段:
| 字段 | 实测填值 | 说明 |
|---|---|---|
| Default board language | British English(值 en) | 初始默认语言;中文包安装后可再切换 |
| Board title | phpBB 演示社区 | 站点名 |
| Board description | phpBB 3.3.19 安装实测演示站 | 站点副标题 |
点击 Submit 后进入自动安装阶段,页面上会出现进度条并逐项打印任务(实测共 14 项,任务名与序号逐行照抄):
Creating configuration file (0/14 → 1/14)
Creating database schema file (1/14 → 2/14)
Setting up database (2/14,若库已预建会打印 Skip “installer.install_database.set_up_database” task)
Creating tables (2/14 → 3/14)
Adding default settings to the database (3/14 → 4/14)
Adding configuration settings (4/14 → 5/14)
Installing available languages (5/14 → 6/14)
Registering bots (6/14 → 7/14)
Registering AI crawlers (7/14 → 8/14)
Installing modules (8/14 → 9/14)
Creating search index (9/14 → 10/14)
Populating migrations (10/14 → 11/14)
Installing packaged extensions (11/14 → 12/14,成功项打印 Successfully enabled extension phpbb/viglink)
Sending notification e-mail (12/14 → 13/14)
完成后出现绿色成功框(实测原文):
The installer has finished successfully
Take me to the ACP
浏览器同时被种入会话 Cookie(实测前缀随机生成,形如 phpbb3_s11y5_sid、phpbb3_s11y5_u=2、phpbb3_s11y5_k),点击 "Take me to the ACP" 即可登录后台。
4.8 删除 install 目录(必做安全清理)
这是 phpBB 的硬性安全设计:install/ 目录存在期间,论坛对所有普通用户处于"不可用"状态。 实测验证这一行为:
以访客身份访问首页,返回的页面(节选):
phpBB 演示社区 - Information
...
Sorry but this board is currently unavailable.
用 admin 登录后再看首页,提示变为删除指引(节选):
Please delete, move or rename the install directory before you use your board.
If this directory is still present, only administrators will be able to access the board.
(成功页里 "Take me to the ACP" 能用、但前台打不开,就是同一个原因——不要以为是安装失败。)
删除 install 目录:
sudo rm -rf /var/www/phpbb/install
ls /var/www/phpbb | grep -c install || echo 'install dir removed'
实测回显:
0
install dir removed
再次访问首页,论坛恢复(curl 验证):
curl -sS http://localhost/index.php | grep -oE '<title>[^<]*</title>'
实测回显:
<title>phpBB 演示社区 - Index page</title>
首页此时已是完整版面视图:默认分类 "Your first category"、默认版面 "Your first forum" 与默认欢迎帖 "Welcome to phpBB3"(by admin)。
4.9 登录与发帖验证闭环
登录验证:浏览器访问 http://<服务器地址>/ucp.php?mode=login,输入 admin / q1w2e3r4 登录;成功后右上角显示用户名与 "User Control Panel",并能进入 ACP(adm/)。
发帖验证:进入默认版面 "Your first forum" → 点击 "Post a new topic" → 填写 Subject 与正文 → Submit。实测发布主题 "phpBB 3.3.19 安装验证:首个实测主题" 后,版面主题列表回显(节选):
Your first forum
- phpBB 3.3.19 安装验证:首个实测主题
- Welcome to phpBB3
数据层验证:确认安装版本与数据表规模(账号密码用 4.3 节创建的):
mariadb --default-character-set=utf8mb4 -uphpbb -pq1w2e3r4 phpbb \
-e "SELECT config_name, config_value FROM phpbb_config WHERE config_name IN ('version','sitename','board_startdate');"
实测回显:
config_name config_value
sitename phpBB 演示社区
board_startdate 1792634478
version 3.3.19
mariadb -uphpbb -pq1w2e3r4 phpbb -e 'SHOW TABLES;' | grep -c phpbb_
实测回显:
69
69 张表、版本号 3.3.19、站点名与发帖内容均已落库,安装闭环完成。
五、方案 B:Apache2 + mod_php(备用方案实测)
5.1 方案说明
Apache + mod_php 是最传统的 phpBB 托管形态,也是官方 INSTALL 文档默认叙述的环境:apt 一条命令装齐,<Directory> 里 AllowOverride All 即可支持 phpBB 的 .htaccess,配置心智负担最低。本方案在同一台服务器上与方案 A 并存实测(第二实例,库名 phpbb2,端口 81)。
5.2 安装与启用
sudo apt-get install -y apache2 libapache2-mod-php8.1
实测回显(节选):
Processing triggers for libapache2-mod-php8.1 (8.1.2-1ubuntu2.28) ...
sudo systemctl enable --now apache2
apache2 -v
apache2ctl -M | grep -i php
实测回显:
Server version: Apache/2.4.52 (Ubuntu)
php_module (shared)
php_module (shared) 出现即代表 mod_php 已加载。
5.3 端口调整与冲突排障(实测实录)
错误现象:本服务器 80 端口已被方案 A 的 Nginx 占用,直接启动 Apache 失败:
Active: failed (Result: exit-code) since Thu 2026-10-22 02:06:53 UTC; 5s ago
Oct 22 02:06:53 phpbb-server apachectl[17829]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
Oct 22 02:06:53 phpbb-server apachectl[17826]: Action 'start' failed.
定位:(98)Address already in use 指明端口被占;ss -ltnp | grep :80 可确认是 Nginx。
解决:让 Apache 改监听 81(多 Web 服务共存的常规做法)。编辑 /etc/apache2/ports.conf,把 Listen 80 改为 Listen 81:
sudo sed -i 's/^Listen 80/Listen 81/' /etc/apache2/ports.conf
grep -n '^Listen' /etc/apache2/ports.conf
实测回显:
5:Listen 81
sudo systemctl restart apache2 && systemctl is-active apache2
curl -sS -o /dev/null -w 'HTTP %{http_code}\n' http://localhost:81/
实测回显:
active
HTTP 200
⚠️ 注意:独立服务器上 Apache 独占 80 端口是常态,无需此步;这里保留排障实录是因为"80 被占导致 Apache 起不来"是双 Web 服务/迁移并存场景的高频问题。
5.4 第二实例部署与虚拟主机
准备第二套库与代码(演示多实例共存;单独服务器可沿用 4.3/4.5 节的单实例命名):
sudo mariadb -e "CREATE DATABASE phpbb2 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'phpbb2'@'localhost' IDENTIFIED BY 'q1w2e3r4';
GRANT ALL PRIVILEGES ON phpbb2.* TO 'phpbb2'@'localhost';
FLUSH PRIVILEGES;"
sudo cp -a /opt/src/phpBB3 /var/www/phpbb2
sudo chown -R www-data:www-data /var/www/phpbb2
创建 /etc/apache2/sites-available/phpbb2.conf:
<VirtualHost *:81>
ServerAdmin admin@example.com
DocumentRoot /var/www/phpbb2
<Directory /var/www/phpbb2>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/phpbb2_error.log
CustomLog ${APACHE_LOG_DIR}/phpbb2_access.log combined
</VirtualHost>
配置说明:AllowOverride All 让 phpBB 自带的 .htaccess(屏蔽内部文件)生效,作用等价于方案 A Nginx 配置里的 deny all 段;${APACHE_LOG_DIR} 是 Apache 内置变量(展开为 /var/log/apache2)。
sudo a2dissite 000-default
sudo a2ensite phpbb2
sudo apache2ctl configtest
sudo systemctl reload apache2
实测回显:
Site 000-default disabled.
Enabling site phpbb2.
Syntax OK
验证安装器入口(未安装的实例同样 302 跳安装器):
curl -sS -o /dev/null -w 'HTTP %{http_code} -> %{redirect_url}\n' http://localhost:81/
实测回显:
HTTP 302 -> http://localhost:81/install/app.php
5.5 第二实例安装向导与验证
浏览器访问 http://<服务器地址>:81/,向导步骤与 4.7 节完全一致(管理员 admin/q1w2e3r4;数据库字段对应 phpbb2 库与 phpbb2 账号;Domain name localhost、Server port 81、Script path /)。14 项安装任务跑完后打印同样的成功提示(实测原文):
The installer has finished successfully
Take me to the ACP
生成 /var/www/phpbb2/config.php(实测关键字段):
$dbms = 'phpbb\db\driver\mysqli';
$dbport = '3306';
$dbname = 'phpbb2';
$dbuser = 'phpbb2';
$dbpasswd = 'q1w2e3r4';
$table_prefix = 'phpbb_';
$acm_type = 'phpbb\cache\driver\file';
同样删除 install 目录并验证首页:
sudo rm -rf /var/www/phpbb2/install
curl -sS http://localhost:81/index.php | grep -oE '<title>[^<]*</title>'
实测回显:
<title>phpBB Apache 演示站 - Index page</title>
六、方案对比与选择建议
| 维度 | 方案 A:Nginx + PHP-FPM | 方案 B:Apache2 + mod_php |
|---|---|---|
| Web 服务器 | Nginx 1.18.0 | Apache 2.4.52 |
| PHP 运行形态 | FPM 独立进程(unix socket) | mod_php 嵌入 Apache |
| 配置文件 | /etc/nginx/sites-available/phpbb.conf | /etc/apache2/sites-available/phpbb2.conf + ports.conf |
| 内部文件防护 | Nginx deny all 规则段 | phpBB 自带 .htaccess(需 AllowOverride All) |
| systemd 服务名 | nginx / php8.1-fpm | apache2 |
| 资源特征 | 静态性能强,PHP 进程池独立可控 | 每个 Apache 进程内嵌 PHP,内存占用随连接数放大 |
| 适用场景 | 生产主流、并发较高 | 单机小站、已有 Apache 环境的迁入 |
选择建议:新装优先方案 A(Nginx + FPM),资源弹性与并发表现更好;已有 Apache 技术栈、或需要 .htaccess 生态(如共用其他 PHP 应用)时选方案 B。两方案的 phpBB 本体与数据库层完全一致,后续迁移只动 Web 层。
七、安装后配置说明
安装器只写入最小配置。三个常用落点:
1. config.php(数据库与运行环境,安装器生成,人工一般不改),主实例实测内容:
<?php
// phpBB 3.3.x auto-generated configuration file
// Do not change anything in this file!
$dbms = 'phpbb\db\driver\mysqli';
$dbhost = 'localhost';
$dbport = '3306';
$dbname = 'phpbb';
$dbuser = 'phpbb';
$dbpasswd = 'q1w2e3r4';
$table_prefix = 'phpbb_';
$phpbb_adm_relative_path = 'adm/';
$acm_type = 'phpbb\cache\driver\file';
@define('PHPBB_INSTALLED', true);
@define('PHPBB_ENVIRONMENT', 'production');
// @define('DEBUG_CONTAINER', true);
逐项含义:$dbms 数据库驱动类;$dbhost/$dbport/$dbname/$dbuser/$dbpasswd 连接四要素;$table_prefix 表前缀(同库多论坛时用来隔离);$phpbb_adm_relative_path 后台目录名;$acm_type 缓存驱动(默认文件缓存,可改 phpbb\cache\driver\redis);PHPBB_ENVIRONMENT=production 生产模式(开发调试可改 dev)。全量逐项详解见本专栏《phpBB 配置参数详解》。
2. 数据库运行参数(phpbb_config 表,ACP 图形化编辑的就是它):站点名、默认语言、Cookie 前缀、服务器参数等约 300 个键值对。常用查看命令:
mariadb --default-character-set=utf8mb4 -uphpbb -pq1w2e3r4 phpbb \
-e "SELECT config_name, config_value FROM phpbb_config WHERE config_name IN ('sitename','site_desc','default_lang','server_name','server_port','cookie_name','email_enable');"
实测回显:
config_name config_value
sitename phpBB 演示社区
site_desc phpBB 3.3.19 安装实测演示站
default_lang en
server_name localhost
server_port 80
cookie_name phpbb3_s11y5
email_enable 1
3. 中文语言包(中文站点必做):phpBB 官方维护简体中文包,ACP → Customise → Language management 上传安装,或从 phpBB 官网语言包页下载 zip 后解压到 language/ 与 styles/prosilver/theme/ 对应目录,再在 ACP 将默认语言改为 简体中文。
八、升级与多版本管理
升级:phpBB 官方升级路径是"更新包 + 网页更新器"。以 3.3.18 → 3.3.19 为例(更新包在 3.2 节对照表中,均可从 download.phpbb.com 取到):备份数据库与整站 → 下载 phpBB-3.3.18_to_3.3.19.zip 覆盖对应文件(保留 config.php 与 images/、files/、store/ 数据目录)→ 访问 install/app.php 进入 Update 标签页执行数据库迁移 → 更新完成后再次删除 install/ 目录。命令行党可改用 php install/phpbbcli.php update 完成同流程(CLI 子命令全量实测见本专栏《phpBB 常用 CLI 命令详解》)。
降级:phpBB 官方不支持降级(数据库迁移单向)。误升级的恢复手段是"整站文件 + 数据库备份回滚",因此升级前必须备份:
mariadb-dump -uphpbb -pq1w2e3r4 phpbb | gzip > phpbb_$(date +%F).sql.gz
多版本/多实例共存:5.4 节的实测模式即标准做法——每实例独立三件套:独立目录(/var/www/phpbb、/var/www/phpbb2)、独立数据库(phpbb、phpbb2)、独立虚拟主机/端口,互不影响;同库多论坛则用不同 $table_prefix 隔离。
九、常见问题(FAQ)
Q1:Apache 启动失败,报 (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80。
80 端口被其他 Web 服务(如 Nginx)占用。ss -ltnp | grep :80 确认占用方后,要么停掉对方,要么按 5.3 节把 Apache 改监听其他端口(ports.conf 的 Listen 行)。实测改 81 后 systemctl is-active apache2 恢复 active。
Q2:安装向导全部跑完、也点进 ACP 了,但前台一直显示 "Sorry but this board is currently unavailable."。
不是安装失败——install/ 目录还没删。phpBB 的安全设计是:该目录存在时,普通访客看到"站点不可用",管理员看到"Please delete, move or rename the install directory..."。按 4.8 节 sudo rm -rf /var/www/phpbb/install 后立即恢复,实测首页标题由 - Information 恢复为 - Index page。
Q3:发第一帖时报 "The submitted form was invalid. Try submitting again."。
phpBB 表单带"创建时间 + 令牌"双重防刷校验,页面打开后过快提交(脚本化秒发)会被判无效。实测复现路径:拿到发帖表单后立即 POST 即报此错;等待数秒再提交即成功。网页操作几乎不会遇到;写脚本压测/批量发帖时必须 sleep 间隔。
Q4:命令行查库时中文显示成 ???(如 site_desc 显示 phpBB 3.3.19 ???????)。
数据本身没坏——是 MariaDB 命令行客户端默认字符集显示问题。实测对比:默认字符集下 site_desc 回显 phpBB 3.3.19 ???????,加 --default-character-set=utf8mb4 后正常显示 phpBB 3.3.19 安装实测演示站;网页端中文始终正常。给 mariadb/mysql 命令统一带上该参数即可。
Q5:访问安装器直接报 "You are running an unsupported PHP version (x.y.z). Please upgrade to PHP 7.2.0 or higher before trying to install or update to phpBB 3.3"。
安装器入口 install/app.php 对 PHP 版本有硬校验(低于 7.2.0 直接终止)。Ubuntu 22.04 官方源 PHP 8.1 无此问题;若在老系统上部署,需先升级 PHP 到 7.2.0–8.3 区间(参考 2.1 节要求表)。
Q6:安装器数据库一步报 "Could not connect to the database"。
逐项核对 4.3 节:库名/用户名/密码、dbhost=localhost(本机 socket 连接)、以及账号 GRANT 的库范围。快速自检:mariadb -uphpbb -pq1w2e3r4 phpbb -e 'SELECT 1;' 能返回 1 说明账号没问题,问题多半在向导填值。
十、卸载与清理
完整卸载 = 代码目录 + 数据库 + Web 配置 + 服务(按需保留备份):
mariadb-dump -uphpbb -pq1w2e3r4 phpbb | gzip > /root/phpbb_backup.sql.gz
sudo rm -rf /var/www/phpbb
sudo mariadb -e "DROP DATABASE phpbb; DROP USER 'phpbb'@'localhost';"
sudo rm -f /etc/nginx/sites-enabled/phpbb.conf /etc/nginx/sites-available/phpbb.conf
sudo nginx -t && sudo systemctl reload nginx
若要连基础组件一起清(确认服务器上没有其他应用依赖后再执行):
sudo apt-get purge -y nginx php8.1-fpm apache2 libapache2-mod-php8.1
sudo apt-get purge -y mariadb-server
sudo rm -rf /opt/src/phpBB-3.3.19.tar.bz2 /opt/src/phpBB3
卸载后验证:
curl -sS -o /dev/null -w '%{http_code}\n' http://localhost/ ; ls /var/www/phpbb 2>&1
实测回显(卸载 phpBB 目录但保留 Nginx 时的形态):
404
ls: cannot access '/var/www/phpbb': No such file or directory
十一、参考链接
- phpBB 3.3.19 完整包下载:https://download.phpbb.com/pub/release/3.3/3.3.19/phpBB-3.3.19.tar.bz2
- 官方发布目录(版本与校验文件):https://download.phpbb.com/pub/release/3.3/
- 官方安装文档(包内
docs/INSTALL.html):https://www.phpbb.com/support/docs/en/3.3/ug/install/ - Nginx 官方示例配置:phpBB-3.3.19 包内
docs/nginx.sample.conf - GitHub 仓库:https://github.com/phpbb/phpbb
- 站内配套阅读:《phpBB 介绍与选型指南》、《Ubuntu 22.04 安装 Flarum 指南》