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 注册账号。
    注册完毕后,可以按照以下步骤创建一台自己的云服务器。

创建云服务器

点击 云产品云服务器立即购买
创建云服务器-1
选择距离你较近的区域,以保证低延迟。
选择区域
带宽建议选择上传和下载大于 30M 即可。
处理器和内存建议选择 2 核 4G。当然,如果想要部署好的的论坛运行更流畅,还是需要配上更好的配置。
配置选择和带宽大小
选择 Ubuntu 22.04 版本,并勾选预装 Docker,接下来的教程会用到 Docker。
选择系统和预装 docker
最后点击 立即购买,并按照提示进行购买。
购买后等待机器部署完毕,点击购买的服务器,进入管理面板,找到远程连接相关信息。
进入服务器管理界面
服务器用户名以及密码
使用 PowerShell 进行远程连接。
打开powershell
输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。
ssh连接
到此为止,我们的云服务器就创建好了。

使用命令安装

接下来,我会带大家一步一步安装。

更新和升级系统

apt update -y
apt upgrade -y

img

安装 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

img

检查 Apache、MariaDB 和 PHP 状态

确保 Apache 和 MariaDB 已启用并运行:

systemctl is-enabled apache2
systemctl status apache2systemctl is-enabled mariadb
systemctl status mariadb

img
img
验证 PHP 和 Composer 版本:

php -v
sudo -u www-data composer -v

img

配置防火墙

允许通过 UFW 防火墙访问 Apache:

ufw allow 'Apache Full'
ufw allow ssh
ufw enable

img

配置 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

img

保护 MariaDB

运行mariadb-secure-installation命令移除匿名用户,禁用远程root登录,并确保MariaDB的安全:

mariadb-secure-installation

img
img

创建新数据库和用户
登录 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';

img

现在键入 quit 退出 MariaDB 服务器。

设置目录并安装 Flarum

创建必要的目录,并将所有权更改为 www-data

mkdir -p /var/www/{.cache,.config,flarum}
chown -R www-data:www-data /var/www/{.cache,.config,flarum}

img
导航到 Flarum 目录,使用 Composer 安装:

cd /var/www/flarum/
sudo -u www-data composer create-project flarum/flarum .

img
img
验证文件:

ls -ah

img

为 Flarum 配置 Apache

启用 Apache 模块:

a2enmod ssl rewrite headers

img
创建一个新的虚拟主机文件:

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>

img

启用虚拟主机并重启 Apache

启用虚拟主机并验证 Apache 配置:

a2ensite flarum.conf
apachectl configtest

img
重新启动 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/463158.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-图

1. 感性的认识图 图是是数据结构中最复杂的一种。图的概念特别特别的多&#xff0c;相关的算法问题也很多。如果我们一开始就讲复杂的概念&#xff0c;可能很多同学都学不下去&#xff0c;太深奥&#xff0c;太枯燥。我们不妨先感性的认识图。 图看起来就像下图这样&#xff1…

普林斯顿微积分读本PDF(英文版原版)

普林斯顿微积分读本PDF英文版: https://caiyun.139.com/m/i?005Chb93yVHtQ 对于大多数学生来说&#xff0c;微积分或许是他们曾经上过的倍感迷茫且最受挫折的一门课程了. 而《普林斯顿微积分读本》 不仅让学生能有效地学习微积分&#xff0c;更重要的是提供了战胜微积分的必备…

Netty学习——NIO基础与IO模型

导学 Socket和NIO的区别 Socket和NIO是Java中用于网络编程的两个不同的API&#xff0c;具有不同的设计理念和用途。以下是它们的主要区别&#xff1a; 1. 定义 Socket: Socket是Java中用于实现网络通信的传统API&#xff0c;通常被称为Java I/O&#xff08;输入/输出&#…

Cesium基础-(Entity)-(ellipse)

里边包含Vue、React框架代码详细步骤、以及代码详细解释 6、ellipse 圆与椭圆 EllipseGeometry(椭圆几何体)是 Cesium 中用于在三维空间中创建椭圆形状的类。这种椭圆形状可以位于地球表面(或其他椭球体)上,也可以在地球表面上方或下方的一定高度。EllipseGeometry 允许你…

014:无人机遥控器操作

摘要&#xff1a;本文详细介绍了无人机遥控器及其相关操作。首先&#xff0c;解释了油门、升降舵、方向舵和副翼的概念、功能及操作方式&#xff0c;这些是控制无人机飞行姿态的关键部件。其次&#xff0c;介绍了美国手、日本手和中国手三种不同的操作模式&#xff0c;阐述了遥…

Java—— CompletableFuture

CompletableFuture 1、概述1.1、Future接口1.2、CompletionStage接口 2、CompletableFuture结构2.1、字段和常量2.2、内部类 3、CompletableFuture原理3.1、设计思想3.2、获取任务结果的实现不带参数的Get方法实现带超时参数的Get方法实现立即返回结果的GetNow方法实现 3.3、开…

uniapp使用uni.createInnerAudioContext()播放指定音频并且切换

uniapp使用uni.createInnerAudioContext()播放指定音频并且切换 因为做的小程序或者h5需要视频讲解或者音乐组件的 默认展示播放按钮&#xff0c;当点击播放的时候 显示暂停音乐这样的一个效果。 在unipp中我们直接只用uni.createInnerAudioContext()代替audio&#xff0c;使用…

