Flarum 搭建记录

QiuSYan ( ᗜ ‸ ᗜ )

AI 摘要

文章标题:Flarum 论坛搭建教程:避开远程数据库挑战 主要内容: 1. 搭建背景:作者在资源有限的条件下,选择搭建 Flarum 论坛,并决定使用云端数据库 TiDB Cloud 以解决 Mysql 和 Postgresql 数据库不兼容的问题。 2. 环境准备:服务器配置(Ubuntu 22.04)、域名、服务器性能要求、选择 TiDB Cloud 的原因及注意事项。 3. 安装步骤: - 更新系统源和软件包 - 安装 PHP 及相关拓展 - 使用 Composer 安装 Flarum,避开 Composer 安装的内存限制 - 安装过程中修改 DatabaseConfig.php 以支持 TLS 连接 TiDB 4. 避免的问题:远程数据库在生产环境中的性能影响,尤其是 Flarum 这类高查询频率应用。 5. 小结:强调了选择云数据库和修改配置文件的重要性,以及对搭建过程的记录目的。 适用读者:对 Flarum 论坛有兴趣的开发者,特别是面临类似资源限制和数据库选择问题的人。

最近心血来潮想搞个论坛玩玩,就顺便记录一下搭建过程吧。

小心高血压

此文仅用于记录一个搭建思路,千万千万千万不要学我用远程数据库
远程数据库真的不能用在生产环境,像 Umami 这样的还好,没多少查询,但是如果像是 Flarum 这种高频查询的程序嘛…
3/4 的时间都耗在数据库查询上了

干杯 - 五月天

作词:五月天 阿信

作曲:五月天 阿信

编曲:五月天 / 于京延

会不会有一天时间真的能倒退

退回你的我的回不去的悠悠的岁月

也许会有一天世界真的有终点

也要和你举起回忆酿的甜

和你再干一杯

如果说要我选出代表青春那个画面

浮现了那滴眼泪那片蓝天那年毕业

那一张边哭边笑还要拥抱是你的脸

想起来可爱可怜

可歌可泣可是多怀念

怀念总是突然怀念不谈条件

当回忆冲破考卷冲出岁月在我眼前

我和你留着汗水喝着汽水在操场边

说好了无论如何

一起走到未来的世界

现在就是那个未来那个世界

为什么你的身边我的身边

不是同一边

友情曾像诺亚方舟坚强誓言

只是我望着海面

等着永远模糊了视线

会不会有一天时间真的能倒退

退回你的我的回不去的悠悠的岁月

也许会有一天世界真的有终点

也要和你举起回忆酿的甜

和你再干一杯

这些年买了四轮买了手表买了单眼

却发现追不到的停不了的还是那些

人生是只有认命只能宿命只好宿醉

只剩下高的笑点

低的哭点却没成熟点

成熟就是幻想幻灭一场磨炼

为什么只有梦想越磨越小小到不见

有时候好想流泪好想流泪却没眼泪

期待会你会不会

他会不会开个同学会

他在等你你在等我我在等谁

又是谁孩子没睡

电话没电心情没准备

天空不断黑了又亮亮了又黑

那光阴沧海桑田

远走高飞再没力气追

会不会有一天时间真的能倒退

退回你的我的回不去的悠悠的岁月

也许会有一天世界真的有终点

也要和你举起回忆酿的甜

和你再干一杯

会不会有一天时间真的能倒退

退回你的我的回不去的悠悠的岁月

也许会有一天世界真的有终点

也要和你举起回忆酿的甜

和你再干一杯

终究会有一天我们都变成昨天

是你陪我走过一生一回匆匆的人间

有一天就是今天今天就是有一天

说出一直没说对你的感谢

和你再干一杯

再干一杯永远

喝了就能万岁岁岁和年年

时间都停了他们都回来了

怀念的人啊等你的来到

时间都停了他们都回来了

怀念的人啊等你的来到

