前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Fiora 构建指南

Fiora 构建指南

原创
作者头像
Magneto
修改于 2023-08-10 10:38:31
修改于 2023-08-10 10:38:31
31600
代码可运行
举报
文章被收录于专栏:春花秋月春花秋月
运行总次数:0
代码可运行

原文发布于 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
代码运行次数:0
运行
AI代码解释
复制
# 查询 Node.js 版本
node -v
# 或者
node --version   

来查询使用的 Node.js 的版本

通常都是最新版本,而应该使用 Node.js v14 版本。切换完成后再运行上述命令来检查是否生效,如果没有生效,可以尝试重启服务器,并且在完成切换后,需要重新安装 yarn、安装依赖、构建客户端

开始构建

伺服器配置指南

虽然 Fiora 对配置的要求不高,但它并不是没有门槛,因为牵扯到对源代码进行构建,所以需要一定的配置。

  • 配置要求:1核心2GB或更高(推荐2核心2GB)
  • 网络要求:可以对外联网
  • 硬盘大小:2G以上
  • 环境要求:Node.js(版本v14)、MongoDBRedis
  • 服务器系统:Ubuntu22(采用该系统进行讲述构建指南)

关于 Node.js、MongoDB、Redis 就不叙述如何安装了,如果需要省事,可以安装我们的老朋友 BT.CN,并且选择安装 PM2管理器,这样的话就不需要额外再安装pm2、npm了。

构建指南

Web端构建

首先我们需要克隆项目至本地,在这之前请确保你的服务器具有 git 功能,一般情况下都是有的,输入以下命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 克隆项目至本地
git clone https://github.com/yinxin630/fiora.git -b master

值得注意的是,如果你的服务器地处国内,可能会克隆失败,你可以选择去GitHub里下载下来,再上传至服务器。在克隆完成后,需要进入 Fiora 目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /fiora

执行该段代码的时候注意,务必加上你现在所在的目录,假设我克隆 Fiora 的目录是 /www/project,那么我需要输入的指令就应该是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /www/project/fiora

接下来,我们务必确认使用的 Node.js 版本是否是 v14,请输入以下命令进行检查。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查询 Node.js 版本
node -v
# 或
node --version

因为这关乎到你所安装的 yarn 以及后续的构建的成功与否,如果不是 v14,请务必切换为 v14

在这之后,我们需要确认是否有 yarn,通常是没有的,如果你认为你已经安装了可以输入以下命令进行确认。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yarn -v

如果你确定你没有 yarn,则需要输入以下命令进行安装。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install -g yarn

稍等一段时间后,yarn就会完成安装,对于 yarn 一般是没有什么要求的,如果你确定有问题,可以尝试切换到 1.22.19 版本,这个版本经过测试是可以正常构建的。

然后就是正式构建 Fiora 了,正式构建 Fiora 其实很简单,只需要把上面工作完成,就可以输入命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yarn build:web

对 Fiora 进行构建了,在等待一段时间后,我们就完成了构建。

接下来,进行配置 JwtSecret,这个步骤虽然不知道为什么需要,但没有的话,是无法运行的,向命令行中输入以下命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "JwtSecret=<string>" > .env2

要将 <string> 替换为一个秘密文本

最后,就可以启动 Fiora 了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yarn start

在完成启动以后,使用浏览器打开 http://[ip地址]:[端口](比如 http://127.0.0.1:9200),就可以访问网站了,默认的端口是9200.

添加管理员

脚本 | Fiora Docs所提供的获取 UserID 的方式已经不再适用,不仅如此,其所有的脚本都不再适用,所以要获取 UserID 的唯一方法是,看日志

在注册用户并登录之后,控制台会返回一条信息,发送消息后控制台也会返回一条信息,在这条信息中,就包含有 UserID

蓝色圈起来的部分,就是 UserID,我们要将这段ID添加到 /packages/config/server.ts第34行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
cd /fiora/packages/app

在命令行中输入以下命令以安装最新的EAS CLI

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install -g eas-cli

然后去 Expo 注册一个账号,并记住账号密码,因为我们对 App 的构建是云构建,而不是本地构建。接下来登录账号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
eas login

输入刚刚注册的账号和密码,即可完成验证。然后在命令行中输入以下命令,选择你要打包的类型,使用↑、↓、ENTER(回车键)进行选择,我这里只选择 Android

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
eas build:configure

接下来输入以下命令,进行第一次构建

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
eas build --platform android

在等待10分钟左右以后,会在登录后的 Expo 的首页看到以下内容

点进去就可以下载到你的 .aab 格式的安装包了,没错是 .aab 而不是 .apk,所以我们需要第二次构建,在第二次构建前,我们需要去到 /fiora/packages/app 目录内,编辑一个 eas.json 的文件,将它的内容替换为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "build": {
    "preview": {
      "android": {
        "buildType": "apk"
      }
    },
    "preview2": {
      "android": {
        "gradleCommand": ":app:assembleRelease"
      }
    },
    "preview3": {
      "developmentClient": true
    },
    "production": {}
  }
}

