在 Ubuntu 20.04 上安装带有 LAMP 堆栈的 phpBB

介绍

phpBB 是最古老的开源论坛软件之一,至今仍在积极开发中。 本指南解释了如何在 Ubuntu 20.04 上使用 Apache、MariaDB 和 PHP 安装 phpBB,并使用免费的 Let’s Encrypt TLS 证书设置 HTTPS。

先决条件

使用 LAMP 堆栈部署 Ubuntu 20.04 服务器。 按照 Vultr 的最佳实践指南创建 sudo 用户并更新 Ubuntu 服务器。 (可选)配置 Ubuntu 防火墙并打开端口 80、443 和 22。

确保更换 phpbb.example.com 在代码示例中使用您服务器的完全限定域名或 IP 地址。

1. 安装软件包

phpBB 需要以下软件:

一个 Web 服务器,例如 Apache。 一个 SQL 数据库系统,例如 MariaDB。 PHP 7.1.3 到并包括 PHP 7.4。 以下 PHP 模块:

json, mbstring, 和 xml
(可选的) gd

您的 LAMP 服务器预装了 Apache 2.4、MariaDB 10.3 和 PHP 7.4,因此您只需安装必要的 PHP 模块。

通过 SSH 以非 root sudo 用户身份登录服务器。

安装所需的模块。

$ sudo apt -y install php7.4-gd php7.4-json php7.4-mbstring php7.4-xml

对于生产使用,您应该禁用预安装的 Xdebug 模块,因为它会降低 PHP 性能。

打开 Xdebug 模块配置文件。

$ sudo nano /etc/php/7.4/mods-available/xdebug.ini

; 之前 zend_extension=xdebug.so 指令,如图所示。

;zend_extension=xdebug.so

保存文件并退出。

2. 配置时区

您的 LAMP 服务器已预先配置为 UTC 时区。 如果您想使用不同的时区,请按照以下说明操作。

列出操作系统支持的所有时区。 使用 UP / DOWN 键在列表中移动,然后按 Q 退出。

$ timedatectl list-timezones

从列表中复制适当的时区,例如, 美国/纽约. 然后使用该时区更新系统。

$ sudo timedatectl set-timezone America/New_York

编辑 PHP-FPM 配置文件以告诉 PHP 使用新的时区。

$ sudo nano /etc/php/7.4/fpm/pool.d/www.conf

找出 date.timezone 指令,然后将其值从 UTC 到您的时区,如图所示。

php_admin_value[date.timezone] = America/New_York

保存配置文件并退出。

检查新配置。

$ sudo php-fpm7.4 -t

3. 创建数据库

以 MariaDB 身份连接到 MariaDB 命令行 root 用户。

$ sudo mariadb

创建一个新的 dbname phpBB 的数据库。

MariaDB [(none)]> CREATE DATABASE dbname;

创建一个名为的 MariaDB 用户 dbuser 并将其所有权限授予 dbname 数据库。 代替 dbpassword 使用强密码。

MariaDB [(none)]> GRANT ALL PRIVILEGES on dbname.* to 'dbuser'@'localhost' IDENTIFIED BY 'dbpassword';
MariaDB [(none)]> FLUSH PRIVILEGES;

退出 MariaDB 命令行。

MariaDB [(none)]> exit

4.安装phpBB

将源代码存档从 GitHub 下载到主目录。

$ cd ~
$ wget https://github.com/phpbb/phpbb/archive/refs/tags/release-3.3.4.tar.gz

在撰写本文时,phpBB 的最新稳定版本是 3.3.4. 但是,当然,您可以随时访问 phpBB 发布页面 以获取最新版本。

提取存档。

$ tar xzf release-3.3.4.tar.gz

将工作目录更改为公共代码目录。

$ cd phpbb-release-3.3.4/phpBB

解压出来的目录已经有 composer.phar 程序。 使用它来安装依赖项。

$ ../composer.phar install --no-dev -o

将公共代码目录同步到 /var/www/html 文档根目录并删除那里的所有现有文件。

$ sudo rsync -a --delete ./ /var/www/html

制作 www-data 拥有者 /var/www/html 以便 Apache 和 PHP 可以访问该目录。

$ sudo chown -R www-data:www-data /var/www/html

删除下载的存档和解压缩的目录。

