專案
專案模組用於管理後端應用程式,支援 Go、Java、Node.js、PHP、Python、.NET 等多種語言。 專案以系統服務的形式執行,支援自動重啟、開機自動啟動等功能。
專案類型
| 類型 | 說明 | 使用情境 |
|---|---|---|
| Go | Go 語言專案 | Gin、Echo、Fiber 框架 |
| Java | Java 專案 | Spring Boot、Tomcat 等。 |
| Node.js | Node.js 專案 | Express、Koa、NestJS 等。 |
| PHP | PHP 專案 | Laravel Octane、Swoole 等。 |
| Python | Python 專案 | Django、Flask、FastAPI 等。 |
| .NET | .NET 專案 | ASP.NET Core、Blazor、gRPC |
| General | 其他類型的專案 | 任何可執行的程式 |

專案與網站的差異
| 功能 | 專案 | 網站 |
|---|---|---|
| 執行模式 | 獨立行程 | 依賴 Web 伺服器 |
| 行程管理 | 自動重啟、開機自動啟動 | 由 Web 伺服器管理 |
| 使用情境 | 後端服務、API | 傳統 Web 應用程式 |
| 外部存取 | 需要反向代理 | 直接存取 |
建立專案
- 前往專案頁面
- 點選建立專案

設定項目
- 專案名稱:專案識別碼,用作服務名稱(僅支援字母、數字、底線與連字號)
- 專案目錄:專案檔案所在的目錄。 若留空,則預設使用設定的專案路徑串接專案名稱(例如
/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的已編譯二進位檔。
- 原始碼:選擇一個 Go 版本與一個進入點檔案(例如
這些輔助欄位僅影響產生的啟動命令;面板最終儲存的是命令本身,因此你隨時可以手動覆寫它。
反向代理選項
啟用反向代理後,會出現兩個額外的輸入項:
- 網域:反向代理網站的一個或多個網域(至少需要一個)。
- 專案連接埠:你的應用程式監聽的本機連接埠。 建立的網站監聽
80連接埠,並代理至http://127.0.0.1:<專案連接埠>。
會先建立反向代理網站;如果失敗,則不會建立專案。
專案管理
專案清單會顯示以下資訊:
- 名稱:專案名稱
- 說明:專案說明
- 類型:專案類型(Go/Java/Node.js 等)
- 狀態:服務狀態 — 執行中(active)、已停止(inactive)、失敗(failed)或未啟用(預設/未知)之一
- 開機自動啟動:是否開機自動啟動(可直接從清單切換)
- 目錄:專案目錄
- 操作:啟動、停止、重啟、日誌等。
專案操作
- 啟動:啟動專案
- 停止:停止專案
- 重啟:重啟專案(僅在執行時顯示)
- 重載:在不完全重啟的情況下重載專案(僅在執行時顯示)
- 日誌:檢視專案執行日誌
- 編輯:修改專案設定
- 刪除:刪除專案(需要 5 秒確認倒數)
- 批次刪除:透過列的核取方塊選擇多個專案,然後使用清單上方的刪除按鈕一次移除它們(同樣需要 5 秒確認倒數)
編輯專案
點選專案清單中的編輯按鈕即可修改專案設定。 編輯對話框包含多個分頁:
基本設定
設定專案的基本資訊:

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

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

- 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 進行行程管理,具有以下功能:
- 自動重啟:行程異常結束後自動重啟
- 開機自動啟動:系統開機時自動啟動專案
- 日誌管理:自動記錄標準輸出與錯誤輸出
後續步驟
- Go 專案 - 部署 Go 應用程式
- Java 專案 - 部署 Java 應用程式
- Node.js 專案 - 部署 Node.js 應用程式
- PHP 專案 - 部署 PHP 應用程式
- Python 專案 - 部署 Python 應用程式
- .NET 專案 - 部署 .NET 應用程式
- General 專案 - 部署其他類型的應用程式
