Flarum:简洁而强大的开源论坛软件
Flarum简介
Flarum是一款开源论坛软件,以其简洁、快速和易用性而闻名。它继承了esoTalk和FluxBB的优良传统,旨在提供一个不复杂、不臃肿的论坛体验。Flarum的核心优势在于:
- 快速、简单: Flarum使用PHP构建,易于部署,界面采用高性能的JavaScript框架Mithril,确保了论坛的响应速度和简洁性。
- 漂亮、响应式: 以人为本的设计哲学让Flarum在不同设备和平台上都能提供一致且直观的用户体验。
- 强大、可扩展: Flarum允许你根据社区需求进行定制、扩展或集成,基于MIT协议发布,保证了其灵活性和自由度。
- 免费、开源: Flarum以MIT许可证发布,意味着你可以自由使用、修改和分发。

Flarum的哲学和价值观深深植根于其开源社区,它鼓励并依赖社区的贡献来不断改进和扩展。无论是开发者、技术写作者、翻译者还是普通用户,每个人都可以为Flarum项目贡献自己的力量。
接下来,我将详细介绍如何在Linux上部署Flarum,并提供一些基本的使用教程,让你能够快速上手并充分利用Flarum的强大功能。
环境准备
服务器准备
必要前提:
- 一台有公网 IP 的 Linux 服务器,可以选择腾讯云,阿里云,或者雨云等。
- 本文以 雨云 为例。
你可以点击此链接 https://www.rainyun.com/NTEzMTM1_?s=blog 注册账号。
注册完毕后,可以按照以下步骤创建一台自己的云服务器。
创建云服务器
点击 云产品 → 云服务器 → 立即购买。

选择距离你较近的区域,以保证低延迟。

带宽建议选择上传和下载大于 30M 即可。
处理器和内存建议选择 2 核 4G。当然,如果想要部署好的的论坛运行更流畅,还是需要配上更好的配置。

选择 Ubuntu 22.04 版本,并勾选预装 Docker,接下来的教程会用到 Docker。

最后点击 立即购买,并按照提示进行购买。
购买后等待机器部署完毕,点击购买的服务器,进入管理面板,找到远程连接相关信息。


使用 PowerShell 进行远程连接。

输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

到此为止,我们的云服务器就创建好了。
使用命令安装
接下来,我会带大家一步一步安装。
更新和升级系统
apt update -y
apt upgrade -y
安装 LAMP 堆栈和其他依赖项
安装 Apache、MariaDB、PHP 和其他所需的依赖项:
apt install apache2 mariadb-server php php-common php-mysql libapache2-mod-php php-gd php-curl php-json php-xmlrpc php-intl php-bcmath php-zip php-apcu php-mbstring php-fileinfo php-xml php-soap php-tokenizer composer git -y
检查 Apache、MariaDB 和 PHP 状态
确保 Apache 和 MariaDB 已启用并运行:
systemctl is-enabled apache2
systemctl status apache2systemctl is-enabled mariadb
systemctl status mariadb


验证 PHP 和 Composer 版本:
php -v
sudo -u www-data composer -v
配置防火墙
允许通过 UFW 防火墙访问 Apache:
ufw allow 'Apache Full'
ufw allow ssh
ufw enable
配置 PHP 设置
编辑php.ini文件以符合你的环境要求:
nano /etc/php/8.3/apache2/php.ini
更新以下设置:
memory_limit = 512M
upload_max_filesize = 150M
max_execution_time = 600
date.timezone = Asia/Shanghai
重新启动 Apache 以应用更改:
systemctl restart apache2
保护 MariaDB
运行mariadb-secure-installation命令移除匿名用户,禁用远程root登录,并确保MariaDB的安全:
mariadb-secure-installation
创建新数据库和用户
登录 MariaDB 并创建数据库和用户:
mariadb -u root -p
运行以下 SQL 查询:
CREATE DATABASE flarum;
CREATE USER 'flarum'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON flarum.* TO 'flarum'@'localhost';
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'flarum'@'localhost';

