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}…...
云原生文件系统之JuiceFS
JuiceFS 是一个分布式文件系统,专门为云原生环境设计,支持大规模数据存储和处理,特别适用于处理对象存储和大数据应用。JuiceFS 将元数据和数据分离,元数据保存在数据库中,而文件数据则存储在对象存储中,提…...
C++:输入和输出
一 . DEV C的下载和安装 二 . 第一个C程序 三 . 输出流 四 . 初始的数据类型 3.1、整型变量 3.2、双精度浮点数变量 3.3、字符型变量 3.4、字符串变量 3.5、无符号整型变量 五、输入流...
vue的路由的两种模式 hash与history 详细讲解
文章目录 1. Hash 模式工作原理优点缺点使用示例 2. History 模式工作原理优点缺点服务器配置示例使用示例 总结 Vue Router 是 Vue.js 的官方路由管理器,它支持多种路由模式,其中最常用的两种是 hash 模式和 history 模式。下面我们详细讲解这两种模式的…...
【Linux操作系统】进程间通信之匿名管道与命名管道
目录 一、进程间通信的目的:二、进程间通信的种类三、什么是管道四、匿名管道(共同祖先的进程之间)1.匿名管道的使用2.匿名管道举例3.匿名管道的原理4.管道特点5.管道的读写规则1. 当管道内没有数据可读时2.当管道满的时候3.管道端被关闭4.数…...
慢sql优化和Explain解析
要想程序跑的快,sql优化不可懈怠!今日来总结一下常用的慢sql的分析和优化的方法。 1、慢sql的执行分析: 大家都知道分析一个sql语句执行效率的方法是用explain关键词: 举例:sql:select * from test where bussiness_…...
ALIGN_ Tuning Multi-mode Token-level Prompt Alignment across Modalities
文章汇总 当前的问题 目前的工作集中于单模提示发现,即一种模态只有一个提示,这可能不足以代表一个类[17]。这个问题在多模态提示学习中更为严重,因为视觉和文本概念及其对齐都需要推断。此外,仅用全局特征来表示图像和标记是不…...
【Java SE】代码注释
代码注释 注释(comment)是用于说明解释程序的文字,注释的作用在于提高代码的阅读性(可读性)。Java中的注释类型包括3种,分别是: 单行注释多行注释文档注释 ❤️ 单行注释 基本格式ÿ…...
如何在算家云搭建Llama3-Factory(智能对话)
一、Llama3-Factory 简介 当地时间 4 月 18 日,Meta 在官网上宣布公布了旗下最新大模型 Llama 3。目前,Llama 3 已经开放了 80 亿(8B)和 700 亿(70B)两个小参数版本,上下文窗口为 8k。Llama3 是…...
操作数据表
创建表 创建表语法: CREATE TABLE table_name ( field1 datatype [COMMENT 注释内容], field2 datatype [COMMENT 注释内容], field3 datatype ); 注意: 1. 蓝色字体为关键字 2. CREATE TABLE 是创建数据表的固定关键字,表…...
C# 实现进程间通信的几种方式(完善)
目录 引言 一、基本概念 二、常见的IPC方法 1. 管道(Pipes) 2. 共享内存(Shared Memory) 3. 消息队列(Message Queues) 4. 套接字(Sockets) 5. 信号量(Semaphore…...
外贸做网站要多久做好/怎么给客户推广自己的产品
作者是一名从事儿网站运营的草根站长,做网站主要是为了增加一下兼职收入而已(相信大多数的站长朋友都是如此)! 事件起因; 小编8月10号建立了一个网站,想引一下蜘蛛,就在那些比较大型的站长经常进入的网站上找到了一个名为“XXX”的外链代发服…...
wordpress分享小图片不/上海网站设计公司
javascript简介 JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言. 不同于服务器端脚本语言,例如PHP与ASP,JavaScript是客户端脚本语言,也就是说JavaScript是在用户的浏览器上运行,不需要服务器的支持而可以独…...
离婚在线律师/郑州seo哪家专业
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net (1)Cookie数据存放在客户的浏览器上,Session数据放在服务器上。 …...
软件系统开发方案/对网站的建议和优化
C# Delegate 简介 -------------------------------------------------------------------------------- 发表时间:2004-10-9 作者:Stanley B. Lippman 来自 方舟 Blog [译序:这是一篇古老的文章。但毫无疑问,Lippman对delegate的…...
如何查看用wordpress建的站点/网站一级域名和二级域名
首先声明我不经常写js代码.对浏览器的兼容性积累经验不够,特别是IE6、7、8的兼容,总结此文章以便自己和大家一起积累,少花不必要的时间。 下面是我的js代码: /**** 保存修改数据* return*/function saveConten(){$.ajax({type:"POST",url:"emp.do?paramUpdat…...
网站做不做301/网站一级域名和二级域名区别
原文:点击打开链接 --缺失范围和现有范围(也称间断和孤岛问题) --1、缺失范围(间断) /* 收集人:TravyLee 时间:2012-03-25 如有引用,请标明“此内容源自MSSQL2008技术内幕之T-SQL” …...