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
文件,否则会导致程序因缺少必要库文件而运行异常。