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.local
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 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/script
2
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.4
servbayctl
即放於 /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/log
ServBay 將所有整合服務的日誌集中於 /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
目錄)的習慣,是保障開發資料安全的關鍵。