去年写过一个盖房指南,装的是Flarum的beta 13版本,最近鼠师傅说想给她家盖房子于是搜了一下,发现Flarum多年Bata终于放出正式版了!遂拿上测试服务器重新走一遍流程,其实大差不差,不过随着各组建升级,有一些细节上的改动,总之姑且为之一更新。
Flarum 要求的环境:
mod_rewrite
的 Apache,或 Nginx(本文以 Nginx 为示范)
注意:请在普通用户下进行安装。在 root 用户下进行安装是有风险的行为,请在sudo级别的用户下进行操作。
截止目前,PHP 最高版本是 7.4,所以就先从 PHP 7.4 以及它的扩展开始。
执行:
sudo apt update
sudo apt install -y php7.4 php7.4-cli php7.4-fpm php7.4-common php7.4-curl php7.4-xml php7.4-gd php7.4-json php7.4-mysql php7.4-mbstring php7.4-zip
开启 PHP openssl 扩展,依次执行:
sudo apt install -y openssl
sudo apt install -y libcurl4-openssl-dev
sudo apt install -y libssl-dev
查看 PHP 版本,执行:
php --version
安装好了的话,应该返回:
PHP 7.4.3 (cli) (built: Jul 5 2021 15:13:35) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
直接按照 Composer 的官方下载指引,依次执行:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
因为源在境外,所以拉取的时候可能会有点慢,请耐心等待。
下载完毕后,配置 Composer,执行:
sudo cp composer.phar /usr/local/bin/composer
检查安装。执行:
composer --version
如果成功安装,应返回:
Composer version 2.1.5 2021-07-23 10:35:47
执行:
sudo apt install -y mysql-server
检查安装。执行:
mysql --version
如果安装成功,应返回:
mysql Ver 8.0.26-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))
进行一些安全配置,执行:
sudo mysql_secure_installation
根据自己的需要选择 yes
或 no
,设置完成后登录检查。执行:
sudo mysql -u root -p
键入你刚才设置的密码,就进了 MySQL 的命令行界面。
新建一个数据库用于存放论坛数据,依次执行:
mysql> CREATE DATABASE dbname;
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL ON dbname.* TO 'username'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit
其中 dbname
替换为你的数据库名称,username
替换为你的数据库用户名,password
替换为你的数据库密码。
注意:这里的设置,包括上面你的 MySQL root 账号的密码,最好抄到一个你三五年后都还能查到的地方,你换电脑换手机都能找到的那种地方,以防将来有什么需要迁移数据的事情结果你把数据库密码忘记了……那就不知道该上哪里哭了……
执行:
sudo apt install -y nginx
检查安装。执行:
nginx -v
如果安装成功,应返回:
nginx version: nginx/1.18.0 (Ubuntu)
配置 Nginx 的事情我们等安装完 Flarum 后再说,先放着。
然后就到了真正的安装步骤了,这部分倒是不怎么出问题,因为是直接 Composer 拉取下来安装的。
新建一个文件夹安放你的网站:
sudo mkdir -p /var/www/flarum
给这个文件夹赋予当前用户读写文件夹的权限:
sudo chown -R username:username /var/www/flarum
这个 username
就是你现在所在的 Ubuntu 系统下的用户名。
赋予当前用户权限后,到这个文件夹里去:
cd /var/www/flarum
完整的安装流程参考官方文档:Installation | Flarum Documentation
如果你的服务器在中国大陆境内,可能会因为 Composer 的源在国外而拉取速度感人,这种情况的朋友可以把 Composer 的源更换为国内镜像(此处为阿里云镜像):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
如果服务器机房在境外,或者位于腾讯云,请忽略此步(因为说不定会变得更慢,或直接因为两家打架镜像banned)。
在线安装 Flarum,执行:
composer create-project flarum/flarum .
中间可能会出现这种报错:
[Error Exception]
proc_open(): fork failed - Cannot allocate memory
这是内存炸了,可以通过增加虚拟内存解决。
依次执行:
free -m
sudo dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo mkswap /var/swap.1
sudo swapon /var/swap.1
完了以后再重新执行:
composer create-project flarum/flarum .
这次应该就没问题了。
Flarum 安装好后,需要配置 Nginx 让它能够访问。这部分的详细解说直接去看鼠师傅的文章《配置flarum,主要是环境的安装和nginx配置》,这里只抄作业。
如果你还没有装文本编辑器……算了装一个吧,编辑器很多种,我最爱用的还是 vim。
sudo apt install -y vim
有编辑器的跳过这步。
vim 打开以后,保持英文输入状态,按 i
进入编辑模式,按esc
退出编辑模式,按顺序输入:wq
保存并退出,其他的命令大家自己去搜吧网上一搜一大把。
修改 /etc/php/7.2/fpm/php-fpm.conf
,执行:
sudo vim /etc/php/7.2/fpm/php-fpm.conf
在最末尾处新插入两行,加上端口监听:
[www]
listen=127.0.0.1:9000
重启 fpm,执行:
/etc/init.d/php7.4-fpm reload
重启完毕后可以使用netstat -lnt
命令,查看127.0.0.1:9000
端口是否处于LISTEN
状态。
修改 /etc/nginx/nginx.conf
:
sudo vim /etc/nginx/nginx.conf
找到 http
的大括号,在大括号里include /etc/nginx/mime.types;
这行附近补全如下内容:
server {
listen 80;
client_max_body_size 1024M;
root /path/to/flarum/public; //改为你的Flarum主目录对应路径
server_name <your server>; //改为你的服务器公网IP或域名
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
index index.php;
# php-fpm
location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000; //你在fpm中监听的端口
fastcgi_index index.php;
include /etc/nginx/fastcgi.conf;
}
include /path/to/flarum/.nginx.conf; //改为你的Flarum主目录对应文件
}
重启 Nginx,执行:
sudo nginx -t
sudo systemctl reload nginx.service
然后访问你的公网域名,应该就能见到 Flarum 的安装界面啦。
第一次进到安装页面,可能会见到两三个说该目录缺少读写权限的。
请只赋予 Flarum 向导中指明的需要的文件夹读写权限,以保证数据安全,更改读写权限,执行命令:
sudo chown -R www-data:www-data 请求权限的文件夹名/.
一般而言,只要保证 /var/www/flarum
给上权限就可以了。
这步就把你前面数据库设置的时候抄下来的数据库信息填进去就好了,表头可填可不填,看你自己,如果你只有这么一个数据库那留空就行,如果你要管很多很多个数据库,那可以写一下表头保证不会跟其他表单混淆。
然后管理员用户名现在不能采用中文,不过后面可以自己做修改,先填上自己的用户名(英文)和密码和邮箱。
然后就安装完成啦!
注意:这一步需要修改 Flarum 核心代码,如非必要,不建议这么做。
修改 /vendor/flarum/core/src/User/UserValidator.php
的第47行,将'regex:/^[a-z0-9_-]+$/i'
替换为以下三种方式之一:
// 1. CJK基础上,不允许全数字用户名出现,防止个人主页报错。
'regex:/^[-_a-zA-Z0-9\x7f-\xff]*[-_a-zA-Z\x7f-\xff][-_a-zA-Z0-9\x7f-\xff]*$/i',
// 2. CJK基础上,允许全数字用户名
'regex:/^[-_a-zA-Z0-9\x7f-\xff]+$/i',
// 3. Unicode 用户名
'alpha_dash'
修改 /vendor/flarum/core/src/Forum/Auth/Registration.php
的 101 行,注释掉 $username = preg_replace('/[^a-z0-9-_]/i', '', $username);
修改 /vendor/flarum/mentions/src/ConfigureMentions.php
的 53 行,将 configureUserMentions
函数中 $config->Preg->match
的正则表达式 /\B@(?<username>[a-z0-9_-]+)(?!#)/i
改为:
/\B@(?<username>[\p{L}\p{N}_-]+)(?!#)/ui
修改同文件的 91 行左右,将 configurePostMentions
函数中 $config->Preg->match
的正则表达式 /\B@(?<username>[a-z0-9_-]+)#(?<id>\d+)/i
改为:
/\B@(?<username>[\p{L}\p{N}_-]+)#(?<id>\d+)/ui
修改 /vendor/flarum/core/src/Api/Controller/ShowUserController.php
的 52 行,将 getIdForUsername($id)
替换为 getIdForUsername(urldecode($id))
。
保存退出后,在 Flarum 目录下执行:
php flarum cache:clear
请问Flarum支持做成匿名论坛吗?(xq,h岛那种)如果支持的话大概需要如何改动配置呢🥹