论坛
概述
生如夏花论坛基于 Flarum 开源论坛框架二次开发,该框架基于 PHP,优点是有较多插件可供扩展功能使用。
将其容器化后,Flarum(基于 Docker PHP FPM 镜像)、Nginx、MySQL 分别为一个容器,另有一个 Sonic 容器用于中文搜索。
开发
环境文件
克隆仓库后,准备一个 .env
文件,设置以下变量(例):
HTTP_PORT=4000
MYSQL_DATABASE=flarum
MYSQL_USER=flarum
MYSQL_PASSWORD=xxxx
MYSQL_ROOT_PASSWORD=xxxx
Nginx 配置
- 在
nginx.conf
中调整client_max_body_size=1024M
- 在
conf.d/default.conf
中配置域名,该其他内容来自 Flarum 脚手架文件中自带的.nginx.conf
PHP 配置
- 在
php/flarum.ini
中调整memory_limit=256M, post_max_size=1024M, upload_max_filesize=1024M
- 在
php/zzz-flarum.conf
中调整 FPM 子进程数量pm.max_children = 5
(默认值就是 5,目前没有改动,但以后可能需要)
Flarum 配置
config.php
这里存放了一些常用配置,部分内容是从环境变量中来的,便于开发环境调试。
插件的安装和管理
在插件网站上找到需要的插件,在本地开发时用 docker exec bbs-flarum-1 /bin/sh
进入容器并运行 composer require xxx:*
安装,这会导致 composer.json
和 composer.lock
文件的修改。部署时会按这两个文件的内容重新安装各插件。
Sonic 配置
构建
GitHub Actions 自动构建
部署
数据的备份和恢复
备份脚本在备份时会将 public
和 storage
两个数据卷的内容打包到一个以日期为文件名的 .tar.gz
文件中,将 MySQL 数据库 dump 到 .sql.gz
中。如要从其中恢复数据,请先运行各容器,然后用 docker cp
将压缩文件拷贝到相应的容器中,然后运行解压缩或 MySQL 导入。
附录
健康检测
https://discuss.flarum.org/d/10056-migratetoflarum-lab-the-health-scanner-for-flarum