前言
Flarum 是一款非常简洁的开源论坛软件。 它响应快速、简便易用,拥有打造一片成功的社区所需的所有功能。 它也极其可扩展,允许达到终极的可定制性。
Flarum 的前身是 esoTalk 和 FluxBB, 它生来就被设计如此:
- 快速、简单。 不杂乱不臃肿,没有复杂的依赖关系。 Flarum 使用 PHP 构建,因此很容易被部署。 界面采用高性能且小巧的 JavaScript 框架 Mithril。
- 漂亮、响应式。 以人为本的论坛软件。 Flarum 被精心设计以在不同平台间保持一致性和直观性,开箱即用。
- 强大、可扩展。 您可以客制化、扩展或集成 Flarum 以满足您的社区需求。 Flarum 基于 MIT 协议 发布。
- 免费、开源。 Flarum 以 MIT 许可证 发布。
新建安全组
打开控制台
打开莱卡云:https://www.lcayun.com

新建安全组

安装Flarum
安装Flarum的方式有两种,一个是Docker一个是直接安装,Docker方式安装方便,快速,直接拉取镜像一个命令就可以快速启动,但稳定性不如直接安装。直接安装就是环境比较复杂,但比较稳定。
Docker方式安装
编写docker-compose
version: '3.1'
services:
mysql:
image: mysql:8.0.26
container_name: flarum-db
ports:
- "5308:3306"
environment:
MYSQL_DATABASE: flarum
MYSQL_ROOT_PASSWORD: dbpassword
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
privileged: true
app:
image: mondedie/flarum:latest
container_name: flarum
ports:
- "5334:8888"
environment:
FORUM_URL: 'http://172.192.168.2.5:5334'
DB_HOST: 'mysql'
DB_USER: 'root'
DB_PASS: 'thisispassword'
FLARUM_ADMIN_USER: 'admin'
FLARUM_ADMIN_PASS: 'fsd7fsd5f44'
FLARUM_ADMIN_MAIL: 'asd1464@qq.com'
FLARUM_TITLE: '问答小助手'
links:
- mysql
部署docker-compose