弦乐编写:于京延 + 李琪

弦乐演奏:李琪北京室内乐团

冲绳三弦:REI (Spoon de chop)

和声演唱:士杰 + 阿璞 (八三夭)

合唱:强辩 + 阿邦 + 小凯 + 阿沚

00:00 / 04:49
  1. 1 干杯 五月天

Flarum 简介

Flarum 是一款非常简洁的开源论坛软件。 它响应快速、简便易用,拥有打造一片成功的社区所需的所有功能。 它也极其可扩展,允许达到终极的可定制性。

Flarum 的前身是 esoTalkFluxBB, 它生来就被设计如此:

  • 快速、简单。 不杂乱不臃肿,没有复杂的依赖关系。 Flarum 使用 PHP 构建,因此很容易被部署。 界面采用高性能且小巧的 JavaScript 框架 Mithril
  • 漂亮、响应式。 以人为本的论坛软件。 Flarum 被精心设计以在不同平台间保持一致性和直观性,开箱即用。
  • 强大、可扩展。 您可以客制化、扩展或集成 Flarum 以满足您的社区需求。 Flarum 基于 MIT 协议 发布。
  • 免费、开源。 Flarum 以 MIT 许可证 发布。

你可以在这里阅读更多关于我们 对于 Flarum 的哲学和价值观 的信息。

以上内容来自于 Flarum Documentation

官方论坛:Flarum 社区 — Flarum Community

官方文档:README | Flarum Documentation

中文社区论坛:Flarum 中文社区

