zzxworld

使用 Flarum 搭建社交论坛

PHP 生态下的开源程序真是繁荣,一连几天体验了各种不同类型的开源建站程序,大部分都是基于 PHP 语言。今天要尝试的这款搭建论坛的程序也是,它的名字叫 Flarum

准备工作

Flarum 基于 PHP 语言,所以准备工作就是老样子: 先搭建 PHP 环境。目前最新版本的 Flarum 对 PHP 的版本要求是 7.3 以上,建议 7.4。然后需要 MySQL 数据库的支持,版本 5.6 以上。

另外这次 Flarum 安装源码的方式跟之前直接下载代码包的方式不一样,会通过 composer 命令来创建项目,所以还需要安装好 Composer 这个 PHP 的依赖管理工具。

准备好这些后,就可以开始安装了。

安装 Flarum

打开命令行工具,进入 PHP 项目目录,然后通过 composer 命令来自动创建项目目录和文件:

composer create-project flarum/flarum bbs

最后的 bbs 是自定义的项目名称,可以根据自己需要输入。确认输入无误后,按回车执行以上命令。

Screenshot-composer

上面是命令执行的截图,可以看到会自动开始创建目录和依赖的软件包。命令执行完成后,当前目录下会出现以上面命令中最后自定义名称命名的目录。我定义的是 bbs,所以就会多出一个 bbs 目录。这个目录就是 Flarum 程序的源码了。通过浏览器访问其中的 public 目录,如果 PHP 运行环境配置正常的话,应该会看到如下的程序安装界面:

Install-Flarum

依次设置好站点名称,MySQL 数据库连接配置,以及管理员账号后,点击「Install Flarum」按钮开始安装。

稍等片刻等安装完成,程序会自动跳回到站点首页,而且默认就是已登陆状态。这个流程比之前体验的几款建站程序体验好上不少。

My-Test-BBS

左侧大大的 「Start a Discussion」是发帖按钮。我在这里碰到了和使用 Typecho 时一样的问题,发帖的 Tag 无法选择。测试了一下发现是没有配置地址重写的原因。到 Nginx 添加了一行地址重写的配置就解决了。

try_files   $uri $uri/ /bbs/public/index.php?$query_string;

点击右侧的用户名,会弹出一个下拉菜单。最下面的「Administration」是后台的管理入口。下面是打开后的管理界面:

My-Test-BBS-admin

Flarum 本身的配置很简单,基本就权限和用户这两大块。其他的都是扩展插件的方式来管理的。比如 MarkDown,BBCode 等。这意味着自己也可以通过写插件的方式来扩展 Flarum 的功能。

体验总结

对于 Flarum 我感觉没啥好总结的,主要是我平常不怎么逛论坛,所以也体验不出所以然。不过就程序界面和交互操作来看,是非常值得推荐使用的。

Flarum 的界面比较有特色。国内目前论坛性质的社区在界面上基本就两种样式。一种是以 Discuz 为代表的传统样式,另外就是一大堆 V2 的样式。而 Flarum 则是提供了第三种选择。

我个人对 Flarum 的功能组织方式比较感兴趣。浏览它的代码目录就可以发现,如果把 vendor 这个依赖目录拿掉的话,剩下来的基本就没有什么代码文件了。这意味着它所有的功能都是以第三方包的方式来组织的。所以它完全使用 composer 命令来安装或删除扩展。通过了解这种代码组织方式对自己以后写一些通用组件式功能时会很有帮助。

今天的体验就先到这了,最后友情提示一下,因为 Flarum 安装方式的特殊性,对不熟悉 PHP 语言的朋友,请在身边了解 PHP 开发方式的人指导下安装体验。

版权声明

本文为原创内容, 使用「创意共享 3.0 许可证」。在非商用的前提下可自由转载,需保留来源和署名。

使用 Zen Cart 搭建购物网站

昨天在体验 OpenCart 时,顺便提了一下 Zen Cart。之后搜了下,没想到它还健在。既然还在,那我今天就来介绍一下这个曾经让我又爱有恨的电商网站软件:Zen Cart。

使用 OpenCart 搭建购物网站

连续体验了两天博客类的建站软件,有点乏了。换换口味,来看看搭建电商购物网站的软件,今天要尝试的是 OpenCart。

使用 Typecho 搭建博客网站

开源程序体验第二篇,今天来尝试一个从功能上看和 WordPress 很像的建站程序:Typecho。

安装和使用 WordPress

最近准备开始体验一些开源的 Web 程序,所以接下来会分享一些相关体验文章。内容会涵盖安装和一些基础性的功能使用介绍,以及个人想法。作为这个系列文章的第一篇,就献给人气爆棚的 WordPress 了。