开源论坛Flarum的安装与使用

Flarum 简介

提到开源论坛程序,我们最先都会想到discuz和phpwind这种巨头,但是长时间的发展也令他们的程序越发发庞大和臃肿,对于开发者来说如果只想要单纯的论坛功能无疑是拿高射炮打蚊子,不仅大材小用,同时在维护上也更加耗费精力。

在这种情况下选择一个轻量的论坛程序不失为一个明智的选择,Flarum就是这样一个优雅的轻量论坛软件,它拥有一个现代的、简洁优雅的界面,同时可以通过插件来实现各种强大的功能。

目前Flarum还处于Beta版,当前版本已经可以支持绝大多数常用的论坛功能的需求,开发者仍然在不断的迭代,相信未来会有一个大好前景。

就像Flarum的开发者说的那样:

Flarum is the combined successor of esoTalk and FluxBB. It is designed to be:

  • Fast and simple. No clutter, no bloat, no complex dependencies. Flarum is built with PHP so it’s quick and easy to deploy. The interface is powered by Mithril, a performant JavaScript framework with a tiny footprint.

  • Beautiful and responsive. This is forum software for humans. Flarum is carefully designed to be consistent and intuitive across platforms, out-of-the-box.

  • Powerful and extensible. Customize, extend, and integrate Flarum to suit your community. Flarum’s architecture is amazingly flexible, with a powerful Extension API.

  • Free and open. Flarum is released under the MIT license.

官方网站

官方文档

开发者社区

安装

系统要求

要安装Flarum,首先需要服务器配置好如下环境:

  • Apache(开启了mod_rewrite)或者Nginx
  • PHP 7.1以上并且安装以下扩展:curl,dom,gd,json,mbstring,openssl,pdo_mysql,tokenizer,zip
  • MySQL 5.6以上或者MariaDB 10.0.5以上
  • SSH(命令行)权限用于运行Composer

目前Flarum的版本是beta12,官方已经宣布将在beta13时弃用PHP 7.1,因此为避免版本升级的各种麻烦,最好使用7.2以上版本

配置环境

以下配置方法基于我本人的腾讯云服务器,操作系统为CentOS 8,具体操作根据服务商和系统的不同可能会有所差异

我是用的是LNMP环境,即使用LinuxNginxMySQLPHP作为网站的服务器架构

Apache的使用方法还请自行探索

安装Nginx

以下命令均在root用户下执行,如果使用非root用户,则需要在开头加上sudo

执行命令,安装nginx

1
yum install nginx

注意安装的版本,系统默认源的nginx版本可能比较低,如果希望安装最新的stable版本的nginx则需要额外几个步骤:

  • 安装yum-utils
    1
    yum install yum-utils
  • 更新nginx的yum源,创建并编辑文件/etc/yum.repos.d/nginx.repo
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true

    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
  • 默认情况下会安装stable版本,如果想要安装mainline版本则运行以下命令
    1
    yum-config-manager --enable nginx-mainline
  • 最后重新运行yum install命令
    1
    yum install nginx

安装完成后运行nginx

1
systemctl start nginx

并且设置为开机启动

1
systemctl enable nginx

从浏览器输入服务器地址访问服务器,如果展示如下页面则表示nginx已成功运行
nginx default page

安装数据库

鉴于MySQL数据库版本众多,建议使用官方的配置生成页面按照自己的需求生成相应的配置文件,例如我的选择是CentOS 810.4[stable]

  • 创建文件/etc/yum.repos.d/mariadb.repo并写入生成的配置
    1
    2
    3
    4
    5
    6
    7
    8
    # MariaDB 10.4 CentOS repository list - created 2020-04-22 17:13 UTC
    # http://downloads.mariadb.org/mariadb/repositories/
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.4/centos8-amd64
    module_hotfixes=1
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1
  • 运行yum install
    1
    yum install MariaDB-server MariaDB-client
  • 启动mariadb
    1
    systemctl start mariadb
  • 设置为开机启动
    1
    systemctl enable mariadb
    执行命令
    1
    mysql
    如果出现如下界面则代表成功安装
    mariadb

使用

1
\q

退出mysql

安装PHP

CentOS 8默认源的PHP版本为7.2,已经满足了Flarum的要求

  • 直接执行命令
    1
    yum install php php-cli php-common php-mysqlnd php-fpm
  • 安装完成后检查PHP的版本
    1
    php -v
    phpversion

Flarum需求的一些php扩展还没有安装,在安装之前可以先检查已经安装了哪些扩展

执行命令

1
php -m

phpextension

  • 根据需要查漏补缺安装php扩展

    1
    yum install php-dom php-gd php-zip php-mbstring
  • 启动PHP

    1
    systemctl start php-fpm
  • 设为开机启动

    1
    systemctl enable php-fpm

    至此LNMP架构全部安装完成,接下来还要配置一些参数,并进行验证,使服务器能够像我们期望的那样运行起来

配置参数

首先要对nginx进行配置

nginx默认配置下是不能解析php文件的,需要nginx转发给fastcgi来解析php文件