看到上面这个绿色的done表示部署成功了。
然后去浏览器打开网站查看:http://172.192.168.2.5:5334
设置数据库及用户
- Forum Title:平台标题
- MySQL Host:mysql
- MySQL Database:flarum
- MySQL Username:root
- MySQL Password:dbpassword
- Admin Username:admin
- Admin Email:asd1464@qq.com
- Admin Password:fsd7fsd5f44
- Confirm Password:fsd7fsd5f44
Table Prefix不用填写也可以。
直接安装
前言
我下面使用的环境为CentOS 7,Mysql 5.7.42,PHP 8.0.28,composer 2.5.5。
使用本机直接安装,需要的环境:
- PHP
- PHP composer
- Nginx
- Mysql
下面安装flarum的版本为正式版V 1.7
安装环境
需要安装以上四个环境,你可以看我另一篇文章的环境安装。
linux环境配置:https://blog.hikki.site/111f4f09.html
安装PHP
PHP安装依赖可能比较麻烦,下面给出相关教程。
1. 安装PHP
sudo yum -y install epel-release
sudo yum -y install https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils
2.切换到PHP8 remi源
sudo yum-config-manager --enable remi-php80
3. 安装PHP相关扩展
在安装PHP相关依赖时,可以将下面这部分的PHP扩展添加进去,在yum源中,PHP的扩展可以通过yum安装。
sudo yum install php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis --skip-broken
4. 创建PHP全局命令
安装后的PHP,默认安装在/usr/bin/php位置下,但CentOS 7默认快捷启动是在/usr/local/bin位置才有效,所以,要创建PHP全局命令,就要创建一个PHP启动程序在/usr/local/bin位置下,我们可以直接复制一个PHP启动文件过去就可以了。
cp /usr/bin/php /usr/local/bin/php
5. 启动PHP
systemctl start php-fpm
安装Composer
1. 下载安装脚本
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
2. 执行安装
php composer-setup.php
3. 删除安装脚本
php -r "unlink('composer-setup.php');"
4. 设置Composer全局命令
sudo mv composer.phar /usr/local/bin/composer
创建数据库
1. 进入数据库
mysql -uroot -p
回车之后需要输入root用户密码
2. 创建数据库
create database db_flarum;
3. 创建db_flarum专用的用户
create user 'flarum'@'localhost' identified by '7c6fwgLskw+';
创建一个用户名为flarum,密码为7c6fwgLskw+的用户。
4. 设置db_flarum数据库归flarum用户所有
grant all on db_flarum.* to 'flarum'@'localhost';
5. 刷新权限
flush privileges;
创建Flarum项目
1. 创建flarum目录
mkdir -p /www/flarum
2. 进入flarum目录
cd /www/flarum
3. 初始化flarum项目
composer create-project flarum/flarum .
初始化后的flarum是没有config.php的配置文件的,flarum会检测config.php配置文件是否存在,如果存在,则直接使用,若不存在,则打开web页面会自动创建的,所以,不需要刻意去创建这个配置文件。
4. 设置权限
chmod -R 777 /www/flarum
先赋予flarum文件夹777权限,因为初始化时没有创建config.php文件,flarum需要有创建config.php文件的权限,而创建这个文件的用户是
apache,该用户需要有权限7,所以就先设置777,后面初始化完再将权限改为775。
如果你还有www用户或者www-data用户,则继续赋予权限
chown -R www:www /www/flarum
配置Nginx
# 问答平台
server {
listen 80;
server_name hikki.site; # 你的域名
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name hikki.site; # 你的域名
# 资源
include /www/flarum/.nginx.conf;
root /www/flarum/public; # flarum下的public
index index.html index.php;
# SSL证书
ssl_certificate cert/guangruan.life/cert.pem;
ssl_certificate_key cert/guangruan.life/key.pem;
# 最大文件
client_max_body_size 1024M;
# 日志
access_log /usr/local/nginx/logs/access.log;
error_log /usr/local/nginx/logs/error.log;
# php-fpm
location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
我在本地配置了SSL证书,如果你没有证书,则你可以将下面的server块中的SSL证书部分去掉,再将监听443的端口改为80端口即可。
打开web页面
打开页面后,应该是没有任何异常的,,如果有异常报错,查看相关异常信息,再到flarum社区查找解决方法。
- Forum Title:平台标题
- MySQL Host:127.0.0.1
- MySQL Database:db_flarum
- MySQL Username:flarum
- MySQL Password:dbpassword
- Table Prefix:
tb_(选填,需要自定义表前缀可以填) - Admin Username:admin(论坛管理员用户名)
- Admin Email:asd1464@qq.com(论坛管理员邮箱)
- Admin Password:fsd7fsd5f44(论坛管理员密码)
- Confirm Password:fsd7fsd5f44

安装插件
汉化论坛
进入flarum项目根目录
cd /www/flarum
{% hideToggle 使用Docker方式部署 %}
1. 进入容器
docker exec -it flarum sh
2. 进入Flarum程序目录
cd flarum/app/
{% endhideToggle %}
设置阿里云下载服务
composer默认的库不在国内,如果你是国内的服务器,下载速度可以不理想,你可以切换到国内的阿里云库,全局安装阿里云的网络下载服务
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
安装中文插件
composer require flarum-lang/chinese-simplified:*

建立全站中文搜索
进入MySQL数据库
{% hideToggle 使用Docker方式部署 %}
1. 进入MySQL的容器
docker exec -it flarum-db /bin/bash
{% endhideToggle %}
进入mysql数据库
mysql -uflarum -phBf4sdf14
- 用户名:flarum
- 密码:hBf4sdf14
注意,-u和后面的用户名是没有空格的,是连在一起的。
-p和后面的面也是连在一起的,没有空格
建立索引
进入了mysql数据库后,分别执行下面四条mysql语句
use db_flarum -- 进入db_flarum
ALTER TABLE tb_posts DROP INDEX content;
CREATE FULLTEXT INDEX tb_content ON `tb_posts` (`content`) WITH PARSER ngram;
ALTER TABLE tb_discussions DROP INDEX title;
CREATE FULLTEXT INDEX title ON `tb_discussions` (`title`) WITH PARSER ngram;
tb_posts、tb_discussions是数据表,如果你你在建立站时没有设置表前缀的话,则表名是和我一样的。
清除缓存
仪表盘-->工具-->清除缓存

测试效果
可以搜索到中文的内容了。

配置其他信息
邮箱激活用户
Flarum默认使用邮箱激活用户,用户在注册时,会发送一条链接到用户注册的邮箱,用户需要点击链接才激活账号,但在这之前,你需要配置一个发送邮件的邮箱信息。
地址:邮箱地址
驱动:smtp
主机:smtp.163.com
端口:465
加密协议:ssl
用户名:aa1341151056@163.com
密码:ITGDHERHSDPVX
安装其他插件
- 进入容器
- 进入Flarum程序目录
- 安装插件
进入flarum项目根目录
cd /www/flarum
{% hideToggle 使用Docker方式部署 %}
1. 进入容器
docker exec -it flarum sh
2. 进入Flarum程序目录
cd flarum/app/
{% endhideToggle %}
安装插件
安装插件前建议设置阿里云下载仓库,不然下载速度会有点慢,如果设置过就不需要重复设置
根据自己的需求安装对应的插件。
# 简体中文支持
composer require flarum-lang/chinese-simplified:*
# 最佳回复插件安装 -- 需要开启后点击保存才有效果 -- 帖子内部的回复置顶功能,非常好用
composer require fof/best-answer:*
# 安装文件上传扩展插件,开启上传插件,支持 copy images -- 可以直接复制图片拷贝到帖子内部
composer require fof/upload:*
# 使用邀请码注册
composer require fof/doorman:*
# 微信登录(需要微信开发者资质才可以使用)
composer require nomiscz/flarum-ext-auth-wechat
# 投票插件 -- 需要设置参与投票的人可以有哪些
composer require fof/polls:*
# 精华帖 - 推送到首页
composer require fof/frontpage:*
# 头像徽章插件
composer require fof/ignore-users:*
# 开启私密主题 -- 效果不是很理想
composer require fof/byobu:*
# 自定义头像 -- 比如可以选择危化镖局的卡通头像(需要提前上传)
composer require clarkwinkelmann/flarum-ext-predefined-avatars:*
# 自定义邮件模板
composer require fof/pretty-mail:"*"
# 欢迎用户小部件,携带个人统计信息
composer require justoverclock/flarum-ext-welcomebox:*
# 传统板块插件
composer require askvortsov/flarum-categories:*
# 表情插件 -- 需要禁用掉自带的表情,不然会很怪异
composer require clarkwinkelmann/flarum-ext-emojionearea:*
# 同意条款
composer require fof/terms
# 帖子内容摘要
composer require ianm/synopsis
# 个人、群发邮件
composer require clarkwinkelmann/flarum-ext-mailing
# 预定义用户头像,允许用户从预定义头像库中选中一张作为自己的论坛头像
composer require clarkwinkelmann/flarum-ext-predefined-avatars:*
# 昵称功能,默认自带
# 需要到 常规功能模块里打开 User Display Name ,才能修改昵称
# 在首页生成用户管理 -- 如果是内部使用,可以关闭掉注册口邮件回复和激活功能,通过这里激活用户
composer require fof/user-directory:*
# 允许修改作者 -- 调整发布帖子的人
composer require clarkwinkelmann/flarum-ext-author-change:*
# 版主警告
composer require askvortsov/flarum-moderator-warnings
# 社交分享
composer require fof/share-social
# 对很久的帖子发出警告
composer require fof/prevent-necrobumping
# 自动审批
composer require askvortsov/flarum-auto-moderator:*
# 超级置顶
composer require the-turk/flarum-stickiest:^2.0.1
# 预定义标签发表模板
composer require askvortsov/flarum-discussion-templates
# 帖子书签
composer require clarkwinkelmann/flarum-ext-bookmarks
# 根据前置批准的数量,后续自动审批
composer require clarkwinkelmann/flarum-ext-first-post-approval
# 首页右侧热门帖子
composer require justoverclock/hot-discussions:"*"
# 短时间防止重复帖子
composer require the-turk/flarum-nodp
# 代码风格
composer require ffans/clipboardjs
# 自定义导航链接
composer require fof/links
# 用户自定义签名
composer require fof/user-bio:"*"
# 图片幻灯片
composer require darkle/fancybox
# 个人主页留言板
composer require fof/moderator-notes:"*"
# 广告
composer require afrux/news-widget:"*"
# 在线人数
composer require afrux/online-users-widget:"*"
# 过去一个月热门用户
composer require afrux/top-posters-widget:"*"
# 帖子增加首图卡片展示功能 -- 开启后会报错,要稍微等会,就能安装正常
composer require dem13n/discussion-cards:*
# 信任等级,可以提供一个等级设置,根据什么样的条件达成什么样的权限设置
composer require askvortsov/flarum-trust-levels:*
# 达成什么成就,就会在回复或发布的主题底下形成一排的成就图标!!! 点击启动时会报错,也是需要安装等待会才能正常
composer require malago/flarum-achievements:*
# 论坛统计功能 -- 还可以设置允许看到的人的权限
composer require fof/forum-statistics-widget:*
# markdown 表格功能扩展
composer require kvothe/pipetables
可能有部分插件已失效
已失效插件
# 图片放大 缩小 -- 只有这个库支持 fof 图片放大缩小扩展!!! -- 点击图片可放大查阅(已失效)
composer require phenomlab/fancybox-wrapper:*
登录回复可见插件
解决方案:https://discuss.flarum.org.cn/d/2565
常用指令
凡是跟插件
composer有关的,必须进入到容器中里面的flarum/app/目录下执行
安装完成插件后有异常时执行
php flarum cache:clear
更新插件
composer update fof/best-answer
卸载插件
格式:composer remove 插件名
composer remove fof/best-answer
使用Docker部署MySQL
有些同学可能想直接部署flarum,但又想使用Docker部署MySQL,比如我,经过使用后,我发现直接在真机部署MySQL,占用内存太大了,我的服务器顶不住,于是就将真机上的MySQL数据库导出来,然后导入到Docker部署的MySQL中,这样可以减少一点内存支出,事实证明,这样确实可以减少部分的内存支出,话不多说,直接开始。
导出MySQL数据库
由于我之前在MySQL数据中,添加了一个flarum用户,用于专门管理db_flarum数据库,flarum用户只有管理db_flarum数据库,这样可以提高数据库的安全性。
于是,在导出数据库时需要考虑,我应该怎么做,才可以避免到时候导入Docker数据库时不需要重新添加flarum用户,并且设置权限?
经过相关学习,我大概了解到,MySQL程序中,有一个名为mysql的数据库,我们的用户信息都存储在mysql库中,我们给flarum用户设置db_flarum数据库的权限的相关信息,都存储在mysql这个数据库中,这么思路就清晰了,我们只需要导出mysql数据库和db_flarum数据库就可以了。
进入MySQL程序
我们先进入MySQL程序探一番,进入flarum用户。
mysql -uflarum -p
输入上面命令进入MySQL程序,需要输入flarum用户的密码,
查看当前用户全部数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db_flarum |
+--------------------+
2 rows in set (0.00 sec)
可以看到,flarum用户只能查看到information_schema和db_flarum数据库,没有发现mysql数据库,说明权限还不够,需要root权限才可以看到mysql数据库。
那这个information_schema数据库是干嘛的呢?为什么我们没有创建他也会存在?
information_schema 存储关于 MySQL 数据库中所有对象(如表,列,索引等)的元数据信息,提供了一种标准化的方式来查询 MySQL 中的数据库结构信息;
导出数据库
1. 创建dbs存储数据库
mkdir -p /opt/dbs/
我们使用mysqldump 命令来导出数据库,回车之后需要输入root用户密码。
2. 导出db_flarum数据库
mysqldump -uroot -p db_flarum > /opt/dbs/db_flarum.sql
3. 导出mysql数据库
mysqldump -uroot -p mysql > /opt/dbs/mysql.sql
部署MySQL数据库
编写docker-compose
1. 创建一个mysql的文件夹,并进入文件夹
mkdir -p /home/docker/mysql/{mydir,db,conf,init} && cd /home/docker/mysql
2. 编写mysql配置信息
在conf目录下,新建一个my.cnf配置文件,将以下内容写入到my.cnf配置文件中。
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
character-set-client-handshake=FALSE
collation-server=utf8_unicode_ci
init_connect='SET NAMES utf8'
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
3. 将需要恢复的数据库sql文件放到init文件夹中
将刚刚导出的sql文件复制到init文件夹中。
cp /opt/dbs/* ./init/
4. 编写docker-compose.yml
将以下文件写入到mysql目录下的docker-com.yml。
version: '3'
services:
mysql5.6:
restart: always
image: mysql:5.7.18
container_name: mysql-5.7.18
volumes:
- ./mydir:/mydir
- ./db:/var/lib/mysql
- ./conf/my.cnf:/etc/my.cnf
- ./init:/docker-entrypoint-initdb.d # 数据库还原目录 可将需要还原的sql文件放在这里
environment:
MYSQL_ROOT_PASSWORD: fv1sa5 # root用户密码,和之前数据库的密码一样
MYSQL_USER: flarum # 新建一个flarum用户,和之前数据库的用户名一样
MYSQL_PASSWORD: 7c1fhaiw # flarum用户密码,和之前数据库的密码一样
MYSQL_DATABASE: db_flarum # 新建一个db_flarum数据库
TZ: Asia/Shanghai
ports:
- 3506:3306 # 宿主机:容器
配置flarum
查看docker容器IP地址
使用ip addr show docker0查找docker容器的IP地址。
[root@ECS-4 flarum]# ip addr show docker0
6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:33:cd:b9:61 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:33ff:fecd:b961/64 scope link
valid_lft forever preferred_lft forever
从上面可以看到,docker容器IP地址为172.17.0.1,那我们在flarum站点配置主机地址为172.17.0.1就好了
配置flarum
打开flarum站点,修改config.php配置,只需要修改两个地方:
- host:主机地址,将localhost改为刚刚查询docker容器的IP地址,也就是
172.17.0.1 - port:主机端口,就是MySQL容器部署对外开放的端口,改为3506
username和password,你要是在部署数据库时,没有修改的话,那这里的数据库用户名和密码也不用修改。
注意:我之前在本机安装数据库时,数据库名我设置为db_flarum,数据表前缀我设置为tb_,你要根据自己的情况来修改前缀
<?php return array (
'debug' => false,
'database' =>
array (
'driver' => 'mysql',
'host' => '172.17.0.1',
'port' => 3506,
'database' => 'db_flarum',
'username' => 'flarum',
'password' => '7c1fhaiw',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => 'tb_',
'strict' => false,
'engine' => 'InnoDB',
'prefix_indexes' => true,
),
'url' => 'https://XXXX',
'paths' =>
array (
'api' => 'api',
'admin' => 'admin',
),
'headers' =>
array (
'poweredByHeader' => true,
'referrerPolicy' => 'same-origin',
),
);
修改完打开flarum站点就可以看到了。
文章参考
本文章来源于我的博客:https://blog.hikki.site