《TCP/IP网络编程》学习笔记 | Chapter 2:套接字类型与协议设置

《TCP/IP网络编程》学习笔记 | Chapter 2&#xff1a;套接字类型与协议设置 《TCP/IP网络编程》学习笔记 | Chapter 2&#xff1a;套接字类型与协议设置套接字协议及其数据传输特性协议&#xff08;Protocol&#xff09;创建套接字协议族&#xff08;Protocol Family&#xff0…

小林渗透入门:burpsuite+proxifier抓取小程序流量

目录 前提&#xff1a; 代理&#xff1a; proxifier&#xff1a; 步骤&#xff1a; bp证书安装 bp设置代理端口&#xff1a; proxifier设置规则&#xff1a; proxifier应用规则&#xff1a; 结果&#xff1a; 前提&#xff1a; 在介绍这两个工具具体实现方法之前&#xff0…

举重场景哑铃图像分割系统:全面改进提升

举重场景哑铃图像分割系统源码&#xff06;数据集分享 [yolov8-seg-GhostHGNetV2&#xff06;yolov8-seg-EfficientHead等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AA…

【机器学习】连续属性离散化与sklearn.preprocessing.KBinsDiscretizer

1. KBinsDiscretizer的定义 KBinsDiscretizer是 scikit-learn 库中的一个类&#xff0c;用于将连续数据离散化成区间&#xff08;bins&#xff09;。这个类通过将特征值分配到 k 个等宽的区间&#xff08;bins&#xff09;来实现离散化&#xff0c;并且可以配置不同的编码方式…

OpenGL入门002——顶点着色器和片段着色器

文章目录 一些概念坐标转换阶段顶点着色器片段着色器VBOVAO 实战简介main.cppCMakeLists.txt最终效果 一些概念 坐标转换阶段 概述&#xff1a; 模型空间、世界空间、视图空间和裁剪空间是对象在3D场景中经历的不同坐标变换阶段。每个空间对应渲染管道的一个步骤&#xff0c;…

使用 Elastic、OpenLLMetry 和 OpenTelemetry 跟踪 LangChain 应用程序

作者&#xff1a;来自 Elastic Bahubali Shetti Langchain 应用程序的使用正在增长。构建基于 RAG 的应用程序、简单的 AI 助手等的能力正在成为常态。观察这些应用程序更加困难。考虑到现有的各种选项&#xff0c;本博客展示了如何将 OpenTelemetry 检测与 OpenLLMetry 结合使…

【Linux】从零开始使用多路转接IO --- select

碌碌无为&#xff0c;则余生太长&#xff1b; 欲有所为&#xff0c;则人生苦短。 --- 中岛敦 《山月记》--- 从零开始认识五种IO模型 1 前言2 认识多路转接select3 多路转接select等待连接4 完善代码5 总结 1 前言 上一篇文章我们讲解了五种IO模型的基本概念&#xff0c;并…

客户端与微服务之间的桥梁---网关

当我们创建好了N多个微服务或者微服务的实例之后&#xff0c;每个服务暴露出不同的端口地址&#xff0c;一般对于客户端请求&#xff0c;只需要请求一个端口&#xff0c;要隔离客户端和微服务的直接关系&#xff0c;保证微服务的安全性和灵活性&#xff0c;避免敏感信息的泄露。…

docker部署nginx+nacos+redis+java镜像和容器

nginx镜像制作 Dockerfile内容&#xff1a; # 基础镜像 FROM nginx # author MAINTAINER ruoyi# 挂载目录 VOLUME /home/ruoyi/projects/ruoyi-ui # 创建目录 RUN mkdir -p /home/ruoyi/projects/ruoyi-ui # 指定路径 WORKDIR /home/ruoyi/projects/ruoyi-ui # 复制conf文件到路…

MiniWord

1.nuget 下载配置 2.引用 3. var value = new Dictionary<string, object>() { ["nianfen"] = nianfen, ["yuefen"] = yuefen, ["yuefenjian1"] = (int.Par…

SpringBoot篇(简化操作的原理)

目录 一、代码位置 二、统一版本管理&#xff08;parent&#xff09; 三、提供 starter简化 Maven 配置 四、自动配置 Spring&#xff08;引导类&#xff09; 五、嵌入式 servlet 容器 一、代码位置 二、统一版本管理&#xff08;parent&#xff09; SpringBoot项目都会继…

Jetson OrinNX平台CSI相机导致cpu load average升高问题调试

1. 前言 硬件: Orin NX JP: 5.1.2, R35.4.1 用v4l2-ctl --stream-mmap -d0 命令去获取相机数据时, 用top查看cpu使用情况, CPU占用率很低,但load average在1左右, 无任何程序运行时,load average 为0 用ps -aux 查看当前进程情况,发现有两个系统进程vi-output, …

Iceoryx2:高性能进程间通信框架(中间件)

文章目录 0. 引言1. 主要改进2. Iceoryx2 的架构3. C示例代码3.1 发布者示例&#xff08;publisher.cpp&#xff09;3.2 订阅者示例&#xff08;subscriber.cpp&#xff09; 4. 机制比较5. 架构比较6. Iceoryx vs Iceoryx2参考资料 0. 引言 Iceoryx2 是一个基于 Rust 实现的开…