ServBay目錄結構
ServBay 的目錄結構簡單明瞭。如果你有 Linux/Unix 系統的基礎,你會發現兩者非常相似。
一個典型的 ServBay 目錄結構如下:
ServBay
|____backup
| |____config
| |____hosts
|____bin
|____data
| |____servbay
|____db
| |____redis
|____etc
|____logs
|____package
| |____bin
| |____common
| | |____imap-uw
| | |____include
| | |____lib
| | |____libexec
| | |____openssl
| | |____share
| |____etc
| | |____caddy
| | |____dnsmasq
| | |____mariadb
| | |____openldap
| | |____php
| | |____redis
| | |____scws
| |____mariadb
| | |____x.x
| |____node
| | |____xx
| |____php
| | |____x.x
| |____sbin
| |____var
| | |____log
| | |____run
|____sbin
|____script
|____ssl
| |____caddy
|____tmp
|____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
下面我們將詳細說明各個目錄的用途。
主目錄
ServBay 的主目錄位於 /Applications/ServBay
,所有文件都存放在其中。
如需備份(例如使用 Time Machine 或其他備份方式),請完整備份此目錄。
網站根目錄
網站的根目錄位於 /Applications/ServBay/www
。建議為每個主機單獨創建一個文件夾來存放文件,這樣結構清晰且易於管理。
例如:
/Applications/ServBay/www
|____com
| |____servbay
| | |____web # web.servbay.com
| | |____support # support.servbay.com
| | |____api # api.servbay.com
|____local
| |____sam
| | |____www # www.sam.local
| |____servbay
| | |____new # new.servbay.local
2
3
4
5
6
7
8
9
10
11
配置文件目錄
配置文件目錄位於 /Applications/ServBay/etc
,這是一個軟連結,實際文件存放在 /Applications/ServBay/package/etc
。
通常情況下,可以直接使用 /Applications/ServBay/etc
。
以下是常見軟件包的配置文件示例:
PHP
PHP 配置文件目錄為兩層結構。在 etc/php
下,有不同版本的目錄,例如 5.6
、7.4
、8.3
等,典型結構如下:
php
|____5.6
| |____conf.d
|____7.0
| |____conf.d
| |____php-fpm.d
|____7.4
| |____conf.d
| |____php-fpm.d
|____8.3
| |____conf.d
| |____php-fpm.d
|____8.4
| |____conf.d
| |____php-fpm.d
2
3
4
5
6
7
8
9
10
11
12
13
14
15
每個版本目錄中有 php.ini
、php-fpm.conf
、pear.conf
等文件。修改這些文件後,需要重啟對應的 PHP 服務以應用最新設定。
conf.d
目錄為 PHP 擴展配置目錄,包含 xdebug.ini
、opcache.ini
、redis.ini
等文件。編輯這些文件可以加載、移除或修改各個 PHP 擴展。同樣地,修改後需要重啟對應的 PHP 服務以應用最新設定。
注意:每個小版本與大版本共用一份配置。例如,8.3.3
與 8.3.5
共用 8.3
的配置文件。
MariaDB
MariaDB 配置文件目錄也是兩層結構,例如 etc/mariadb/11.2
。文件夾中只有一個 my.cnf
文件,修改後需重啟生效。每個小版本與大版本共用一份配置。
Caddy
注意:Caddyfile 由 ServBay 自動生成,請勿修改。修改後會被自動覆蓋。如需自定義設置,請直接在 ServBay 的 主機
中進行配置。
dnsmasq
目錄中有兩個主要文件:dnsmasq.conf
和 domains.conf
。dnsmasq.conf
為默認配置文件,domains.conf
為自動生成的域名文件。
注意:dnsmasq.conf
和 domains.conf
文件均由 ServBay 自動生成,請勿修改。修改後會被自動覆蓋。
ServBay 設定目錄
/Applications/ServBay/data
此目錄保存了 ServBay 正常運行所需的配置文件及信息,請注意備份,不要刪除或改動其中的任何文件。
可執行文件及腳本目錄
/Applications/ServBay/bin -> package/bin
/Applications/ServBay/sbin -> package/sbin
/Applications/ServBay/script
2
3
ServBay 的所有可執行文件均位於 bin
和 sbin
目錄。包括各個版本的 PHP、Node 等,也創建了軟連結到這兩個目錄。
這些目錄包含大量常用工具,例如 curl
、openssl
、frpc
,以及各個版本的 PHP 和 Node。
例如,可以使用 php-5.6
指定 PHP 5.6 運行某個腳本,或使用 node-15
執行非 LTS 的 Node.js 15 腳本。
特別要說明的是 script
目錄。這個目錄包含 ServBay 的系統腳本,用於服務的開啟和停止、數據庫的初始化等操作。你可以直接執行這些腳本,但請勿改動或刪除。
這些腳本都被包裝到 servbayctl
中。可以直接執行 servbayctl
進行操作,例如:
servbayctl start php 7.0
數據庫文件目錄
/Applications/ServBay/db
與 etc
目錄一樣,db
目錄也是多層結構,每個小版本與大版本共用一個數據庫。日常開發中請注意備份此目錄。
日誌目錄
/Applications/ServBay/logs -> package/var/log
ServBay 所有日誌均存放於此。除了 PHP 和 XDebug 會產生較多文件選擇二級目錄存儲外,其他日誌均存放於對應服務的子目錄內。
網站訪問日誌存放在 caddy
目錄,按域名存儲。
PHP 日誌分為兩個:php-fpm.log
(php-fpm 產生的日誌)和 errors.log
(錯誤日誌)。errors.log
只有在代碼運行錯誤且未被 PHP 框架捕獲並存儲時才會產生。
例如,Laravel
產生的錯誤日誌會存儲在 Laravel
框架的 storage/logs/laravel.log
中,但 WordPress
和 trongate
產生的錯誤日誌可能存在於 errors.log
中。
注意:日誌文件占用較多空間,請及時清理。
軟件包目錄
/Applications/ServBay/package
此目錄包含 ServBay 所有安裝的軟件包,結構為 包名/大版本/小版本
。例如 package/php/8.3/8.3.7
。
對於升級後不再需要的舊版本,可以手動刪除以節省空間。
注意:每個文件夾中均有一個名為 current
的軟連結,指向最新的軟件包版本,請勿刪除,否則將導致服務無法啟動。
SSL 證書目錄
/Applications/ServBay/ssl
此目錄存放 SSL 證書,包括本地 SSL 根證書(CA)。
備份目錄
/Applications/ServBay/backup
ServBay 的自動備份目錄,目前暫時只用於備份 /etc/hosts
文件。
臨時文件目錄
/Applications/ServBay/tmp
此目錄存放各服務運行時生成的 .pid
文件,以及 PHP、MariaDB、PostgreSQL 的 Socket 文件
,如 php-cgi.sock
、mysql.sock
等。
日常開發中,程序除了通過 TCP 端口訪問 php-fpm、數據庫外,還可以通過 socket 文件訪問 php-fpm 和數據庫。Socket 文件通常比 TCP 端口有更高的吞吐量、更好的性能和更低的延遲。
公共組件及開發庫
/Applications/ServBay/package/common
此目錄存放 ServBay 所有應用所需的公共組件,例如各類 *.dylib
文件。
如果安裝了 ServBay Development Library
,此處還會有 include
目錄,lib
下會有各類 *.la
、*.a
文件。這些是二次編譯所需的庫及頭文件。
注意:請勿刪除 lib/*.dylib
文件,否則會導致程序因缺少必要庫文件而運行異常。