$ cd ~
$ rm -fr phpbb-release-3.3.4/ release-3.3.4.tar.gz

5.配置Apache

打开默认的虚拟主机配置文件。

$ sudo nano /etc/apache2/sites-enabled/http.conf

任何以 # 是评论。

将以下指令粘贴到 <VirtualHost *:80> 线。

<Directory /var/www/html/cache/*>
    Require all denied
</Directory>
<Directory /var/www/html/cache>
    Require all denied
</Directory>

<Directory /var/www/html/files/*>
    Require all denied
</Directory>
<Directory /var/www/html/files>
    Require all denied
</Directory>

<Directory /var/www/html/includes/*>
    Require all denied
</Directory>
<Directory /var/www/html/includes>
    Require all denied
</Directory>

<Directory /var/www/html/phpbb/*>
    Require all denied
</Directory>
<Directory /var/www/html/phpbb>
    Require all denied
</Directory>

<Directory /var/www/html/store/*>
    Require all denied
</Directory>
<Directory /var/www/html/store>
    Require all denied
</Directory>

<Directory /var/www/html/vendor/*>
    Require all denied
</Directory>
<Directory /var/www/html/vendor>
    Require all denied
</Directory>

这些指令阻止用户访问 敏感文件.

找出 ServerName 指令,删除前导 # 字符,并将其值更改为您服务器的完全限定域名或 IP 地址,如图所示。

ServerName phpbb.example.com

保存配置文件并退出。

检查新配置。 确保你看到 Syntax OK 在输出中。

$ sudo apache2ctl configtest

禁用默认的 HTTPS 配置。

$ sudo a2dissite https.conf

重新加载 Apache 以激活新配置。

$ sudo systemctl reload apache2.service

6.(可选)配置HTTPS

如果您拥有有效的域名,则可以免费为您的 phpBB 网站设置 HTTPS。 您可以使用 Let’s Encrypt 的 Certbot 程序获得免费的 TLS 证书。

跟着 安装证书机器人 本 Vultr 指南的部分使用 Snap 安装 Certbot。

运行 Certbot 以获取并安装 Apache 的 Let’s Encrypt 证书。 代替 [email protected] 如果需要,请附上您的电子邮件。

$ sudo certbot --apache --redirect -d phpbb.example.com -m [email protected] --agree-tos --no-eff-email

Certbot 还设置了一个 systemd 计时器来自动更新此证书。 运行以下命令以验证计时器是否处于活动状态。

$ systemctl list-timers | grep 'certbot|ACTIVATES'

现在您的 phpBB 网站可以在 SSL 实验室测试.

7. 完成设置

重新启动服务器。

$ sudo reboot

等待操作系统启动。

打开浏览器并输入 http://phpbb.example.com 网址。

出现 phpBB 安装页面。 点击 安装 选项卡,然后单击 安装 按钮。 这 管理员配置 形式出现。 输入您选择的管理员用户名、电子邮件和密码,然后单击 提交 按钮。

数据库配置 形式出现。

为了 数据库类型 选项,选择 带有 MySQLi 扩展的 MySQL. 为了 数据库服务器主机名或 DSN 选项,输入 localhost. 为了 数据库服务器端口 选项,将其留空。 为了 数据库用户名, 数据库密码, 和 数据库名称 选项,输入您在第 3 节中创建的相应值。对于 数据库表的前缀 选项,接受默认值。

然后点击 提交 按钮。

接受其余表单的所有默认值,然后单击 提交 按钮。

完成后,点击 ACP 访问链接 管理控制面板 (ACP)。 ACP 为您提供了各种设置来自定义您的大部分 phpBB 功能。 有关更多详细信息,请阅读 phpBB 管理指南.

再次以非root sudo 用户身份通过​​SSH 登录服务器。

删除不需要的 docs 目录。

$ sudo rm -fr /var/www/html/docs

防止意外更改 config.php 文件。

$ sudo chmod 644 /var/www/html/config.php
$ sudo chown root:root /var/www/html/config.php

删除 install 目录来激活phpBB。

$ sudo rm -fr /var/www/html/install

您已成功安装 phpBB。 现在您的论坛已准备好为访问者提供服务。

参考

要了解有关 phpBB 的更多信息,请参阅以下资源:

phpBB 用户指南
phpBB知识库

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com