现在键入 quit 退出 MariaDB 服务器。
设置目录并安装 Flarum
创建必要的目录,并将所有权更改为 www-data:
mkdir -p /var/www/{.cache,.config,flarum}
chown -R www-data:www-data /var/www/{.cache,.config,flarum}

导航到 Flarum 目录,使用 Composer 安装:
cd /var/www/flarum/
sudo -u www-data composer create-project flarum/flarum .


验证文件:
ls -ah
为 Flarum 配置 Apache
启用 Apache 模块:
a2enmod ssl rewrite headers

创建一个新的虚拟主机文件:
nano /etc/apache2/sites-available/flarum.conf
插入以下配置:
<VirtualHost *:80>ServerAdmin contact@example.comDocumentRoot /var/www/flarum/publicServerName example.com<Directory /var/www/flarum/public/>Options FollowSymlinksAllowOverride AllRequire all granted</Directory>ErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined<Directory /var/www/flarum/public/>RewriteEngine onRewriteBase /RewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*) index.php [PT,L]</Directory>
</VirtualHost>
启用虚拟主机并重启 Apache
启用虚拟主机并验证 Apache 配置:
a2ensite flarum.conf
apachectl configtest

重新启动 Apache 以应用更改:
systemctl restart apache2

使用 Certbot 安装 SSL 证书
安装 Certbot 和 Apache 插件:
apt install certbot python3-certbot-apache

生成 SSL 证书:
certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email contact@example.com -d example.com

从浏览器访问 Flarum
打开浏览器,转到
https://example.com/
你会看到 Flarum 安装向导。按照说明设置论坛。

安装完成后,你将看到如下所示的 Flarum 管理面板:

点击用户图标,选择管理。这将显示 Flarum 安装的详细信息。

Docker 方式部署
也许你会觉得命令方式部署太复杂了,接下来,我会再教给大家如何使用 Docker 方式部署
拉取Flarum Docker镜像
你可以直接从Docker Hub拉取最新的mondedie/flarum镜像,或者从GitHub手动构建它:
# 从Docker Hub拉取:
docker pull mondedie/flarum:latest# 或者从GitHub手动构建:
docker build -t mondedie/flarum:latest https://github.com/mondediefr/docker-flarum.git
配置Docker Compose
创建一个docker-compose.yml文件,配置Flarum服务和相关的MariaDB数据库服务:
version: "3"services:flarum:image: mondedie/flarum:stablecontainer_name: flarumenv_file:- /mnt/docker/flarum/flarum.envvolumes:- /mnt/docker/flarum/assets:/flarum/app/public/assets- /mnt/docker/flarum/extensions:/flarum/app/extensions- /mnt/docker/flarum/storage/logs:/flarum/app/storage/logs- /mnt/docker/flarum/nginx:/etc/nginx/flarumports:- 80:8888depends_on:- mariadbmariadb:image: mariadb:10.5container_name: mariadbenvironment:- MYSQL_ROOT_PASSWORD=xxxxxxxxxx- MYSQL_DATABASE=flarum- MYSQL_USER=flarum- MYSQL_PASSWORD=xxxxxxxxxxvolumes:- /mnt/docker/mysql/db:/var/lib/mysql
设置环境变量
创建一个环境变量文件flarum.env,配置Flarum和数据库的必要信息:
# vi /mnt/docker/flarum/flarum.envDEBUG=false
FORUM_URL=http://domain.tld# 数据库配置
DB_HOST=mariadb
DB_NAME=flarum
DB_USER=flarum
DB_PASS=xxxxxxxxxx
DB_PREF=flarum_
DB_PORT=3306# Flarum管理员用户(首次安装必需的环境变量)
# 注意:管理员密码至少包含8个字符
FLARUM_ADMIN_USER=admin
FLARUM_ADMIN_PASS=xxxxxxxxxx
FLARUM_ADMIN_MAIL=admin@domain.tld
FLARUM_TITLE=Test flarum
运行Docker Compose
启动MariaDB和Flarum容器:
docker-compose up -d mariadb
# 等待数据库创建
docker-compose up -d flarum
到这里,你就可以快速地使用Docker部署Flarum论坛。这种方法不仅简化了安装过程,还提高了论坛的可移植性和安全性。
如果你想查看更多高级的使用,可以继续看下面的内容。
安装其他 php 扩展
version: "3"services:flarum:image: mondedie/flarum:stablecontainer_name: flarumenvironment:- PHP_EXTENSIONS=gmp session brotlivolumes:- /mnt/docker/flarum/assets:/flarum/app/public/assets- /mnt/docker/flarum/extensions:/flarum/app/extensions- /mnt/docker/flarum/storage/logs:/flarum/app/storage/logs- /mnt/docker/flarum/nginx:/etc/nginx/flarum
安装自定义扩展
**Flarum扩展列表 😗*https://rob006-software.github.io/flarum-translations/status/zh_Hans.html