然后我们再进行打包构建,但是这次我们使用的命令是以下内容,与上面所写的有所不同。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
eas build -p android --profile preview

再经过10分钟的等待,就完成了对 App 的构建,并且可以下载 .apk 格式的安装包了,它甚至帮你自动签了名。

但就如我说的,这个 App 无法与服务端通讯,需要大神的协助!!

端口问题

部分服务商有比较严格的防火墙策略,所以必须开放我们所需的端口,Fiora 所需的端口包括但不限于

  • 19002 构建 App 需要
  • 6379 构建 App 需要
  • 9200 Fiora Web端口,可自定义
  • 27017 数据库端口

其它问题

修改内容

假设你想对你的 Fiora 进行一定的修改,那么你务必查看这部分的内容。还是老话,由于一段时间前 Fiora 的代码进行了重构,导致 Fiora | Docs 在 2023 年的今天,已经不再那么适用了,它所给的目录结构也不再具有价值。所以如果你想修改 Fiora 的源代码,就务必查看我所写的部分目录构成。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
老鼠与毒药
有1000瓶药水,其中一瓶是有毒的,老鼠喝掉药水后,毒性会在24小时后发作。那最少需要多少只老鼠,能够在24小时后找出哪一瓶有毒呢?
小K算法
2021/05/31
8750
面试题十五期-一个腾讯的面试题~biu
1、1000瓶药水,其中至多有1瓶剧毒,现在给你10只小狗在24小时内通过小狗试药的方式找出哪瓶药有毒或者全部无毒(小狗服完药20小时后才能判断是否中毒)。
测试小兵
2019/11/21
5970
面试题十五期-一个腾讯的面试题~biu
一道刚遇到的面试题,面试官说答不出正常
大家周末愉快,今天分享一道很有意思的面试题目。 面试官问这道题之前还说:不用紧张,基本上没啥人可以答出来,你就发散着想想就行。 好了,废话不多说了,我们直接上题。 题目 现在有 10 只小白鼠和 1000 支药水,1000 支药水中有且仅有一支药水有毒,如果小白鼠喝下毒药,那么毒发的时间是两小时。 现在只给你两小时的时间,请问如何用这 10 只小白鼠测出哪支药水有毒?(忽略小白鼠喝药的时间)。 思考 当时听完这题,我第一反应是:这题是不是在逗我? 就 10 只小白鼠,喝 1000 支药水,那么一只小白鼠肯定
程序员鱼皮
2023/03/29
3390
一道刚遇到的面试题,面试官说答不出正常
尾部的0和小老鼠喝药
因此就有解法1: 1.对每个数字依次除以5,如果余数为0则+1,如果得到的商除以5余数仍为0则再加一,直到余数不为0再继续下一数字。 实例:
呼延十
2019/07/01
5560
从老鼠试毒问题来看二分法
很多人对于二分法的理解比较片面,之前碰到一个题目 " 从一个先升序后降序的数列中,比如 1 2 3 7 4 3 2 中运用二分法去查找一个给定的元素",很多人说根本不能二分,因为没有排序。其实 这道题完全可以使用二分查找进行解答, 如果你觉得不可以的话,很可能对二分法理解还比较片面。 这里以另外一个更加有趣(至少我认为)的例子来讲解一下二分法。
lucifer210
2019/12/24
1.7K0
[oeasy]python0083_十进制数如何存入计算机_八卦纪事_BCD编码_Binary_Coded_Decimal
编码进化 回忆上次内容 上次 研究了 视频终端的 演化 从VT05 到 VT100 从 黑底绿字 到 RGB 24位真彩色 形成了 VT100选项 从而 将颜色 数字化 了 生活中我们更常用
oeasy
2023/02/14
3400
[oeasy]python0083_十进制数如何存入计算机_八卦纪事_BCD编码_Binary_Coded_Decimal
【春节特辑】神奇的二进制
有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有 1 瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?
五分钟学算法
2019/09/03
6940
【春节特辑】神奇的二进制
老鼠和毒药的问题
  有1000只一模一样的瓶子,编号1-1000。其中999瓶是水,一瓶是看起来像水的毒药。只要老鼠喝下一小口毒药,一天后则死亡。现在,你有7只老鼠和一天的时间,如何检验出哪个号码瓶子里是毒药?
