Fiora 构建指南

2023-08-10 18:38:31 浏览数 (2)

原文发布于 Fiora 构建指南 – 春花秋月 (fmcf.cc) 中,若要获得最好的阅读体验,可前往原文查看

前言

为了满足我早年学计算机的愿望之一 —— 聊天室,特地再来进行一次对 Fiora 的构建,特别是我曾经构建 Fiora 过多次,只有一次成功,是因为使用了 docker 进行安装,使用的是镜像文件,所以不能算真正意义上的构建成功,这次要写的构建指南是指的基于源代码进行构建

Fiora

一个由 碎碎酱 开发的聊天室系统,由于种种原因,Fiora 已经不再更新,且很少有维护,所以在如今的 2023 年想要再次跑起来 Fiora,是一个非常难的问题,并且 Fiora docs 叙述得并不够详细,对新人构建来说十分容易踩坑。抛开很少维护和难以构建来说,其实 Fiora 本身是一个十分出色的聊天室系统。

避坑指南

如果你已经大致掌握了 Fiora 的构建机制,但是有一些问题无法克服的话,在这里为你指点一下。

  1. Node.js 版本问题,请使用 v14 LTS 版本
  2. 构建客户端时间过长,请升级服务器,推荐 2核心2G RAM
  3. 获取 UserID,使用 Fiora 内置命令是无法获取道 UserID 的,请检查控制台
  4. 构建 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,那么我需要输入的指令就应该是

代码语言:javascript复制
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行

代码语言:javascript复制
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 的文件,将它的内容替换为

代码语言:javascript复制
{
  "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/

0 人点赞