安装扩展
docker exec -ti flarum extension require some/extension
删除扩展
docker exec -ti flarum extension remove some/extension
列出所有扩展
docker exec -ti flarum extension list
相关链接
雨云 - 新一代云服务提供商:https://www.rainyun.com/NTEzMTM1_?s=blog
我的博客:https://blog.ivwv.site
相关文章:
Flarum:简洁而强大的开源论坛软件
Flarum简介 Flarum是一款开源论坛软件,以其简洁、快速和易用性而闻名。它继承了esoTalk和FluxBB的优良传统,旨在提供一个不复杂、不臃肿的论坛体验。Flarum的核心优势在于: 快速、简单: Flarum使用PHP构建,易于部署&…...
方法+数组
1. 方法 1. 什么是方法 方法定义: // []表示可写可不写[public] [static] type name ( [type formal , type formal , ...]){方法体;[return value ;] }[修饰符] 返回值类型 方法名称([参数类型 形参 , 参数类型 形参 ...]){方法体代码;[return 返回值…...
驱动-----adc
在key1.c的基础上进行对adc1.c进行编写 首先将文件里面的key全部改为adc 再修改一下设备号 按键和adc的区别是什么,按键只需要按一下就触发了,并且不需要返回一个值出来, adc要初始化,启动,返回值 以下是裸机adc的代码: #include <s3c2440.h> #include "ad…...
js实现点击图片,使图片跟随鼠标移动(把注释打开是图片随机位置)
代码: <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title>&l…...
MacOS的powermetrics命令查看macbook笔记本的耗能情况,附带查看ANE的工作情况
什么是 powermetrics? powermetrics 是 macOS 系统自带的一个命令行工具,用于收集和分析系统能源消耗数据。通过它,我们可以深入了解 Mac 的硬件性能、软件行为以及能源使用情况,从而优化系统配置,提高电池续航时间。…...
字符串函数
大家好,今天我们来了解几个字符串函数 1.strcpy函数 这个函数是一个字符串复制函数,其全称为string copy,它可以将一个源字符数组的内容复制到目标字符数组中,我们需要关注几个问题,首先源字符串必须以\0…...
Java数组的地址和元素访问 C语言空指针与野指针
1. public static void main(String[] args) {int []arr{1,2,3,4,5};int numarr[0];System.out.println(num);System.out.println(arr[1]);System.out.println(arr);//[I610f87f48//[表示地址 I表示数据类型 表示间隔符号(固定格式)//10f87f48表示地址…...
如何在Linux系统中使用SSH进行安全连接
如何在Linux系统中使用SSH进行安全连接 SSH简介 安装SSH 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 启动SSH服务 验证SSH是否安装成功 SSH配置 配置监听端口 配置登录方式 SSH客户端 安装SSH客户端 使用SSH客户端 SSH密钥认证 生成SSH密钥对 复制公钥到远程服务器…...
Pandas 数据可视化指南:从散点图到面积图的全面展示
Pandas 数据可视化指南:从散点图到面积图的全面展示 本文介绍了使用 Pandas 进行数据可视化的多种方法,包括散点图、折线图、条形图、直方图、饼图和面积图等,涵盖了常见的图表类型及其实现方式。通过提供详细的代码示例,展示了如…...
Flink + Kafka 实现通用流式数据处理详解
Flink Kafka 实现通用流式数据处理详解 在大数据时代,实时数据处理和分析成为企业快速响应市场变化、提高业务效率和优化决策的关键技术。Apache Flink和Apache Kafka作为两个重要的开源项目,在数据流处理领域具有广泛的应用。本文将深入探讨Flink和Ka…...
Docker常用命令汇总
一、Docker基础命令 启动docker:systemctl start docker关闭docker:systemctl stop docker重启docker:systemctl restart dockerdocker设置随服务启动而自启动:systemctl enable docker查看docker 运行状态:systemctl…...
【Java笔记】0-为什么学习Java
呃,当然是为了找个Java的开发工作 当然是由于Java使用的人多和它天生自带的优点了~ 主要优点有以下几点: 简单性 C语法纯净版,没有头文件、指针运算、不用分配内存 面向对象 重点放在对象与其接口上,接近人的逻辑 可移植性 …...
海外云手机是什么?对外贸电商有什么帮助?
在外贸电商领域,流量引流已成为卖家们关注的核心问题。越来越多的卖家开始利用海外云手机,通过TikTok等社交平台吸引流量,以推动商品在海外市场的销售。那么,海外云手机到底是什么?它又能为外贸电商卖家提供哪些支持呢…...
【找到了】有人知道怎么在本地用记事本方式打开Linux文本文件吗?
就类似这种,我输入一个什么命令打开文件,就能在命令窗口上弹出一个编辑器来编辑文件。只记得好像有参数-e啥的。 命令行里面如何打开文本编辑器? () 在linux命令行terminal上使用gedit直接就可以打开文本文件 那么在…...
docker 安装postgresql
前提:准备好postgresql镜像,如:镜像地址/postgres:15.8 使用docker安装posgresql: 1.docker pull 镜像地址/postgres:15.8 2.docker run -d --namepostgres -p 5432:5432 -v postgres-volume:/var/lib/postgresql/data -e PO…...
2004至2023中国分省统计面板数据-最新出炉_附下载链接
中国各省绿色税收相关数据(2007-2022年)概述 下载链接-点它👉👉👉:中国分省统计面板数据(2004-2023)-最新出炉.zip 资源介绍 绿色税收主要是指以保护环境、合理开发利用自然资源、…...
【算法】排序算法总结
文章目录 内排序一、插入排序1.1 直接插入排序1.2 折半插入排序1.3 希尔排序 二、选择排序2.1 简单选择排序2.2 堆排序 三、交换排序3.1 冒泡排序3.2 快速排序Hoare版挖坑法快速排序前后指针法快速排序的非递归 四、归并排序递归版本非递归版本 五、基数排序六、计数排序内排序…...
双11来了,云计算优惠大集合
京东云 2C2G强烈推荐 连接直达...
13. MapReduce自定义OutputFormat
一. OutputFormat简介 OutputFormat是MapReduce输出的基类,所有MapReduce输出都实现了OutputFormat接口,它接收ReduceTask产生的数据,然后将结果按照指定格式输出。 在MapReduce中,如果不指定,默认使用的是TextOutpu…...
Javase——正则表达式
正则表达式的相关使用 public static void main(String[] args) {//校验QQ号 System.out.println("3602222222".matches("[1-9][0-9]{4,}"));// 校验18位身份证号 System.out.println("11050220240830901X".matches("^([0-9]){7,18}…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...









