Flarum论坛的安装与迁移

注:Flarum在发文时仍处于beta状态,若有改动,以官方文档为准。

环境配置

php

启用sury软件源以安装php

1
2
3
4
5
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg 
apt install apt-transport-https
sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt update
apt install php7.4 php7.4-fpm php7.4-xml php7.4-gd php7.4-json php7.4-mbstring php7.4-mysql php7.4-zip php7.4-opcache php7.4-curl

mysql

1
apt install mariadb-server

注意,迁移时,要保持双端数据库版本一致

Composer

访问Composer的Download页,复制Command-line installation的命令以安装

执行以下命令使composer全局可用

1
mv composer.phar /usr/local/bin/composer

开始安装

主要参考flarum文档

新建一个空目录,用以下命令安装flarum:

1
composer create-project flarum/flarum . --stability=beta

根据你选择的反代程序,配置URL 重写.

要特别注意文件夹的权限

1
2
chmod 775 -R /path/to/directory
chown -R www-data:www-data /path/to/directory

配置数据库

输入mysql进行交互:

1
2
3
4
CREATE DATABASE flarumdb;
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON flarumdb.* To 'newuser'@'localhost';
exit

分别是创建数据库,新建用户,授权用户对数据库的访问,退出交互。
在上面的示例中,数据库名称为flarumdb, 用户名/密码为newuser/password, 根据实际需求修改。

安装Nginx

本文反代以Nginx为例

1
apt install nginx

下面是一个临时配置的示例,看着改路径,证书等会再配,注意root是public文件夹

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80;
listen [::]:80;
root /www/bbs/public;
index index.php index.html index.htm;
server_name example.com;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
include /www/bbs/.nginx.conf;
}

保存配置后重启nginx

1
systemctl restart nginx

访问网站,如果权限设置没有问题,会让你指定用户和数据库(相关配置存储在config.php)。

配置证书

acme.sh申请证书,具体过程略。

个人使用的是用Cloudfare DNS API签发Wildcard证书:
(免费域名无权调用Cloudflare API,请使用http方式验证)

1
2
3
export CF_Key="Your_CloudFlare_API_Key"
export CF_Email="Your_CloudFlare_Account_email"
acme.sh --issue --dns dns_cf -d "example.tld" -d "*.example.tld"

记得installcert时,配置 –reload-cmd “systemctl reload nginx”

配置Nginx

贴上我的Nginx配置示例 (自行修改域名和证书位置):

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
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.tld;
return 301 https://$host$request_uri;
}
server {
listen 80;
server_name 1.1.1.1; //改为服务器IP,禁止IP访问
return 403;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name example.tld;

ssl_certificate /www/cert/example.cer;
ssl_certificate_key /www/cert/example.key;

ssl_protocols TLSv1.3 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ecdh_curve secp521r1:secp384r1;
ssl_ciphers EECDH+AESGCM:EECDH+AES256;
ssl_session_cache shared:TLS:2m;
ssl_buffer_size 4k;

ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
resolver_timeout 10s;

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

root /www/bbs/public;
index index.html index.htm index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
include /www/bbs/.nginx.conf;

location = /sitemap.xml {
try_files $uri $uri/ /index.php?$query_string;
}

if ($host != 'example.tld' ) {
rewrite ^/(.*)$ https://example.tld/$1 permanent;
}
}

插件

进入网站安装目录,使用composer安装。以下是我用的:

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
composer require fof/spamblock
composer require askvortsov/flarum-pwa
composer require fof/gamification
composer require fof/nightmode
composer require askvortsov/flarum-checklist:*
composer require fof/moderator-notes
composer require fof/user-bio
composer require michaelbelgium/flarum-discussion-views
composer require clarkwinkelmann/flarum-ext-emojionearea
composer require fof/polls
composer require fof/best-answer
composer require nearata/flarum-ext-no-self-likes
composer require askvortsov/flarum-categories
composer require fof/user-directory
composer require fof/drafts
composer require fof/follow-tags
composer require fof/frontpage
composer require fof/merge-discussions
composer require fof/reactions
composer require fof/prevent-necrobumping
composer require fof/bbcode-details
composer require fof/formatting
composer require fof/pages
composer require v17development/flarum-seo
composer require fof/sitemap

composer require ffans/lang-simplified-chinese
php flarum cache:clear # 刷新缓存用

BBS迁移

参考文章: Migrate flarum to another server

导出原数据库

1
mysqldump [database] > bak_`date +"%Y%m%d"`.sql

导入

1
mysql [database] < bak.sql

打包网站目录,解压到新主机上,配置目录权限。
在新主机上配置环境,新建mysql用户,新建数据库。
导入原数据库,授权用户对数据库的访问。
配置证书与反代。(相关步骤上一章都有提到)
最后按需修改config.php里的变量。

完成!