首先找到nginx的配置文件,默认情况下位于/etc/nginx/conf.d,如果该文件夹下为空则直接创建一个新文件,并命名为default.conf

  • 编辑default.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
    server {
    listen 80;
    root /usr/share/nginx/html;
    server_name localhost;
    #charset koi8-r;
    #access_log /var/log/nginx/log/host.access.log main;
    #
    location / {
    index index.php index.html index.htm;
    }
    #error_page 404 /404.html;
    #redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root /usr/share/nginx/html;
    }
    #pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ .php$ {
    root /usr/share/nginx/html;
    fastcgi_pass unix:/run/php-fpm/www.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    }

保存文件后返回,接下来需要验证nginx现在是否已经可以正确处理php文件

  • 执行以下命令,创建一个测试文件
    1
    echo "<?php phpinfo(); ?>" >> /usr/share/nginx/html/index.php
  • 重启nginx
    1
    systemctl restart nginx
    在浏览器中访问服务器地址,如果显示如下结果,则表示配置成功
    phpinfo

至此,服务器环境便配置完成了,接下来便可以进行Flarum的安装。

安装Flarum

Flarum使用Composer进行安装,Composer是一个PHP软件包管理器

因此需要首先安装Composer,Composer的官方网站给出了详细的安装方式

  • 依次运行命令

    1
    2
    3
    4
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { 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便已经安装完成,不过这时composer只能在当前路径运行,为了方便起见,我们需要让它可以以全局方式运行

  • 执行以下命令

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

    这样Composer便可以全局运行了

  • 转到网站根目录

    1
    cd /a/example/path/to/flarum
  • 运行composer

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

    由于Composer源位于国外,连接速度感人,需要改为国内的镜像源,比如阿里或者腾讯的镜像

    这里我使用的是腾讯的镜像,具体使用方法见:Composer镜像使用帮助

  • 修改default.conf,使nginx服务器的根目录指向网站的根目录,找到如下内容

    1
    root /usr/share/nginx/html;

    修改为网站的根目录

    1
    root /path/to/flarum/public;

Flarum的文件结构如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
. (站点根目录)
├── public(公共目录)
│ └── assets (资源目录,存放头像、上传的文件等)
├── storage
│ └── logs (日志)
├── vendor (核心、插件目录)
├── .nginx.conf (自带 Nginx 配置)
├── .htaccess (自带 Apache 配置)
├── composer.json(插件列表)
├── extend.php(自定义扩展文件)
├── flarum
├── LICENSE
├── README.md
└── site.php

除了public之外浏览器不应有其他目录的访问权限,所以注意路径应指向public文件夹

接下来需要将自带的nginx配置文件加入nginx配置中

  • 向default.conf中的server代码块中加入如下代码
    1
    include /path/to/flarum/.nginx.conf
    并重启nginx

此时访问服务器地址就能看到如下Flarum的安装界面了

安装界面

接下来只要根据安装界面的提示进行就可以成功安装了,例如上面展示的,现在网站目录的权限不足,Flarum的安装程序不能写入文件,这时就需要使用chomd命令来改变目录的权限

1
chmod -R 775 /path/to/flarum

注意:永远不要使用777的权限设置,这意味着所有人均能访问读取和修改目录下的文件

权限设置完毕后,就需要设置管理员、数据库等参数了
设置数据库和管理员帐号

分别需要设置:

  1. Forum Title
    论坛的标题,没啥好说的
  2. MySQL Host
    定位数据库的主机,如果数据库位于本地为localhost,位于网络中则为目标机器的ip地址
  3. MySQL Database
    定位具体的数据库,注意Flarum的安装程序不会自动创建相应的datbase,需要先行建立一个相应的database
  4. MySQL Username
    指定访问数据库的用户名,注意MySQL在没有额外设置的情况下是允许匿名登录的,如果要部署到生产环境需要对MySQL进行权限设置,禁止匿名用户访问数据库
  5. MySQL Password
    登录数据库时所需的密码
  6. Table Prefix
    数据库prefix参数,不清楚具体作用的话留空即可
  7. Admin Username
    设定系统管理员的用户名,同样没啥好说的
  8. Admin Email
    设定系统管理员的邮箱地址
  9. Admin Password:设定管理员用户密码

下面贴上我自己在虚拟机上填写的内容作为参考
参考内容

确认上述一切都没有问题后,点击安装,整个安装配置过程便完成了,稍作等待便可以看到论坛的页面了
论坛主页

安装扩展

Flarum本身作为一个轻量的论坛,其功能还是很少的,仅能满足基本的需求。不过作为一个开源项目,自然也少不了社区的支持,现在已经有众多的扩展插件可以选择。

进入论坛的管理后台页面就可以看到扩展面板,里面展示了当前已经安装和开启的插件
插件面板

不过当前版本还不能直接从页面中添加扩展,仍然需要使用命令行工具安装,再从管理面板中启用。

常用的扩展可以从Flarum官方论坛中的extension标签的帖子中寻找或者使用Bazaar以及FoF来完成

这部分内容就请各位自行探索吧!
END

作者

Luc_41

发布于

2020-04-23

更新于

2020-04-23

许可协议

评论