跳到主要内容

论坛

概述

生如夏花论坛基于 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.jsoncomposer.lock 文件的修改。部署时会按这两个文件的内容重新安装各插件。

Sonic 配置

构建

GitHub Actions 自动构建

部署

数据的备份和恢复

备份脚本在备份时会将 publicstorage 两个数据卷的内容打包到一个以日期为文件名的 .tar.gz 文件中,将 MySQL 数据库 dump 到 .sql.gz 中。如要从其中恢复数据,请先运行各容器,然后用 docker cp 将压缩文件拷贝到相应的容器中,然后运行解压缩或 MySQL 导入。

附录

健康检测

https://discuss.flarum.org/d/10056-migratetoflarum-lab-the-health-scanner-for-flarum

缓存的问题及解决

https://1024.day/d/1252