需要的东西

  • 一台服务器,最好配置高一点(本文用的是 Ubuntu 22.04
  • 一个域名
  • 一台电脑
  • 一个脑子

碎碎念

真的不要选那种丐版服务器

在开始之前讲一下我的思路吧。
由于我能用于搭建网站的服务器有且仅有一台,而且还是那种 1H512M 5GSSD 的超级丐版机子
然后呢,我又想同时部署皮肤站和论坛,所以在服务器上面安装 Mysql 是不大可能了的

因为 BlessingSkin 用的是 Postgresql,而目前版本的 Flarum 仅支持 Mysql 作为数据库。如果把数据从 Postgresql 迁移到 Mysql 会很麻烦 主要是我不会

于是我选择了云端数据库作为我的论坛数据库,论坛的本体还是在我这服务器上的。
Flarum 要蛮多 php 拓展的,我到哪去给你找能满足这些条件的免费服务啊.jpg

于是我就开始找免费的支持 Mysql 的云端数据库,我选的是 TiDB Cloud.

但是问题来了,要连接 TiDB 数据库的话需要使用 TLS,而安装 Flarum 的时候并没有相关选项,得修改代码
这就是我要水啊不是,写这篇文章的原因,不然直接看文档安装就行

开始安装

系统更新

先换源,如果你的机子是海外的可以不用换

1
2
3
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/http:/https:/g' /etc/apt/sources.list

更换为清华源,其中 中间那行是更换 安全更新 的源。由于镜像站更新有时不及时,使用镜像源的安全更新源可能会导致你无法及时获取到最新的安全更新,介意的可以不换

然后一套连招更新系统

1
2
# 更新软件源 && 更新软件包 && 删除旧软件包
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y

安装一些小工具

1
sudo apt install vim git zip -y

安装 PHP 及其相关拓展

1
sudo apt install apache2 php php-gd php-mbstring php-curl php-mysql php-zip -y

验证 php 版本:

1
php -v

安装 Composer

为了方便,我直接用的是腾讯源的文件

1
2
3
4
5
6
7
8
# 下载本体文件
wget https://mirrors.tencent.com/composer/composer.phar

# 赋予执行权限
sudo chmod +x composer.phar

# 全局启用 `composer` 指令
sudo mv composer.phar /usr/local/bin/composer

切换源至腾讯源

1
composer config -g repos.packagist composer https://mirrors.tencent.com/composer/

验证安装

1
composer -V

安装 Flarum

通过命令行安装

Flarum 官方给出的建议是使用 Composer 安装,指令如下:

1
composer create-project flarum/flarum .

注意:是要在 你想安装 Flarum 的 空目录 里面执行

比如说,你想把 flarum 安装在 /var/www/flarum ,那么你就去 /var/www 下新建一个名为 flarum 的目录,然后 cd 进去,执行指令就行了

通过解压缩归档进行安装

我的安装方法是直接解压文件,因为 Composer 安装项目依赖的时候会占用比较高的内存,我这个小破服务器一用 Composer 安装就被 Kill 了(悲

创建目录

1
2
mkdir /var/www/flarum
cd /var/www/flarum

下载压缩文件

1
wget https://github.com/flarum/installation-packages/raw/main/packages/v1.x/flarum-v1.x-php8.1.zip

官方给出的所有已经打包好了的 Flarum 本体文件下载链接:安装 | Flarum Documentation,根据你自己的 php 版本和需求来选择

随后解压

1
unzip *.zip

修改文件权限

1
2
# 自行修改路径
chown -R www-data:www-data /var/www/flarum

修改安装文件

如果你使用的是本地数据库或者其他不用 TLS 连接的数据库可跳过此节

前面说了,我用的是 TiDB,它连接到数据库时需要用 TLS 连接,不然会报错

编辑 vendor/flarum/core/src/Install/DatabaseConfig.php 文件,修改内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php

/*
* This file is part of Flarum.
*
* For detailed copyright and license information, please view the
* LICENSE file that was distributed with this source code.
*/

namespace Flarum\Install;

use Illuminate\Contracts\Support\Arrayable;
use PDO;

class DatabaseConfig implements Arrayable
{
private $driver;
private $host;
private $port;
private $database;
private $username;
private $password;
private $prefix;
private $sslCa;

public function __construct(
$driver,
$host,
$port,
$database,
$username,
$password,
$prefix,
$sslCa = '/etc/ssl/certs/ca-certificates.crt'
) {
$this->driver = $driver;
$this->host = $host;
$this->port = $port;
$this->database = $database;
$this->username = $username;
$this->password = $password;
$this->prefix = $prefix;
$this->sslCa = $sslCa;

$this->validate();
}

public function toArray()
{
$config = [
'driver' => $this->driver,
'host' => $this->host,
'port' => $this->port,
'database' => $this->database,
'username' => $this->username,
'password' => $this->password,
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => $this->prefix,
'strict' => false,
'engine' => 'InnoDB',
'prefix_indexes' => true,
'options' => [
PDO::MYSQL_ATTR_SSL_CA => $this->sslCa,
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => true
]
];

return $config;
}


private function validate()
{
if (empty($this->driver)) {
throw new ValidationFailed('Please specify a database driver.');
}

if ($this->driver !== 'mysql') {
throw new ValidationFailed('Currently, only MySQL/MariaDB is supported.');
}

if (empty($this->host)) {
throw new ValidationFailed('Please specify the hostname of your database server.');
}

if (! is_int($this->port) || $this->port < 1 || $this->port > 65535) {
throw new ValidationFailed('Please provide a valid port number between 1 and 65535.');
}

if (empty($this->database)) {
throw new ValidationFailed('Please specify the database name.');
}

if (! is_string($this->database)) {
throw new ValidationFailed('The database name must be a non-empty string.');
}

if (empty($this->username)) {
throw new ValidationFailed('Please specify the username for accessing the database.');
}

if (! is_string($this->database)) {
throw new ValidationFailed('The username must be a non-empty string.');
}

if (! empty($this->prefix)) {
if (! preg_match('/^[\pL\pM\pN_]+$/u', $this->prefix)) {
throw new ValidationFailed('The prefix may only contain characters and underscores.');
}

if (strlen($this->prefix) > 10) {
throw new ValidationFailed('The prefix should be no longer than 10 characters.');
}
}
}
}

主要是加了 PDO::MYSQL_ATTR_SSL_CAPDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT 这两个配置项,用于默认对数据库连接启用 TLS

Apache 相关

新建 Apache 站点配置文件 /etc/apache2/sites-available/flarum.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<IfModule mod_ssl.c>
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost

# 此处修改为你的对应目录
DocumentRoot /var/www/flarum/public

# 此处修改为你自己的论坛域名
ServerName flarum.qiusyan.us.kg

# 此处修改为你自己的证书文件
SSLCertificateFile /etc/letsencrypt/live/flarum.qiusyan.us.kg/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/flarum.qiusyan.us.kg/privkey.pem

# 此处修改为你的对应目录
<Directory /var/www/flarum/public>
AllowOverride All
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

证书文件生成相关可前往 Blessing Skin 皮肤站搭建 / 备份记录 - 配置 SSL 证书 部分查看,此处不再赘述

站点和模块相关配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 禁用默认站点
sudo a2dissite 000-default.conf

# 启用 flarum 站点
sudo a2ensite flarum.conf

# 启用 rewrite 模块
sudo a2enmod rewrite

# 启用 ssl 模块
sudo a2enmod ssl

# 重新加载 Apache 服务使配置生效
sudo systemctl restart apache2.service

连接数据库

这部分没什么好说的,打开浏览器,输入你的域名,进入安装页面,正常安装就行

最后

其他的扩展 / 配置啥的自行探索吧,实在是不想写了(x

如果你不想搞也可以用 Freeflarm
只是官方目前还没有上架 支持中文搜索 的扩展,所以使用体验可能不是很好
真要搞个论坛还是建议自己整个服务器搭一个

话说我想在我那小机子上面试试同时安装 Mysql 和 Postgresql(挠头
不知道会不会炸(x

  • 标题: Flarum 搭建记录
  • 作者: QiuSYan
  • 创建于 : 2024-11-20 15:35:29
  • 更新于 : 2025-03-12 17:36:20
  • 链接: https://blog.qiusyan.top/posts/27098.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
Nickname
Email
Website
0/500
  • OωO
  • |´・ω・) ノ
  • ヾ (≧∇≦*) ゝ
  • (☆ω☆)
  • (╯‵□′)╯︵┴─┴
  •  ̄﹃ ̄
  • (/ω\)
  • ∠( ᐛ 」∠)_
  • (๑•̀ㅁ•́ฅ)
  • →_→
  • ୧(๑•̀⌄•́๑)૭
  • ٩(ˊᗜˋ*)و
  • (ノ °ο°) ノ
  • (´இ皿இ`)
  • ⌇●﹏●⌇
  • (ฅ´ω`ฅ)
  • (╯°A°)╯︵○○○
  • φ( ̄∇ ̄o)
  • ヾ (´・ ・`。) ノ "
  • (ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
  • (ó﹏ò。)
  • Σ(っ °Д °;) っ
  • (,,´・ω・)ノ"(´ っ ω・`。)
  • ╮(╯▽╰)╭
  • o(*////▽////*)q
  • >﹏<
  • ( ๑´•ω•) "(ㆆᴗㆆ)
  • 😂
  • 😀
  • 😅
  • 😊
  • 🙂
  • 🙃
  • 😌
  • 😍
  • 😘
  • 😜
  • 😝
  • 😏
  • 😒
  • 🙄
  • 😳
  • 😡
  • 😔
  • 😫
  • 😱
  • 😭
  • 💩
  • 👻
  • 🙌
  • 🖕
  • 👍
  • 👫
  • 👬
  • 👭
  • 🌚
  • 🌝
  • 🙈
  • 💊
  • 😶
  • 🙏
  • 🍦
  • 🍉
  • 😣
  • 颜文字
  • Emoji
  • Bilibili
0 comments
No comment