ServBay 目錄結構詳解
概述
ServBay 是一套支援 macOS 與 Windows 的本地 Web 開發環境,其目錄結構設計簡潔且易於管理。若您習慣 Linux/Unix 系統,會發現 ServBay 的檔案組織方式與標準檔案系統架構有諸多類似處,有助於開發人員快速定位與管理所需檔案。
ServBay 安裝位置
ServBay 在不同平台的預設安裝路徑如下:
- macOS:
/Applications/ServBay - Windows:
C:\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 # 套件變動資料 (如 log 真實位置)
| | |____log # 日誌實際存放目錄
| | |____run # 執行時檔案 (如 .pid 檔)
|____sbin # 系統執行檔目錄 (軟連結至 package/sbin)
|____script # ServBay 內部管理腳本
|____ssl # SSL 憑證目錄
| |____acme # 透過 ACME 協議申請的 SSL 憑證
| |____caddy # Caddy 自動產生的 SSL 憑證
| |____import # 使用者匯入第三方 SSL 憑證
| |____private # ServBay 使用者 CA
| |____public # ServBay 公用 CA
|____tmp # 臨時檔及 Socket 檔目錄
|____www # 網站根目錄
| |____servbay # 範例網站目錄1
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
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.local1
2
3
4
5
6
7
2
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 池設定目錄
| |____php-fpm.conf # PHP-FPM 主設定檔
| |____php.ini # PHP 主設定檔
|____8.3 # PHP 8.3 設定
| |____conf.d
| |____php-fpm.d
| |____php-fpm.conf
| |____php.ini
|____... (其他 PHP 版本)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
每個版本目錄含 php.ini(PHP 主設定檔)、php-fpm.conf(PHP-FPM 主設定檔,若該版支援 FPM)、pear.conf 等。修改後,需透過 ServBay 控制面板或 servbayctl 指令重啟 PHP-FPM 服務,以套用更改。
conf.d 目錄為 PHP 擴充設定目錄,常見如 xdebug.ini、opcache.ini、redis.ini 等,可編輯以載入、移除或設定 PHP 擴充模組。修改完同樣需重啟 PHP-FPM。
注意:ServBay 設計使同一大版本下之所有 PHP 小版本共用一份設定檔。例: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 密碼,通常需專用工具或 ServBay 控制面板操作,非直接編輯設定檔。
Caddy (etc/caddy)
Caddy 設定(Caddyfile)存放於 etc/caddy。
重要提示:ServBay 會根據控制面板網站設定自動生成 Caddyfile。請勿直接修改此檔案,否則更動可能於下次自動生成時被覆蓋。若需自訂 Caddy 配置,請於 ServBay 控制面板之「網站設定」頁面管理。
Nginx (etc/nginx)
Nginx 主設定檔 nginx.conf 位於 etc/nginx。同 Caddy,ServBay 亦會自動生成或包含網站相關設定段。若要人工編輯主設定檔,請特別留意,建議盡量透過 ServBay 控制面板管理。
dnsmasq (etc/dnsmasq)
dnsmasq 設定檔目錄含 dnsmasq.conf(預設配置)及 domains.conf(由 ServBay 根據本地域名自動生成)。
重要提示:dnsmasq.conf 與 domains.conf 皆由 ServBay自動管理,以確保本地域名解析正常。請勿手動修改,否則可能導致本地網站無法正確存取。
其他套件配置
ServBay 支援之其他套件,如 Node.js、Python、Go、Java、Ruby、Rust 等,若需要全域或服務級設定檔,通常亦存放於 etc 下之相應子目錄,並依版本組織。
ServBay 內部資料目錄 (data/servbay)
/Applications/ServBay/data/servbay1
此目錄儲存 ServBay 程式正常運作所需之重要設定、狀態資料,以及使用者個人化設定。這些檔案影響 ServBay 控制面板、套件管理、網站與資料庫配置等關鍵功能。
重要提示:請妥善備份此目錄。切勿手動刪除或變更內容,否則可能造成 ServBay 無法啟動或設定遺失。
執行檔及腳本目錄 (bin, sbin, script)
/Applications/ServBay/bin -> package/bin
/Applications/ServBay/sbin -> package/sbin
/Applications/ServBay/script1
2
3
2
3
ServBay 所有執行檔統一管理於 bin 與 sbin 目錄,兩者皆為軟連結,實際指向 package/bin 與 package/sbin。此處包含各式工具與語言執行環境。
ServBay 會將這些目錄加至 PATH 環境變數(通常於啟動時),可於終端機直接執行:
- 常用工具,如
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 服務:
bash
servbayctl start php 7.41
servbayctl 位於 /Applications/ServBay/bin。
資料庫檔案目錄 (db)
/Applications/ServBay/db1
此目錄為 ServBay 各款資料庫之真正資料儲存位置,並按類型與版本組織。例如:
/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 資料檔
ServBay 每個資料庫軟體大版本共用一份資料檔,例如 MariaDB 11.2.x 都使用 /Applications/ServBay/db/mariadb/11.2。
重要提示:此目錄含所有本地資料庫資料。進行重要操作(如升級、系統搬移)前,務必完整備份 /Applications/ServBay/db。ServBay 內建備份功能亦會自動備份資料。
日誌目錄 (logs)
/Applications/ServBay/logs -> package/var/log1
ServBay 所有集成服務之日誌統一存放於 /Applications/ServBay/logs(軟連結至 /Applications/ServBay/package/var/log),能集中檢視及監控各服務運作與異常。
日誌檔依服務分子目錄:
logs/caddy/或logs/nginx/:存放 Caddy 或 Nginx 的存取、錯誤日誌,常依網域組織。logs/php/:PHP-FPM 日誌 (php-fpm.log) 與 PHP 執行錯誤日誌 (errors.log)。errors.log主要紀錄未被程式框架處理的致命錯誤。logs/mariadb/,logs/mysql/,logs/postgresql/,logs/mongodb/,logs/redis/:各資料庫服務的錯誤、慢查詢日誌等。- 其他服務日誌:如 Python、Go、Java、Ruby、Rust 等亦分目錄。
注意:日誌檔(尤其存取、錯誤紀錄)可能長期佔用大量空間,建議定期清理不再需要之日誌,以節省磁碟容量。
軟體套件目錄 (package)
/Applications/ServBay/package1
此目錄負責 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/ssl1
此目錄存放所有 SSL/TLS 憑證檔案,包括:
- ServBay 自動為本地網站透過 ACME 申請之 SSL 憑證(常存於
ssl/caddy或ssl/acme,依所用 Web Server)。 - ServBay 建立本地 HTTPS 開發用之根憑證(ServBay User CA)與公共憑證(ServBay Public CA),分別於
ssl/private及ssl/public下。將 CA 安裝進系統信任庫,瀏覽器即可信任 ServBay 針對本地網站簽發憑證,避免 HTTPS 警告。
備份目錄 (backup)
/Applications/ServBay/backup1
此目錄為 ServBay 內建自動備份功能存放檔案之處,可協助備份重要開發資料與設定,包括:
backup/config: ServBay 核心及套件設定備份backup/databases: MariaDB、MySQL、PostgreSQL、MongoDB 等資料庫備份backup/ssl: SSL 憑證檔案備份backup/websites:/Applications/ServBay/www下網站專案備份
建議定期檢查,並酌情將備份移至外部儲存設備,以完善資料災難備援。
臨時檔案目錄 (tmp)
/Applications/ServBay/tmp1
此目錄存放服務運行時產生的臨時檔,最常見為 .pid 檔與 Socket 檔案。
.pid檔:紀錄服務執行中的程序 ID。- Socket 檔案:如
php-cgi.sock、mysql.sock、pgsql.sock等,供本機程式透過 Unix Domain Socket 與 php-fpm、資料庫等服務溝通。相較 TCP 通訊,Socket 通常有更高傳輸效率、更佳效能與更低延遲,非常適合同機器的進程間通信。
公用元件與開發函式庫 (package/common)
/Applications/ServBay/package/common1
此目錄包含 ServBay 各套件依賴的公用元件、共用函式庫(如 *.dylib)與可選開發函式庫。
若安裝 ServBay Development Library(可選,可提供編譯所需依賴),此目錄下並有 include(存標頭檔)與 lib(存靜態、連結函式庫)目錄。在需從源碼編譯 PHP 擴充或其它、需依賴 ServBay 內建函式庫時極為實用。
重要提示:請勿手動刪除 package/common/lib 下之 *.dylib,此為 ServBay 整合軟體必需共用函式庫。刪除恐致程式因缺依賴組件而運作異常。
總結
ServBay 目錄結構清楚區分軟體套件、設定檔、資料、日誌及網站檔案,並借鑑標準 Unix 檔案系統習慣,讓開發人員能直觀管理本地開發環境。熟悉目錄用途,將大幅提升使用 ServBay 進行 Web 開發的效率與便利。請定期備份關鍵目錄(尤以 data 與 db 為重),以確保您的開發資料萬無一失。
