banner
Magneto

Magnetoの小屋

Magneto在區塊鏈上の小屋,讓我們的文章在互聯網上永遠熠熠生輝!!

Fiora 建構指南

前言#

為了滿足我早年學計算機的願望之一 —— 聊天室,特地再來進行一次對 Fiora 的構建,特別是我曾經構建 Fiora 過多次,只有一次成功,是因為使用了 docker 進行安裝,使用的是鏡像文件,所以不能算真正意義上的構建成功,這次要寫的構建指南是指的基於源代碼進行構建。

Fiora#

一個由 碎碎醬 開發的聊天室系統,由於種種原因,Fiora 已經不再更新,且很少有維護,所以在如今的 2023 年想要再次跑起來 Fiora,是一個非常難的問題,並且 Fiora docs 敘述得並不夠詳細,對新人構建來說十分容易踩坑。拋開很少維護和難以構建來說,其實 Fiora 本身是一個十分出色的聊天室系統。

避坑指南#

如果你已經大致掌握了 Fiora 的構建機制,但是有一些問題無法克服的話,在這裡為你指點一下。

    1. Node.js 版本問題,請使用 v14 LTS 版本
      如果你在 yarn build:web 時,也就是構建客戶端時遇到了類似於圖片上的問題

image

這大概是由於你的 Node.js 版本過高導致的,畢竟這是一個始於 2015 年的項目,在如今使用高版本的 Node.js 是不禮貌的。在圖中的倒數第 6 行命令可以看到 列出了現在你所使用的 Node.js 版本,如果你實在沒找到可以執行命令

# 查詢 Node.js 版本
node -v
# 或者
node --version

來查詢使用的 Node.js 的版本

image

通常都是最新版本,而應該使用 Node.js v14 版本。切換完成後再運行上述命令來檢查是否生效,如果沒有生效,可以嘗試重啟伺服器,並且在完成切換後,需要重新安裝 yarn、安裝依賴、構建客戶端

    1. 構建客戶端時間過長,請升級伺服器,推薦 2 核心 2G RAM
    1. 獲取 UserID,使用 Fiora 內置命令是無法獲取到 UserID 的,請檢查控制台
    1. 構建 Fiora 配套 App 問題,需要使用新的構建方式,而不是使用 Fiora docs 內所寫的方式。但還請注意,由於 Fiora 在一段時間前對代碼進行了重構,或許 App 將無法再與服務端通訊

開始構建#

伺服器配置指南#

雖然 Fiora 對配置的要求不高,但它並不是沒有門檻,因為牽扯到對源代碼進行構建,所以需要一定的配置。

  • 配置要求:1 核心 2GB 或更高(推薦 2 核心 2GB)
  • 網絡要求:可以對外聯網
  • 硬盤大小:2G 以上
  • 環境要求:Node.js (版本 v14)、MongoDB、Redis
  • 伺服器系統:Ubuntu22(採用該系統進行講述構建指南)

關於 Node.js、MongoDB、Redis 就不敘述如何安裝了,如果需要省事,可以安裝我們的老朋友 BT.CN,並且選擇安裝 PM2 管理器,這樣的話就不需要額外再安裝 pm2、npm 了。

構建指南#

Web 端構建#

首先我們需要克隆項目至本地,在這之前請確保你的伺服器具有 git 功能,一般情況下都是有的,輸入以下命令

# 克隆項目至本地
git clone https://github.com/yinxin630/fiora.git -b master

值得注意的是,如果你的伺服器地處國內,可能會克隆失敗,你可以選擇去 GitHub 裡下載下來,再上傳至伺服器。在克隆完成後,需要進入 Fiora 目錄

cd /fiora

執行該段代碼的時候注意,務必加上你現在所在的目錄,假設我克隆 Fiora 的目錄是 /www/project,那麼我需要輸入的指令就應該是

cd /www/project/fiora

接下來,我們務必確認使用的 Node.js 版本是否是 v14,請輸入以下命令進行檢查。

# 查詢 Node.js 版本
node -v
# 或
node --version

image

因為這關乎到你所安裝的 yarn 以及後續的構建的成功與否,如果不是 v14,請務必切換為 v14

image

在這之後,我們需要確認是否有 yarn, 通常是沒有的,如果你認為你已經安裝了可以輸入以下命令進行確認。

yarn -v

如果你確定你沒有 yarn, 則需要輸入以下命令進行安裝。

npm install -g yarn

