跳轉到內容

專案 ​

Project overview

專案模組用於管理後端應用程式,支援 Go、Java、Node.js、PHP、Python、.NET 等多種語言。專案以系統服務的形式執行,支援自動重啟、開機自動啟動等功能。

專案類型 ​

類型說明使用情境
GoGo 語言專案Gin、Echo、Fiber 框架
JavaJava 專案Spring Boot、Tomcat 等。
Node.jsNode.js 專案Express、Koa、NestJS 等。
PHPPHP 專案Laravel Octane、Swoole 等。
PythonPython 專案Django、Flask、FastAPI 等。
.NET.NET 專案ASP.NET Core、Blazor、gRPC
General其他類型的專案任何可執行的程式

專案與網站的差異 ​

功能專案網站
執行模式獨立行程依賴 Web 伺服器
行程管理自動重啟、開機自動啟動由 Web 伺服器管理
使用情境後端服務、API傳統 Web 應用程式
外部存取需要反向代理直接存取

建立專案 ​

  1. 前往專案頁面
  2. 點選建立專案

設定項目 ​

  • 專案名稱:專案識別碼,用作服務名稱(僅支援字母、數字、底線與連字號)
  • 專案目錄:專案檔案所在的目錄。若留空,則預設使用設定的專案路徑串接專案名稱(例如 /opt/ace/projects/<專案名稱>)
  • 執行使用者:執行專案的系統使用者,預設 www(你也可以選擇 root / nobody,或輸入自訂使用者)
  • 啟動命令:啟動專案的命令
  • 反向代理:是否自動建立反向代理網站

類型專屬輔助欄位 ​

當你從特定語言分頁(Go、Java、Node.js、PHP、Python 或 .NET)開啟建立對話框時,會出現額外的輔助欄位,協助你編寫啟動命令:

  • 版本選擇:為所選語言挑選一個已安裝的執行環境版本。列表只顯示已在 應用 > 執行環境 中實際安裝的版本。
  • 框架:選擇一個框架預設。選擇預設(除自訂以外的任意項)會自動以 <執行環境><版本> <預設命令> 的形式填入啟動命令(例如 python3.12 -m flask run --host=0.0.0.0)。產生的命令仍可完全編輯。
  • Go 執行模式(僅 Go):在原始碼與二進位檔之間選擇。
    • 原始碼:選擇一個 Go 版本與一個進入點檔案(例如 main.go、cmd/server/main.go);啟動命令將變為 go<版本> run <進入點檔案>。
    • 二進位檔:啟動命令指向位於 <專案目錄>/main 的已編譯二進位檔。

這些輔助欄位僅影響產生的啟動命令;面板最終儲存的是命令本身,因此你隨時可以手動覆寫它。

反向代理選項 ​

啟用反向代理後,會出現兩個額外的輸入項:

  • 網域:反向代理網站的一個或多個網域(至少需要一個)。
  • 專案連接埠:你的應用程式監聽的本機連接埠。建立的網站監聽 80 連接埠,並代理至 http://127.0.0.1:<專案連接埠>。

會先建立反向代理網站;如果失敗,則不會建立專案。

專案管理 ​

專案清單會顯示以下資訊:

  • 名稱:專案名稱
  • 說明:專案說明
  • 類型:專案類型(Go/Java/Node.js 等)
  • 狀態:服務狀態 — 執行中(active)、已停止(inactive)、失敗(failed)或未啟用(預設/未知)之一
  • 開機自動啟動:是否開機自動啟動(可直接從清單切換)
  • 目錄:專案目錄
  • 操作:啟動、停止、重啟、日誌等。

專案操作 ​

  • 啟動:啟動專案
  • 停止:停止專案
  • 重啟:重啟專案(僅在執行時顯示)
  • 重載:在不完全重啟的情況下重載專案(僅在執行時顯示)
  • 日誌:檢視專案執行日誌
  • 編輯:修改專案設定
  • 刪除:刪除專案(需要 5 秒確認倒數)
  • 批次刪除:透過列的核取方塊選擇多個專案,然後使用清單上方的刪除按鈕一次移除它們(同樣需要 5 秒確認倒數)

編輯專案 ​

點選專案清單中的編輯按鈕即可修改專案設定。編輯對話框包含多個分頁:

基本設定 ​

設定專案的基本資訊:

  • 專案名稱:專案識別碼,用作服務名稱
  • 說明:專案的說明資訊
  • 專案目錄:專案檔案所在的目錄
  • 工作目錄:程式執行時的工作目錄,預設為專案目錄
  • 執行使用者:執行專案的系統使用者

執行設定 ​

設定專案的執行參數:

  • 啟動命令:啟動專案的命令
  • 啟動前命令:啟動前要執行的命令(選填)
  • 啟動後命令:啟動後要執行的命令(選填)
  • 停止命令:自訂停止命令(選填)
  • 重載命令:自訂重載命令(選填)
  • 重啟策略:不重啟、總是重啟、失敗時重啟、異常時、中止時或成功時
  • 重啟間隔:兩次重啟之間的等待時間
  • 最大重啟次數:連續重啟的最大次數
  • 啟動逾時:等待服務啟動的逾時時間
  • 停止逾時:等待服務停止的逾時時間
  • 標準輸出:如何處理標準輸出
  • 標準錯誤:如何處理標準錯誤
  • 環境變數:為專案執行設定環境變數

相依性 ​

透過相依性選擇器選擇 systemd 單元,以控制啟動順序:

  • Requires:強相依性,若這些服務無法使用,專案將會失敗
  • Wants:弱相依性,若這些服務失敗,專案仍會啟動
  • After:在指定的服務之後啟動此專案
  • Before:在指定的服務之前啟動此專案

常見服務:network.target、mysqld.service、postgresql.service、redis.service

資源限制 ​

設定資源限制以避免服務佔用過多系統資源:

  • 記憶體限制:限制專案使用的最大記憶體,0 表示不限制
  • CPU 配額:限制 CPU 使用率,100% = 1 個 CPU 核心

安全設定 ​

增強服務隔離的安全選項:

  • No New Privileges:防止行程取得新的權限
  • 保護 /tmp:為服務建立一個私有的 /tmp 目錄
  • 保護 /home:限制對 /home 目錄的存取
  • 保護系統:為系統目錄設定唯讀保護等級
    • true:/usr、/boot 為唯讀
    • full:+ /etc 為唯讀
    • strict:整個檔案系統為唯讀
  • 可讀寫路徑:服務可以讀取與寫入的路徑
  • 唯讀路徑:服務只能讀取的路徑

使用路徑選擇器設定可讀寫與唯讀路徑,無需手動輸入路徑清單。

注意

安全設定可能會影響某些功能。啟用前請充分測試。

行程管理 ​

專案使用 systemd 進行行程管理,具有以下功能:

  • 自動重啟:行程異常結束後自動重啟
  • 開機自動啟動:系統開機時自動啟動專案
  • 日誌管理:自動記錄標準輸出與錯誤輸出

後續步驟 ​