您的足迹: flarum

Flarum 搭建教程

这是本文档旧的修订版!


Flarum 搭建教程

一些其它的参考教程

Flarum 是什么?

Flarum 是一个基于 PHP 的论坛软件。因为是基于 PHP ,所以它对搭建环境的要求比较低。而与其它的基于 PHP 的论坛相比,它的一个优点是比较好看。

Flarum的移动端界面

另外一个优点是它的插件系统极其丰富,站长可以通过现有的插件很方便地定制自己论坛的功能。

但是,Flarum 现在还是 beta 版本(本文写作时是 beta.15 版本),会有不稳定的情况。而不时的版本升级也使得非官方插件不一定能够兼容。

Flarum-beta.15 安装

本文假定您已经配置好了 sudo 权限,并安装好了 PHP-fpmMySQLNginx。若没有,请点进相应的条目查看安装方式。

配置数据库

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 您可以直接联系本站负责人责令其更新教程。

输入以下命令使用 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 的网页安装界面上: 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 的界面。  Flarum 界面

配置

中文全文搜索

这里的配置不行。您可以考虑使用 Mroonga 实现中文搜索。但是这里的教程暂时并不能真正实现中文搜索。

勉强可以用的配置

这个方法不适用于比较大的站点,因为比较耗资源。教程编写时 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 里正常地中文检索。