跳轉到內容

專案

專案模組用於管理後端應用程式,支援 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.gocmd/server/main.go);啟動命令將變為 go<版本> run <進入點檔案>
    • 二進位檔:啟動命令指向位於 <專案目錄>/main 的已編譯二進位檔。

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

反向代理選項

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

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

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

專案管理

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

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

專案操作

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

編輯專案

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

基本設定

設定專案的基本資訊:

基本設定

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

執行設定

設定專案的執行參數:

執行設定

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

相依性

設定服務相依性以控制啟動順序:

相依性

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

常見服務:network.targetmysqld.servicepostgresql.serviceredis.service

資源限制

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

資源限制

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

安全設定

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

安全設定

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

注意

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

行程管理

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

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

後續步驟