ServBay 目錄結構詳解
ServBay 是一款專為 macOS 設計的本地 Web 開發環境,其目錄結構設計簡潔且有條理。如果您熟悉 Linux/Unix 系統,會發現 ServBay 的檔案組織方式與標準的檔案系統佈局有許多相似之處,有助於開發者快速定位與管理各類檔案。
理解 ServBay 的目錄結構對於高效進行本地開發、設定環境、故障排除及備份資料都至關重要。本文將詳細介紹 ServBay 的主要目錄及其用途。
一個典型的 ServBay 安裝目錄結構如下:
ServBay
|____backup # 備份檔案目錄
| |____config # 設定備份
| |____databases # 資料庫備份
| |____ssl # SSL 憑證備份
| |____websites # 網站檔案備份
|____bin # 使用者可執行檔目錄 (連結至 package/bin)
|____data # ServBay 內部資料目錄
| |____servbay # ServBay 核心設定與資料
|____db # 資料庫檔案儲存目錄
| |____mariadb # MariaDB 資料檔案
| |____mongodb # MongoDB 資料檔案
| |____mysql # MySQL 資料檔案
| |____postgresql # PostgreSQL 資料檔案
| |____redis # Redis 資料檔案
|____etc # 設定檔目錄 (連結至 package/etc)
|____logs # 日誌檔案目錄 (連結至 package/var/log)
|____package # 軟體套件安裝目錄
| |____bin # 軟體套件可執行檔
| |____common # 共用函式庫與開發庫
| | |____imap-uw
| | |____include # 標頭檔 (ServBay 開發函式庫)
| | |____lib # 共用及靜態函式庫 (ServBay 開發函式庫)
| | |____libexec
| | |____openssl
| | |____share
| |____etc # 軟體套件設定檔實際儲存位置
| | |____caddy
| | |____dnsmasq
| | |____mariadb
| | |____mongodb
| | |____mysql
| | |____nginx
| | |____openldap
| | |____php
| | |____postgresql
| | |____redis
| | |____... (其他套件如 Python, Go, Java, Ruby, Rust 等的設定)
| |____<package_name> # 各軟體套件主目錄
| | |____<major_version> # 主要版本號目錄
| | | |____<full_version> # 完整版本號目錄 (含軟體本體)
| | | |____current # 指向最新完整版本的連結
| | |____...
| |____sbin # 軟體套件系統級可執行檔
| |____var # 軟體套件變數資料 (如 logs 實際位置)
| | |____log # 日誌實際儲存位置
| | |____run # 執行時檔案 (如 .pid 檔案)
|____sbin # 系統級可執行檔目錄 (連結至 package/sbin)
|____script # ServBay 內部管理指令檔
|____ssl # SSL 憑證目錄
| |____acme # 透過 ACME 協定申請的 SSL 憑證
| |____caddy # Caddy 自動生成的 SSL 憑證
| |____import # 使用者匯入的第三方 SSL 憑證
| |____private # ServBay User CA
| |____public # ServBay Public CA
|____tmp # 暫存檔及 Socket 檔目錄
|____www # 網站根目錄
| |____servbay # 範例網站目錄2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
以下將詳細說明各個目錄的用途。
ServBay 主目錄
ServBay 的主目錄預設位於 /Applications/ServBay。所有 ServBay 相關的軟體套件、設定檔、資料、日誌等都統一存放於此。
為保障您的本地開發環境與資料安全,建議定期備份此主目錄。您可使用 Time Machine 或其他備份工具對 /Applications/ServBay 進行完整備份。
網站根目錄 (www)
網站檔案的主目錄位於 /Applications/ServBay/www。這裡是您存放所有本地網站專案檔案的地方。
為了保持結構清晰且易於管理,強烈建議為每個獨立的網站專案或虛擬網站(在 ServBay 中稱為「網站」)於此目錄下建立各自的子資料夾。
例如,如果您建立了 web.servbay.demo、api.servbay.demo 和 new.servbay.local 等網站,建議的存放結構如下:
/Applications/ServBay/www
|____servbay.demo # 存放所有 *.servbay.demo 網域相關網站
| |____web # web.servbay.demo 的網站檔案
| |____api # api.servbay.demo 的網站檔案
|____servbay.local # 存放所有 *.servbay.local 網域相關網站
| |____new # new.servbay.local 的網站檔案
|____myproject # 存放其他獨立專案,例如 myproject.local2
3
4
5
6
7
此結構有助於區分不同專案與網域,提升管理效率。
設定檔目錄 (etc)
設定檔目錄 /Applications/ServBay/etc 實為一個符號連結,指向 /Applications/ServBay/package/etc。這裡存放 ServBay 安裝的所有軟體套件(如 PHP、MariaDB、Nginx、Caddy 等)主要設定檔。
在日常使用時,您可直接由 /Applications/ServBay/etc 路徑存取及修改設定。修改多數設定檔後,通常需重新啟動對應服務才會生效。
常見軟體套件設定檔存放範例如下:
PHP (etc/php)
PHP 設定檔目錄採雙層結構,區分不同 PHP 大版本。如在 etc/php 下,可見 5.6、7.4、8.3 等資料夾,各自對應一個 PHP 大版本。典型結構如下:
php
|____5.6 # PHP 5.6 的設定
| |____conf.d # 擴充設定檔目錄
| |____php.ini # PHP 主設定檔
|____7.4 # PHP 7.4 的設定
| |____conf.d # 擴充設定檔目錄
| |____php-fpm.d # PHP-FPM Pool 設定目錄
| |____php-fpm.conf # PHP-FPM 主設定檔
| |____php.ini # PHP 主設定檔
|____8.3 # PHP 8.3 的設定
| |____conf.d
| |____php-fpm.d
| |____php-fpm.conf
| |____php.ini
|____... (其他 PHP 版本)2
3
4
5
6
7
8
9
10
11
12
13
14
15
每個版本目錄可見 php.ini(主設定檔)、php-fpm.conf(若該版本支援 FPM)、pear.conf 等。編輯這類設定後,請透過 ServBay 控制面板或 servbayctl 指令重新啟動對應 PHP-FPM 服務以應用最新設定。
conf.d 為 PHP 擴充設定目錄,包含 xdebug.ini、opcache.ini、redis.ini 等。編輯這些文件可載入、卸載或修改各 PHP 擴充套件設定,同樣需重啟對應 PHP-FPM 服務。
注意:ServBay 設計為同一大版本下所有 PHP 小版本共用一份設定,例如 8.3.3 與 8.3.5 皆使用 etc/php/8.3 目錄下的設定檔。
MariaDB / MySQL / PostgreSQL (etc/mariadb, etc/mysql, etc/postgresql)
資料庫套件設定亦根據版本分層,例如 etc/mariadb/11.2。每個資料夾中可見主設定檔(如 MariaDB/MySQL 為 my.cnf,PostgreSQL 為 postgresql.conf)。修改後需重啟對應資料庫服務。每個小版本與同一大版本共用設定。
重設 MariaDB/MySQL/PostgreSQL 的 root 用戶密碼,建議使用專屬指令/圖形介面,而非直接修改設定。
Caddy (etc/caddy)
Caddy 設定檔(Caddyfile)位於 etc/caddy 目錄。
重要提示:ServBay 會根據您於控制台設定的網站資訊自動生成 Caddyfile。請勿手動編輯此檔案,因為您的更動會在下次設定重產時自動被覆蓋。如需針對特定網站自訂 Caddy 設定,請直接在控制台的網站設定介面調整。
Nginx (etc/nginx)
Nginx 主設定檔 nginx.conf 位於 etc/nginx 目錄。和 Caddy 類似,ServBay 也會根據網站設定自動生成或 include 相關設定。若需手動修改主檔案,請務必謹慎,建議優先用控制面板管理。
dnsmasq (etc/dnsmasq)
dnsmasq 設定檔目錄含 dnsmasq.conf(預設設定)及 domains.conf(ServBay 根據您設定的本地域名自動生成)。
重要提示:dnsmasq.conf 及 domains.conf 均由 ServBay 管控,自動生成以確保本地 DNS 正常。請勿手動更動這些檔案,否則可能導致本地網站無法訪問。
其他軟體設定
如 Node.js、Python、Go、Java、Ruby、Rust 等支持的其他套件,若存在全域/服務設定檔,亦會存在 etc 目錄下對應目錄,並遵循類似版本分層結構。
ServBay 內部數據目錄 (data/servbay)
/Applications/ServBay/data/servbay此目錄存放 ServBay 正常運作所需的核心設定檔、狀態檔、使用者自定義設定。這些資料對進行控制面板管理、套件管理、網站與資料庫配置至關重要。
重要提示:請特別備份此目錄。切勿隨意刪除或修改內部檔案,否則可能造成 ServBay 無法啟動或設定遺失。
可執行檔與腳本目錄 (bin, sbin, script)
/Applications/ServBay/bin -> package/bin
/Applications/ServBay/sbin -> package/sbin
/Applications/ServBay/script2
3
ServBay 所有可執行檔組織於 bin 與 sbin,這兩目錄皆為連結,實際指向 package/bin 與 package/sbin。其中包含 ServBay 各種工具與語言執行環境。
ServBay 會自動將這些目錄加入系統 PATH(啟動 ServBay 時自動設定),因此可於終端機直接訪問這些指令,如:
- 常見工具:如
curl,openssl,frpc等。 - 語言運行環境:如
php(預設)、php-5.6、php-7.4、php-8.3、node(預設)、node-16、node-18、python3、go、java、ruby、rustc等。可透過帶版本號的指令指定特定版本。 - 資料庫客戶端:如
mysql、psql、mongosh、redis-cli等。
script 目錄 (/Applications/ServBay/script) 包含 ServBay 運作用管理腳本,如啟停服務、初始化資料庫、做維護任務等。雖然可直接執行,但建議用 servbayctl 工具,該指令將底層腳本包裝成更友善使用介面。
例如,要啟動 PHP 7.4 FPM 服務,可用:
servbayctl start php 7.4servbayctl 即放於 /Applications/ServBay/bin 目錄內。
資料庫檔案目錄 (db)
/Applications/ServBay/db此目錄為各類資料庫實際數據檔案儲存處。與設定相似,檔案按套件及版本分層:
/Applications/ServBay/db/mariadb/<major_version>:MariaDB 數據文件/Applications/ServBay/db/mysql/<major_version>:MySQL 數據文件/Applications/ServBay/db/postgresql/<major_version>:PostgreSQL 數據文件/Applications/ServBay/db/mongodb:MongoDB 數據文件/Applications/ServBay/db/redis:Redis 數據文件
每種資料庫軟體「大版本」共用同一數據資料夾。例如,MariaDB 11.2.x 系列皆用 /Applications/ServBay/db/mariadb/11.2。
重要提示:此目錄存有所有本地資料庫資料。在進行重大操作(如 ServBay 升級、系統搬遷等)前,請完整備份 /Applications/ServBay/db。使用 ServBay 自動備份功能時,此目錄亦會一併備份。
日誌目錄 (logs)
/Applications/ServBay/logs -> package/var/logServBay 將所有整合服務的日誌集中於 /Applications/ServBay/logs,該目錄實為 /Applications/ServBay/package/var/log 的連結,方便開發者瀏覽、監控各服務狀態與錯誤。
日誌一般按服務類型分子目錄:
logs/caddy/或logs/nginx/:各自網站存放存取日誌、錯誤日誌。logs/php/:放置 PHP-FPM 日誌 (php-fpm.log) 與 PHP 執行錯誤日誌 (errors.log)。errors.log主要紀錄未經 PHP 架構處理的重大錯誤。logs/mariadb/、logs/mysql/、logs/postgresql/、logs/mongodb/、logs/redis/:記錄對應資料庫服務錯誤、慢查詢等。- 其他語言服務的日誌:Python、Go、Java、Ruby、Rust 等,也會有專屬子目錄。
注意:日誌、特別是大量存取與錯誤日誌,可能大幅佔用磁碟空間。建議定期檢查、清理不必要的日誌,以騰出儲存。
軟體套件目錄 (package)
/Applications/ServBay/package此目錄為 ServBay 安裝與管理所有軟體的實體位置。每套件於獨立子目錄組織,結構為「套件名/大版本/完整版本」。舉例,某版本 PHP 可能安裝於 /Applications/ServBay/package/php/8.3/8.3.7。
您可於 ServBay 控制面板中輕鬆安裝、切換、卸載不同版本套件。
升級後無用的舊版本目錄(例 /Applications/ServBay/package/php/8.2/8.2.10)可手動刪除以節省硬碟空間。
重要提示:每套件大版本目錄(如 /Applications/ServBay/package/php/8.3)下會有 current 連結,指向該版本當前啟用的完整版本。請勿手動修改或刪除 current 連結,否則 ServBay 可能找不到相關套件,導致服務啟動失敗。
SSL 憑證目錄 (ssl)
/Applications/ServBay/ssl此目錄用來保存相關 SSL/TLS 憑證檔案。內容包括:
- ServBay 為本地網站自動透過 ACME 協定申請的 SSL 憑證(存於
ssl/caddy或ssl/acme,依 Web Server 不同)。 - ServBay 建立之本地開發用根憑證(ServBay User CA)與公共憑證(ServBay Public CA),通常位於
ssl/private、ssl/public。將這些 CA 憑證安裝到系統信任庫,即可讓瀏覽器信任由 ServBay 為本地網站簽發的憑證,消除 HTTPS 警告。
備份目錄 (backup)
/Applications/ServBay/backup此目錄為 ServBay 內建自動備份功能存放備份檔的位置。可協助您輕鬆保存開發過程中的重要數據與設定,包括:
backup/config:ServBay 核心設定與軟體設定檔備份backup/databases:MariaDB, MySQL, PostgreSQL, MongoDB 等資料庫數據備份backup/ssl:SSL 憑證檔案備份backup/websites:存於/Applications/ServBay/www下的網站專案檔案備份
建議定期檢查本目錄,並視需求將備份移至外部儲存設備,加強資料災備安全。
暫存目錄 (tmp)
/Applications/ServBay/tmp此目錄存放服務運作時產生的暫存檔,最常見為 .pid 檔案及 Socket 檔案。
.pid:記錄服務運行中的進程 ID。- Socket 檔案:如
php-cgi.sock、mysql.sock、pgsql.sock等。本地程式可藉由這類 Unix Domain Socket 與 php-fpm、資料庫等服務進行通訊。相較 TCP 端口,Socket 通訊有更高效能、低延遲,特別適用於同機器間的進程溝通。
共用元件及開發庫 (package/common)
/Applications/ServBay/package/common此目錄包含 ServBay 所有套件相依的共用元件、共享函式庫(如 *.dylib)及選擇性開發庫。
若安裝 ServBay Development Library(提供必要編譯相依),此目錄下會有 include(標頭檔)與 lib(靜態及鏈接函式庫)等。這些對於編譯 PHP 擴充或其他需依賴 ServBay 內建庫的應用相當實用。
重要提示:切勿手動刪除 package/common/lib 內的 *.dylib,這些共享函式庫為 ServBay 各軟體正常運作所必需。缺失將導致異常。
總結
ServBay 的目錄結構清楚分隔套件、設定、數據、日誌與網站檔案,參照 Unix 標準規則,使開發者得以直觀管理本地開發環境。熟悉各目錄的用途,能大幅提升您在 ServBay 上開發的效率與便利性。務必養成定期備份(尤其 data 與 db 目錄)的習慣,是保障開發資料安全的關鍵。