Wu_Candy
2022/07/04
1K0
老鼠和毒药的问题
薛定谔的猪
有1000个瓶子里面装满了水,其中1瓶里面被加入了毒药,但是滴入毒药的水在外观上看和普通水是一模一样的,也就是说这1000个瓶子是分不清哪瓶是装有毒药的,除非把装有毒药的水喝进肚子里。现在有一只可怜的猪可以用来实验,将其中一瓶水喂给这只猪喝,如果猪毒发身亡了,说明这瓶水有毒。猪并不需要喝完整瓶水,只需喝到一小口,毒性就会发作,如果水是有毒的话。
兜兜转转
2023/03/08
5370
薛定谔的猪
5-进制
本文目录 一、十进制 二、二进制 三、八进制 四、十六进制 五、进制总结 六、变量与进制
Python知识大全
2020/02/13
5620
《Java从入门到失业》第一章:计算机基础知识(1.1):二进制和十六进制
  最近7年来的高强度工作和不规律的饮食作息,压得我有些喘不过气,身体也陆续报警。2018年下半年的一场病,让我意识到了这个问题的严重性,于是开始强制自己有规律饮食和作息,并辅以健身锻炼,不到2年的时间,长期的腰痛和左肩膀痛竟然无药自愈,慢性胃炎也得到了缓解,于是我下定决心要坚持下去。
用户7801119
2020/09/27
6300
计算机基础(2)——进制与进制转换
进制也就是进位计数制,是人为定义的带进位的计数方法。 对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。
绿水长流z
2025/01/03
1760
计算机基础(2)——进制与进制转换
小朋友学C语言(18):二进制
一、十进制与二进制 我们日常所用到的计数方式,是十进制(数字用0,1,2,3,4,5,6,7,8,9这十个数字来表示)。 十进制的进位规则是”逢十进一”。 比如零、一、二、三、四、五、六、七、八、九都是用一位数来表示。再进一的话,是十。十无法用1位数来表示,所以要”进一”,用两位数来表示,即10。 19进一是二十,无法以1X来表示,所以得用20来表示。 99进一是一百,无法用9X来表示,所以得用100来表示。 计算机用二进制(数字用0和1来表示)来存储数据。二进制的进位规则是“逢二进一”。 零用0来表
海天一树
2018/04/17
1K0
小朋友学C语言(18):二进制
【进制转换】《进制大乱斗,谁才是真正的赢家!》
进制转换是计算机科学中的基础概念,也是编程和数字逻辑设计中的重要内容。掌握进制转换对于理解计算机内部运算机制、进行硬件设计和编写高效代码至关重要。本文将详细介绍各种进制及其相互转换方法。
LuckiBit
2024/12/11
2320
计算机常用的数制及编码
我们习惯使用的十进制数是由0、1、2、3、4、5、6、7、8、9十个不同的符号组成,每一个符号处于十进制数中不同的位置时,它所代表的实际数值是不一样的。例如1999年可表示成
张哥编程
2024/12/17
1720
C语言十进制与二进制的相互转换
计算机只认识二进制数(0和1),因为计算机是机器,它由逻辑电路组成,而逻辑电路一般情况下有两种状态,这两种状态分别是开关的闭合和断开,逻辑电路的这两种状态刚好就对应了二进制的 "1" 和 "0” 。常见的进制数有二进制、八进制、十进制、十六进制。在不同的进制之间还可以相互转换,如:二进制转十进制,十进制转二进制等等。今天我来给大家分享如何运用C语言编写代码来实现进制数之间的互相转换。
程序员小顺
2021/10/13
2.4K0
[c/c++后台开发面经] 京东面经(含答案)
1000瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验。喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天会死亡。如何在一天之内(第二天)找出这瓶有毒的药水?
C语言与CPP编程
2020/12/02
9250
[c/c++后台开发面经] 京东面经(含答案)
你说你会位运算,那你用位运算来解下八皇后问题吧
位运算在生产或算法解题中并不常见,不过如果你用得好,可以达到事半功倍的效果,而且位运算用得好,也可以极大地提升性能,如果在生产或面试中能看到使用位运算来解题,会让人眼前一亮,觉得你还是有点逼格的,巧用位运算,不仅会提升性能,还会让代码的可读性更好,达到四两拨千斤的效果,今天我们就来学学位运算在解题中的一些技巧,最后会用位运算来看看怎么解八皇后这道大 Boss 题,相信你看完肯定会有收获!
kunge
2020/03/26
9230
你说你会位运算,那你用位运算来解下八皇后问题吧
【BLE MIDI】MIDI 文件格式分析总结 ★★★
这个 mid 文件很简单 , 但是麻雀虽小 , 五脏俱全 , 其中有所有的必须的 midi 文件头 , midi 轨道头 , 时间标志 , 等信息 ;
韩曙亮
2023/03/29
1.7K0
【BLE MIDI】MIDI 文件格式分析总结 ★★★
二进制,八进制,十进制,十六进制数之间的转换方式
我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制也就是我们常用的0-9是逢10进一位。
岳泽以
2022/10/26
1.9K0
二进制,八进制,十进制,十六进制数之间的转换方式
推荐阅读
相关推荐
老鼠与毒药
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验