稍等一段時間後,yarn 就會完成安裝,對於 yarn 一般是沒有什麼要求的,如果你確定有問題,可以嘗試切換到 1.22.19 版本,這個版本經過測試是可以正常構建的。

23/12/23 補充 解決了一系列的問題,支持了 fiora 內置的命令行工具

安裝項目所需依賴

yarn install

image

然後將 Fiora 項目鏈接起來

yarn link "fiora"

然後就是正式構建 Fiora 了,正式構建 Fiora 其實很簡單,只需要把上面工作完成,就可以輸入命令

yarn build:web

對 Fiora 進行構建了,在等待一段時間後,我們就完成了構建。

接下來,進行配置 JwtSecret,這個步驟雖然不知道為什麼需要,但沒有的話,是無法運行的,向命令行中輸入以下命令

echo "JwtSecret=<string>" > .env2

要將 <string> 替換為一個秘密文本

最後,就可以啟動 Fiora 了

yarn start

在完成啟動以後,使用瀏覽器打開 http://[ip地址]:[端口](比如 http://127.0.0.1:9200),就可以訪問網站了,默認的端口是 9200.

添加管理員#

此章節使用了 Fiora 內置的腳本,如果無法執行,請檢查是否將 Fiora 項目鏈接起來。

yarn link "fiora"

通常來講,如果使用上述的構建步驟,不需要檢查,即可添加管理員。

更多 Fiora 內置腳本參見→腳本 | Fiora Docs

在成功啟動 Fiora 後,會進入 Fiora 的運行日誌。讓我們進入成功啟動的地址,註冊一個用戶,並且記住用戶名。我們鍵盤同時按 CTRL 鍵和 C 鍵,退出運行日誌。

fiora getUserId [username]

[username] 部分就是所註冊的用戶的用戶名,通過此方法獲得用戶的 UserID

image

658637b993f5dbef4c3e1f0a 就是我們所需的 UserID,我們要將這段 ID 添加到 /packages/config/server.ts第34行

administrator: env.Administrator ? env.Administrator.split(',') : ["658637b993f5dbef4c3e1f0a"],

配置完成後,重新啟動 Fiora 即可。

無法解決的問題#

App 構建#

在查閱大量資料,發現 Fiora App | fiora docs 所提供的構建方式完全不可能在 2023 年的今天成功構建,絕對會大量報錯!而且在我成功構建完成 App 後發現,由於一段時間前 Fiora 的代碼進行了重構,導致 App 在 2023 年的今天,已經無法再和自己的服務端通訊了!!!!!!!!!即使是碎碎醬自己的 App 也不行了,我在這裡寫 App 的構建的原因是,如果有熱心的大神看到,可以幫忙解決一下這個問題!!

在完成 Web 構建時,會在 /fiora/packages 目錄裡有一個 app 目錄,進入裡面,這是我們構建 App 所圍繞的目錄

cd /fiora/packages/app

在命令行中輸入以下命令以安裝最新的 EAS CLI

npm install -g eas-cli

然後去 Expo 註冊一個賬號,並記住賬號密碼,因為我們對 App 的構建是雲構建,而不是本地構建。接下來登錄賬號

eas login

輸入剛剛註冊的賬號和密碼,即可完成驗證。然後在命令行中輸入以下命令,選擇你要打包的類型,使用ENTER(回車鍵)進行選擇,我這裡只選擇 Android。

eas build:configure

接下來輸入以下命令,進行第一次構建

eas build --platform android

在等待 10 分鐘左右以後,會在登錄後的 Expo 的首頁看到以下內容

image

點進去就可以下載到你的 .aab 格式的安裝包了,沒錯是 .aab 而不是 .apk,所以我們需要第二次構建,在第二次構建前,我們需要去到 /fiora/packages/app 目錄內,編輯一個 eas.json 的文件,將它的內容替換為

{
  "build": {
    "preview": {
      "android": {
        "buildType": "apk"
      }
    },
    "preview2": {
      "android": {
        "gradleCommand": ":app:assembleRelease"
      }
    },
    "preview3": {
      "developmentClient": true
    },
    "production": {}
  }
}

然後我們再進行打包構建,但是這次我們使用的命令是以下內容,與上面所寫的有所不同。

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 的源代碼,就務必查看我所寫的部分目錄構成。

# 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 無法與服務端通訊的問題,請發送至我的郵箱 [email protected] 感激不盡!

參考#

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/

此文由 Mix Space 同步更新至 xLog 原始鏈接為 https://fmcf.cc/posts/technology/Fiora-Setup-Guide

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。