Flarum问答社区
Flarum问答社区
小码同学前言
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
1 | version: '3.1' |
部署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
1 | sudo yum -y install epel-release |
2.切换到PHP8 remi源
1 | sudo yum-config-manager --enable remi-php80 |
3. 安装PHP相关扩展
在安装PHP相关依赖时,可以将下面这部分的PHP扩展添加进去,在yum源中,PHP的扩展可以通过yum安装。
1 | 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启动文件过去就可以了。
1 | cp /usr/bin/php /usr/local/bin/php |
5. 启动PHP
1 | systemctl start php-fpm |
安装Composer
1. 下载安装脚本
1 | php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" |
2. 执行安装
1 | php composer-setup.php |
3. 删除安装脚本
1 | php -r "unlink('composer-setup.php');" |
4. 设置Composer全局命令
1 | sudo mv composer.phar /usr/local/bin/composer |
创建数据库
1. 进入数据库
1 | mysql -uroot -p |
回车之后需要输入root用户密码
2. 创建数据库
1 | create database db_flarum; |
3. 创建db_flarum专用的用户
1 | create user 'flarum'@'localhost' identified by '7c6fwgLskw+'; |
创建一个用户名为flarum
,密码为7c6fwgLskw+
的用户。
4. 设置db_flarum数据库归flarum用户所有
1 | grant all on db_flarum.* to 'flarum'@'localhost'; |
5. 刷新权限
1 | flush privileges; |
创建Flarum项目
1. 创建flarum目录
1 | mkdir -p /www/flarum |
2. 进入flarum目录
1 | cd /www/flarum |
3. 初始化flarum项目
1 | composer create-project flarum/flarum . |
初始化后的flarum是没有config.php的配置文件的,flarum会检测config.php配置文件是否存在,如果存在,则直接使用,若不存在,则打开web页面会自动创建的,所以,不需要刻意去创建这个配置文件。
4. 设置权限
1 | chmod -R 777 /www/flarum |
先赋予flarum文件夹777权限,因为初始化时没有创建config.php文件,flarum需要有创建config.php文件的权限,而创建这个文件的用户是
apache
,该用户需要有权限7,所以就先设置777,后面初始化完再将权限改为775。
如果你还有www用户或者www-data用户,则继续赋予权限
1 | chown -R www:www /www/flarum |
配置Nginx
1 | # 问答平台 |
我在本地配置了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项目根目录
1 | cd /www/flarum |
使用Docker方式部署
1. 进入容器
1 | docker exec -it flarum sh |
2. 进入Flarum程序目录
1 | cd flarum/app/ |
设置阿里云下载服务
composer默认的库不在国内,如果你是国内的服务器,下载速度可以不理想,你可以切换到国内的阿里云库,全局安装阿里云的网络下载服务
1 | composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ |
安装中文插件
1 | composer require flarum-lang/chinese-simplified:* |
建立全站中文搜索
进入MySQL数据库
使用Docker方式部署
1. 进入MySQL的容器
1 | docker exec -it flarum-db /bin/bash |
进入mysql数据库
1 | mysql -uflarum -phBf4sdf14 |
- 用户名:flarum
- 密码:hBf4sdf14
注意,-u和后面的用户名是没有空格的,是连在一起的。
-p和后面的面也是连在一起的,没有空格
建立索引
进入了mysql数据库后,分别执行下面四条mysql语句
1 | use db_flarum -- 进入db_flarum |
tb_posts、tb_discussions是数据表,如果你你在建立站时没有设置表前缀的话,则表名是和我一样的。
清除缓存
仪表盘-->工具-->清除缓存
测试效果
可以搜索到中文的内容了。
配置其他信息
邮箱激活用户
Flarum默认使用邮箱激活用户,用户在注册时,会发送一条链接到用户注册的邮箱,用户需要点击链接才激活账号,但在这之前,你需要配置一个发送邮件的邮箱信息。
地址:邮箱地址
驱动:smtp
主机:smtp.163.com
端口:465
加密协议:ssl
用户名:aa1341151056@163.com
密码:ITGDHERHSDPVX
安装其他插件
- 进入容器
- 进入Flarum程序目录
- 安装插件
进入flarum项目根目录
1 | cd /www/flarum |
使用Docker方式部署
1. 进入容器
1 | docker exec -it flarum sh |
2. 进入Flarum程序目录
1 | cd flarum/app/ |
安装插件
安装插件前建议设置阿里云下载仓库,不然下载速度会有点慢,如果设置过就不需要重复设置
根据自己的需求安装对应的插件。
1 | # 简体中文支持 |
可能有部分插件已失效
已失效插件
1 | # 图片放大 缩小 -- 只有这个库支持 fof 图片放大缩小扩展!!! -- 点击图片可放大查阅(已失效) |
登录回复可见插件
解决方案:https://discuss.flarum.org.cn/d/2565
常用指令
凡是跟插件
composer
有关的,必须进入到容器中里面的flarum/app/
目录下执行
安装完成插件后有异常时执行
1 | php flarum cache:clear |
更新插件
1 | composer update fof/best-answer |
卸载插件
格式:composer remove 插件名
1 | 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用户。
1 | mysql -uflarum -p |
输入上面命令进入MySQL程序,需要输入flarum用户的密码,
查看当前用户全部数据库
1 | mysql> show databases; |
可以看到,flarum用户只能查看到information_schema
和db_flarum
数据库,没有发现mysql
数据库,说明权限还不够,需要root权限才可以看到mysql数据库。
那这个information_schema数据库是干嘛的呢?为什么我们没有创建他也会存在?
information_schema 存储关于 MySQL 数据库中所有对象(如表,列,索引等)的元数据信息,提供了一种标准化的方式来查询 MySQL 中的数据库结构信息;
导出数据库
1. 创建dbs存储数据库
1 | mkdir -p /opt/dbs/ |
我们使用mysqldump 命令来导出数据库,回车之后需要输入root用户密码。
2. 导出db_flarum数据库
1 | mysqldump -uroot -p db_flarum > /opt/dbs/db_flarum.sql |
3. 导出mysql数据库
1 | mysqldump -uroot -p mysql > /opt/dbs/mysql.sql |
部署MySQL数据库
编写docker-compose
1. 创建一个mysql的文件夹,并进入文件夹
1 | mkdir -p /home/docker/mysql/{mydir,db,conf,init} && cd /home/docker/mysql |
2. 编写mysql配置信息
在conf目录下,新建一个my.cnf配置文件,将以下内容写入到my.cnf配置文件中。
1 | [mysqld] |
3. 将需要恢复的数据库sql文件放到init文件夹中
将刚刚导出的sql文件复制到init文件夹中。
1 | cp /opt/dbs/* ./init/ |
4. 编写docker-compose.yml
将以下文件写入到mysql目录下的docker-com.yml。
1 | version: '3' |
配置flarum
查看docker容器IP地址
使用ip addr show docker0
查找docker容器的IP地址。
1 | [root@ECS-4 flarum]# ip addr show docker0 |
从上面可以看到,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_,你要根据自己的情况来修改前缀
1 | <?php return array ( |
修改完打开flarum站点就可以看到了。
文章参考
本文章来源于我的博客:https://blog.hikki.site