Flarum 搭建教程
一些其它的参考教程
Flarum 是什么?
Flarum 是一个基于 PHP 的论坛软件。因为是基于 PHP ,所以它对搭建环境的要求比较低。而与其它的基于 PHP 的论坛相比,它的一个优点是比较好看。
另外一个优点是它的插件系统极其丰富,站长可以通过现有的插件很方便地定制自己论坛的功能。
但是,Flarum 现在还是 beta 版本(本文写作时是 beta.15 版本),会有不稳定的情况。而不时的版本升级也使得非官方插件不一定能够兼容。
Flarum-beta.15 安装
配置数据库
Flarum 需要使用数据库。使用如下命令进入 MySQL 数据库的控制命令行:
sudo mysql
例如,我想要为我们的论坛准备一个叫做 flarumdb 的数据库,让论坛作为名叫 flarum 的用户访问数据库,则可以在控制命令行输入以下命令:(密码还需要您自行决定)
CREATE DATABASE flarumdb; CREATE USER 'flarum'@'localhost' IDENTIFIED BY '一个新的密码'; GRANT ALL PRIVILEGES ON flarumdb.* TO 'flarum'@'localhost'; FLUSH PRIVILEGES; quit
分别创建一个新的 MySQL 数据库、创建一个新的 MySQL 用户、授权新的用户可以自由使用新的数据库。最后的 quit 退出数据库的命令行。 如果您想要其它的名称,也可以相应地:
CREATE DATABASE 您想要的数据库名称; CREATE USER '您想要的数据库用户名'@'localhost' IDENTIFIED BY '一个新的密码'; GRANT ALL PRIVILEGES ON 您想要的数据库名称.* TO '您想要的数据库用户名'@'localhost'; FLUSH PRIVILEGES; quit
下载 Flarum
查看 php-fpm 用户权限
开启 php-fpm:
sudo systemctl start php7.4-fpm.service
查看 php-fpm 使用的 Linux 用户:
ps aux | grep php
您应该会在看见类似的输出:
root 558 0.0 1.1 274 24 ? Ss Jan04 1:20 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf) www-data 611 0.0 4.9 357 998 ? S Jan07 2:29 php-fpm: pool www www-data 611 0.0 4.9 358 101 ? S Jan07 2:28 php-fpm: pool www www-data 611 0.0 4.2 356 86 ? S Jan07 2:29 php-fpm: pool www user 700 0.0 0.0 629 608 pts/0 S+ 12:54 0:00 grep --color=auto php
您会找到 www-data
(见上述输出),但也可能不是 www-data
而是其它的用户名。如果是其它的用户名,请把这个用户名记下,并用于替换下面所有的 www-data
。
下载 Flarum
安装 Composer
先安装 composer :(参见 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;" sudo php composer-setup.php --install-dir=/usr/bin --filename=composer php -r "unlink('composer-setup.php');"
安装 Flarum
创建目录,并把授权给 www-data
:
sudo mkdir -p /var/www/flarum sudo chown -R www-data /var/www/flarum
安装:
cd /var/www/flarum sudo -u www-data composer create-project flarum/flarum . --stability=beta
配置 Nginx 连接至 Flarum
域名配置
其实不使用域名也是很容易实现的。但为简单起见,请配置一个 域名 :让域名的 A
记录指向您的服务器的 IP
。
Nginx 配置
我们这里假设您的 Nginx 配置 是 /etc/nginx/sites-available/
整理的,您可以用以下命令验证:
if [ -e /etc/nginx/sites-available/ ]; then echo 'YES'; else echo 'NO'; fi
若输出是 YES
则您可以按下述方法进行,如果输出为 NO
您可以直接联系本站负责人责令其更新教程将flarum.conf存放到/etc/nginx/conf.d目录下。
输入以下命令使用 nano 编辑器编辑 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/flarum.conf
输入以下内容:(请将 example.com
替换为您先前配置的域名)
server { listen 80; server_name example.com; # Hide nginx version server_tokens off; # Various content security headers add_header Referrer-Policy "same-origin"; add_header X-Content-Type-Options "nosniff"; add_header X-Frame-Options "DENY"; add_header X-XSS-Protection "1; mode=block"; root /var/www/flarum/public/; index index.htm index.html index.php; # frontend location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } include /var/www/flarum/.nginx.conf; }
Ctrl+S
保存,Ctrl+X
退出 nano。以下命令配置并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/flarum.conf /etc/nginx/sites-enabled/flarum.conf
sudo systemctl restart nginx
这时您应该已经能够在您的域名看到 Flarum 的安装界面了。
如果您使用 Cloudflare ,此时可能会有报错,请继续下面的配置 HTTPS,配置了 HTTPS 后应该会消除错误。
配置 HTTPS
如果是使用 Cloudflare 的,请跟随 Certbot-cloudflare 进行 HTTPS 配置。
如果不是,您应可以使用普通的 Certbot 完成配置。
安装 Flarum
在 Flarum 的网页安装界面上:
栏位 | 您应填写的 |
---|---|
Forum Title | 您的网站标题 |
MySQL Database | 您先前创建的数据库名,我们的例子中是 flarumdb |
MySQL Username | 您先前创建的数据库用户名,我们的例子中是 flarum |
MySQL Password | 您先前创建的数据库用户的密码,我们的例子中是您自己选的 |
Table Prefix | 可以比较随意,如:flarum_ |
Admin Username | 管理员用户名,这是您后续登录论坛的管理员账户 |
Admin Email | 管理员邮件 |
Admin Password | 管理员账户密码 |
Confirm Password | 确认管理员账户密码 |
点击 Install Flarum
稍加等待后即可看到 Flarum 的界面。
配置
中文全文搜索
这里的配置不行。您可以考虑使用 Mroonga 实现中文搜索。但是这里的教程暂时并不能真正实现中文搜索。
可以期待的配置
请见 jjandxa/flarum-ext-chinese-search ,但现在似乎没有支持 beta.15。
勉强可以用的配置
这个方法不适用于比较大的站点,因为比较耗资源。教程编写时 Flarum 版本为 beta.15 。
直接更改代码:进入 Flarum 安装目录 /var/www/flarum
,编辑 vendor/flarum/core/src/Discussion/Search/Gambit/FulltextGambit.php
文件:
找到含有这些东西的部分:
$subquery = Post::whereVisibleTo($search->getActor()) ->select('posts.discussion_id') ->selectRaw('SUM(MATCH('.$grammar->wrap('posts.content').') AGAINST (?)) as score', [$bit]) ->selectRaw('SUBSTRING_INDEX(GROUP_CONCAT('.$grammar->wrap('posts.id').' ORDER BY MATCH('.$grammar->wrap('posts.content').') AGAINST (?) DESC, '.$grammar->wrap('posts.number').'), \',\', 1) as most_relevant_post_id', [$bit]) ->where('posts.type', 'comment') ->whereRaw('MATCH('.$grammar->wrap('posts.content').') AGAINST (? IN BOOLEAN MODE)', [$bit]) ->groupBy('posts.discussion_id');
(您可以使用一些关键词来搜索代码,加快寻找速度。)看到 whereRaw
的一行吗?在这一行前加上
//
,并新建一行加上
->where('content', 'LIKE', '%'.$bit.'%')
,修改完后:
$subquery = Post::whereVisibleTo($search->getActor()) ->select('posts.discussion_id') ->selectRaw('SUM(MATCH('.$grammar->wrap('posts.content').') AGAINST (?)) as score', [$bit]) ->selectRaw('SUBSTRING_INDEX(GROUP_CONCAT('.$grammar->wrap('posts.id').' ORDER BY MATCH('.$grammar->wrap('posts.content').') AGAINST (?) DESC, '.$grammar->wrap('posts.number').'), \',\', 1) as most_relevant_post_id', [$bit]) ->where('posts.type', 'comment') //->whereRaw('MATCH('.$grammar->wrap('posts.content').') AGAINST (? IN BOOLEAN MODE)', [$bit]) ->where('content', 'LIKE', '%'.$bit.'%') ->groupBy('posts.discussion_id');
这个时候保存退出应该就可以进行中文搜索了。但是对于文本内容较多的站点,这种搜索可能比较慢。
完全用不了的配置
(请不要用这里下方的配置,因为完全没有用。) 我们这里假定您用的是 MariaDB。 MariaDB 的配置文件可能会比较难找,可能会有:
/etc/my.cnf.d/server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf
一般来说,请善用 Tab
自动补全功能,输入 ls /etc/my
之后双击 Tab
键,然后可以慢慢跟随提示找到类似上述的含有 server.cnf
字样的配置文件。或者您也可以根据自己的 Linux 发行版类型以及 MariaDB 安装来源上网自行查找。
请在 MariaDB 的配置文件中,找到:
[mysqld]
这一部分。在这一部分添加一行 innodb_ft_min_token_size = 1
,变成这样子:
[mysqld] innodb_ft_min_token_size = 1
保存退出。
在终端使用如下命令建立中文检索:(这里的 flarumdb
请对应您的数据库名称)
sudo mysqlcheck -o flarumdb
这时您应该就还是不可以在 Flarum 里正常地中文检索。