原文发布于 Fiora 构建指南 – 春花秋月 (fmcf.cc) 中,若要获得最好的阅读体验,可前往原文查看
前言
为了满足我早年学计算机的愿望之一 —— 聊天室,特地再来进行一次对 Fiora 的构建,特别是我曾经构建 Fiora 过多次,只有一次成功,是因为使用了 docker 进行安装,使用的是镜像文件,所以不能算真正意义上的构建成功,这次要写的构建指南是指的基于源代码进行构建。
Fiora
一个由 碎碎酱 开发的聊天室系统,由于种种原因,Fiora 已经不再更新,且很少有维护,所以在如今的 2023 年想要再次跑起来 Fiora,是一个非常难的问题,并且 Fiora docs 叙述得并不够详细,对新人构建来说十分容易踩坑。抛开很少维护和难以构建来说,其实 Fiora 本身是一个十分出色的聊天室系统。
避坑指南
如果你已经大致掌握了 Fiora 的构建机制,但是有一些问题无法克服的话,在这里为你指点一下。
- Node.js 版本问题,请使用 v14 LTS 版本
- 构建客户端时间过长,请升级服务器,推荐 2核心2G RAM
- 获取 UserID,使用 Fiora 内置命令是无法获取道 UserID 的,请检查控制台
- 构建 Fiora 配套 App 问题,需要使用新的构建方式,而不是使用 Fiora docs 内所写的方式。但还请注意,由于 Fiora 在一段时间前对代码进行了重构,或许 App 将无法再与服务端通讯。
解决问题 1 的方法:
如果你在 yarn build:web
时,也就是构建客户端时遇到了类似于图片上的问题
这大概是由于你的 Node.js 版本过高导致的,毕竟这是一个始于 2015 年的项目,在如今使用高版本的 Node.js 是不礼貌的。在图中的倒数第 6 行命令可以看到 列出了现在你所使用的 Node.js 版本,如果你实在没找到可以执行命令
代码语言:javascript复制# 查询 Node.js 版本
node -v
# 或者
node --version
来查询使用的 Node.js 的版本
通常都是最新版本,而应该使用 Node.js v14 版本。切换完成后再运行上述命令来检查是否生效,如果没有生效,可以尝试重启服务器,并且在完成切换后,需要重新安装 yarn、安装依赖、构建客户端
开始构建
伺服器配置指南
虽然 Fiora 对配置的要求不高,但它并不是没有门槛,因为牵扯到对源代码进行构建,所以需要一定的配置。
- 配置要求:1核心2GB或更高(推荐2核心2GB)
- 网络要求:可以对外联网
- 硬盘大小:2G以上
- 环境要求:Node.js(版本v14)、MongoDB、Redis
- 服务器系统:Ubuntu22(采用该系统进行讲述构建指南)
关于 Node.js、MongoDB、Redis 就不叙述如何安装了,如果需要省事,可以安装我们的老朋友 BT.CN,并且选择安装 PM2管理器,这样的话就不需要额外再安装pm2、npm了。
构建指南
Web端构建
首先我们需要克隆项目至本地,在这之前请确保你的服务器具有 git 功能,一般情况下都是有的,输入以下命令
代码语言:javascript复制# 克隆项目至本地
git clone https://github.com/yinxin630/fiora.git -b master
值得注意的是,如果你的服务器地处国内,可能会克隆失败,你可以选择去GitHub里下载下来,再上传至服务器。在克隆完成后,需要进入 Fiora 目录
代码语言:javascript复制cd /fiora
执行该段代码的时候注意,务必加上你现在所在的目录,假设我克隆 Fiora 的目录是 /www/project
,那么我需要输入的指令就应该是
cd /www/project/fiora
接下来,我们务必确认使用的 Node.js 版本是否是 v14,请输入以下命令进行检查。
代码语言:javascript复制# 查询 Node.js 版本
node -v
# 或
node --version
因为这关乎到你所安装的 yarn 以及后续的构建的成功与否,如果不是 v14,请务必切换为 v14
在这之后,我们需要确认是否有 yarn,通常是没有的,如果你认为你已经安装了可以输入以下命令进行确认。
代码语言:javascript复制yarn -v
如果你确定你没有 yarn,则需要输入以下命令进行安装。
代码语言:javascript复制npm install -g yarn
稍等一段时间后,yarn就会完成安装,对于 yarn 一般是没有什么要求的,如果你确定有问题,可以尝试切换到 1.22.19 版本,这个版本经过测试是可以正常构建的。
然后就是正式构建 Fiora 了,正式构建 Fiora 其实很简单,只需要把上面工作完成,就可以输入命令
代码语言:javascript复制yarn build:web
对 Fiora 进行构建了,在等待一段时间后,我们就完成了构建。
接下来,进行配置 JwtSecret,这个步骤虽然不知道为什么需要,但没有的话,是无法运行的,向命令行中输入以下命令
代码语言:javascript复制echo "JwtSecret=<string>" > .env2
要将 <string>
替换为一个秘密文本
最后,就可以启动 Fiora 了
代码语言:javascript复制yarn start
在完成启动以后,使用浏览器打开 http://[ip地址]:[端口]
(比如 http://127.0.0.1:9200
),就可以访问网站了,默认的端口是9200.
添加管理员
脚本 | Fiora Docs所提供的获取 UserID 的方式已经不再适用,不仅如此,其所有的脚本都不再适用,所以要获取 UserID 的唯一方法是,看日志。
在注册用户并登录之后,控制台会返回一条信息,发送消息后控制台也会返回一条信息,在这条信息中,就包含有 UserID
蓝色圈起来的部分,就是 UserID,我们要将这段ID添加到 /packages/config/server.ts
的 第34行
中
administrator: env.Administrator ? env.Administrator.split(',') : ["64b2c2924b305017fe1fbee9"],
并且如此书写,上述 64b2c2924b305017fe1fbee9
是我的 UserID,添加管理员,请将上述 UserID 要添加的管理员就可以了。
App构建
在查阅大量资料,发现 Fiora App | fiora docs 所提供的构建方式完全不可能在 2023 年的今天成功构建,绝对会大量报错!而且在我成功构建完成 App 后发现,由于一段时间前 Fiora 的代码进行了重构,导致 App 在 2023 年的今天,已经无法再和自己的服务端通讯了!!!!!!!!!即使是碎碎酱自己的App也不行了,我在这里写 App 的构建的原因是,如果有热心的大神看到,可以帮忙解决一下这个问题!!
在完成 Web 构建时,会在 /fiora/packages 目录里有一个 app 目录,进入里面,这是我们构建 App 所围绕的目录
代码语言:javascript复制cd /fiora/packages/app
在命令行中输入以下命令以安装最新的EAS CLI
代码语言:javascript复制npm install -g eas-cli
然后去 Expo 注册一个账号,并记住账号密码,因为我们对 App 的构建是云构建,而不是本地构建。接下来登录账号
代码语言:javascript复制eas login
输入刚刚注册的账号和密码,即可完成验证。然后在命令行中输入以下命令,选择你要打包的类型,使用↑、↓、ENTER(回车键)进行选择,我这里只选择 Android。
代码语言:javascript复制eas build:configure
接下来输入以下命令,进行第一次构建
代码语言:javascript复制eas build --platform android
在等待10分钟左右以后,会在登录后的 Expo 的首页看到以下内容
点进去就可以下载到你的 .aab 格式的安装包了,没错是 .aab 而不是 .apk,所以我们需要第二次构建,在第二次构建前,我们需要去到 /fiora/packages/app
目录内,编辑一个 eas.json
的文件,将它的内容替换为
{
"build": {
"preview": {
"android": {
"buildType": "apk"
}
},
"preview2": {
"android": {
"gradleCommand": ":app:assembleRelease"
}
},
"preview3": {
"developmentClient": true
},
"production": {}
}
}
然后我们再进行打包构建,但是这次我们使用的命令是以下内容,与上面所写的有所不同。
代码语言:javascript复制eas build -p android --profile preview
再经过10分钟的等待,就完成了对 App 的构建,并且可以下载 .apk 格式的安装包了,它甚至帮你自动签了名。
但就如我说的,这个 App 无法与服务端通讯,需要大神的协助!!
端口问题
部分服务商有比较严格的防火墙策略,所以必须开放我们所需的端口,Fiora 所需的端口包括但不限于
- 19002 构建 App 需要
- 6379 构建 App 需要
- 9200 Fiora Web端口,可自定义
- 27017 数据库端口
其它问题
- 配置文件:配置 | Fiora Docs
- 自定义域名:反向代理 | Fiora Docs
修改内容
假设你想对你的 Fiora 进行一定的修改,那么你务必查看这部分的内容。还是老话,由于一段时间前 Fiora 的代码进行了重构,导致 Fiora | Docs 在 2023 年的今天,已经不再那么适用了,它所给的目录结构也不再具有价值。所以如果你想修改 Fiora 的源代码,就务必查看我所写的部分目录构成。
代码语言:javascript复制# Fiora 部分目录构成
|-- [.githubb] // github actions
|-- [.vscode] // vscode 工作区配置
|-- [packages] // 所有源代码的存储目录
|------ [app] // App 源代码
|---------- [src] // App 源代码
|-------------- [pages] // App 前端UI
|---------- [app.json] // 打包 App 基本信息
|---------- [src] // App 源代码
|------ [assets] // 静态资源
|------ [config] // Fiora 配置文件夹
|---------- [client.ts] // 客户端配置
|---------- [server.ts] // 服务端配置
|------ [database] // 数据库方法,一般情况勿动
|------ [server] // 构建完成后存放的Web
|------ [utils] // utils
|------ [web] // Web 源代码
|---------- [src] // Web 源代码
|-------------- [modules] // Web 前端UI
|-- .eslintignore // eslint 忽略
|-- .eslintrc // eslint 配置
|-- .gitignore // git 忽略
|-- Dockerfile // docker 文件
|-- LICENSE // fiora 许可
|-- docker-compose.yaml // docker compose 配置
|-- package.json // npm
|-- tsconfig.json // typescript 配置
|-- yarn.lock // yarn
...
结束
这些是我这次搭构建 Fiora 所经历的一切,希望可以为后来人构建 Fiora 避开一些坑,或者教新手如何 构建 Fiora 聊天室,本文或许还有部分不详尽的地方,希望可以多多担待,有问题麻烦指出来,我会进行改进,并且如果有大神有办法解决 App 无法与服务端通讯的问题,请发送至我的邮箱 magneto@88.com 感激不尽!
参考
Fiora Docs:https://yinxin630.github.io/fiora/zh-Hans/
Create your first build:https://docs.expo.dev/build/setup/
Expo CLI:https://docs.expo.dev/more/expo-cli/#installation
Build APKs for Android Emulators and devices:https://docs.expo.dev/build-reference/apk/