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 Development Library)
| | |____lib # 共有ライブラリ・静的ライブラリ (ServBay Development Library)
| | |____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による自動生成証明書
| |____import # ユーザー導入のサードパーティ証明書
| |____private # ServBay User CA
| |____public # ServBay Public CA
|____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
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の設定ファイルディレクトリはメジャーバージョンごとに2階層に分かれています。例として、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
|____...(他バージョン)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
各バージョンディレクトリには、php.ini
(PHPメイン設定)、php-fpm.conf
(FPM対応の場合のメイン設定)、pear.conf
等が含まれます。これらを変更した場合、ServBayコントロールパネルまたはservbayctl
コマンドで該当PHP-FPMを再起動し、設定を反映してください。
conf.d
ディレクトリはPHP拡張設定用の場所で、xdebug.ini
、opcache.ini
、redis.ini
等の個別設定ファイルが格納されます。これらも編集後には該当PHP-FPMの再起動が必要です。
注意: ServBayでは同一メジャーバージョン内のすべてのPHPマイナーバージョンが同じ設定ファイルを共有します。例:PHP8.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
を生成します。**このファイルは手動で編集しないでください。**改変は次回自動生成時に上書きされてしまいます。カスタム設定を追加したい場合は、必ずServBayコントロールパネルのサイト設定画面から行ってください。
Nginx(etc/nginx
)
Nginxのメイン設定ファイルであるnginx.conf
はetc/nginx
に保存されています。Caddy同様、ServBayによりサイト設定情報から自動生成される場合があります。手動編集は慎重に行い、基本はコントロールパネル経由での管理を推奨します。
dnsmasq(etc/dnsmasq
)
dnsmasqの設定ディレクトリにはdnsmasq.conf
(標準設定ファイル)およびdomains.conf
(ServBayがローカルドメイン設定に基づき自動生成)が格納されています。
重要: これらのファイルはすべてServBayが自動生成・管理します。手動編集は非推奨であり、誤って編集するとローカルサイトにアクセスできなくなる恐れがあります。
その他パッケージ設定
Node.js, Python, Go, Java, Ruby, RustなどServBay対応のその他パッケージも、もしグローバル/サービスレベルの設定ファイルがある場合は、基本的にetc
ディレクトリ配下の各サブディレクトリ(バージョン単位)に保存されます。
ServBay内部データディレクトリ(data/servbay
)
/Applications/ServBay/data/servbay
このディレクトリには、ServBayアプリ自体が正常動作するために必要な各種重要設定ファイル、状態情報、ユーザー固有の設定などが保存されています。コントロールパネルやパッケージ管理、サイト・DB設定などServBayの機能にとって不可欠な領域です。
重要: 必ずこのディレクトリのバックアップを行ってください。**手動でファイルを削除・改変しないでください。**不適切な変更はServBayが起動不能・設定消失の原因となります。
実行ファイル・スクリプトディレクトリ(bin
, sbin
, script
)
/Applications/ServBay/bin -> package/bin
/Applications/ServBay/sbin -> package/sbin
/Applications/ServBay/script
2
3
すべての実行ファイルはbin
・sbin
ディレクトリにまとめられており、これらは実体としてpackage/bin
・package/sbin
へのシンボリックリンクです。ここにServBay統合の各種ツールやランタイムが収められています。
これらディレクトリは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
など。バージョン付きコマンド指定も可 - DBクライアント:
mysql
,psql
,mongosh
,redis-cli
など
script
ディレクトリ(/Applications/ServBay/script
)は、サービスの起動・停止、DB初期化、メンテナンスなどServBay内部操作用の管理スクリプトが入っています。これらの多くは、直接利用するよりもservbayctl
コマンドを利用することが推奨されます。
例: PHP7.4 FPMサービス起動
servbayctl start php 7.4
servbayctl
は/Applications/ServBay/bin
ディレクトリにあります。
データベースファイルディレクトリ(db
)
/Applications/ServBay/db
このディレクトリには、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用データファイル
各データベースパッケージはメジャーバージョンごとにデータを共有します(例:MariaDB11.2.x
系は/Applications/ServBay/db/mariadb/11.2
が共用)。
重要: 本ディレクトリには全てのローカルDBデータが格納されています。ServBayのアップグレードやシステム移行等の前には/Applications/ServBay/db
の完全バックアップを必ず実施してください。ServBayの自動バックアップ機能でもDBファイルはバックアップされます。
ログディレクトリ(logs
)
/Applications/ServBay/logs -> package/var/log
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
(applicationやフレームワークで未処理の致命的エラーを記録)logs/mariadb/
,logs/mysql/
,logs/postgresql/
,logs/mongodb/
,logs/redis/
:各DBサービスのエラー・スロークエリログなど- その他のサービスログ:Python, Go, Java, Ruby, Rust用ログも各サブディレクトリに配置
ご注意: アクセス/エラーログは活発なプロジェクトの際に容量が膨れやすいため、不要な古いログは定期的に削除しディスク容量を確保してください。
パッケージディレクトリ(package
)
/Applications/ServBay/package
このディレクトリには、ServBayでインストール・管理されているすべてのパッケージが格納されます。各パッケージは、パッケージ名/メジャーバージョン/フルバージョン
の階層で整理されます。例:PHPのあるバージョンは/Applications/ServBay/package/php/8.3/8.3.7
に展開されます。
コントロールパネル経由でインストール・アンインストールやバージョン切替が簡単に可能です。
アップグレードで不要になった古いパッケージは手動で対応フルバージョンディレクトリ(例:php/8.2/8.2.10
)を削除しディスクを節約できます。
重要: 各パッケージのメジャーバージョンディレクトリには、current
というシンボリックリンクがあり最新・有効な小バージョンを指しています。current
リンクは手動で削除・編集しないでください。 サービスが正常に動作しなくなる恐れがあります。
SSL証明書ディレクトリ(ssl
)
/Applications/ServBay/ssl
このディレクトリにはSSL/TLS関連の証明書ファイルを保存します。
- ローカルサイト用にACMEプロトコルで自動取得したSSL証明書(通常
ssl/caddy
またはssl/acme
などサブディレクトリに保存。Webサーバの種類による) - ローカルHTTPS開発用のルート証明書(ServBay User CA)やパブリック証明書(ServBay Public CA)。
ssl/private
・ssl/public
に保存。これをシステムにインストールすれば、ブラウザがローカル開発サイト用証明書を信頼しHTTPS警告が出なくなります。
バックアップディレクトリ(backup
)
/Applications/ServBay/backup
このディレクトリは、ServBayの自動バックアップ機能により生成されたバックアップファイル置き場です。以下をカバーします。
backup/config
: ServBayコア設定・パッケージ設定のバックアップbackup/databases
: MariaDB, MySQL, PostgreSQL, MongoDB等DBバックアップbackup/ssl
: SSL証明書のバックアップbackup/websites
:/Applications/ServBay/www
配下のプロジェクトファイルバックアップ
定期的に本ディレクトリを確認し、必要に応じて外部ストレージにもコピーしておくことで、より堅牢なデータ保護ができます。
一時ファイルディレクトリ(tmp
)
/Applications/ServBay/tmp
ここには、各サービス動作中に発生する一時ファイルが保存されます。主に以下のようなファイルがあります。
.pid
ファイル:サービスのプロセスID管理用- ソケットファイル:例
php-cgi.sock
、mysql.sock
、pgsql.sock
など。Unixドメインソケットによるローカルプロセス間通信に利用します(TCPポート通信より高速・高効率で、単一マシン内の通信に最適)
共通コンポーネント・開発用ライブラリ(package/common
)
/Applications/ServBay/package/common
このディレクトリには、全パッケージが依存する共通コンポーネントや共有ライブラリ(*.dylib
)、任意の開発用ライブラリが格納されます。
ServBay Development Library(オプションパッケージ、主にソースからPHP拡張等をビルドする開発者向け)を導入時は、include
(ヘッダ)やlib
(静的・リンク用ライブラリ)ディレクトリも出現します。
重要: package/common/lib
内の*.dylib
等ライブラリファイルは絶対に削除しないでください。パッケージやサービスの正常動作に不可欠です。
まとめ
ServBayのディレクトリ構成は、ソフトウェアパッケージ・設定・データ・ログ・ウェブサイトファイルを明確に分離し、標準的なUnixファイルシステムの慣習を活かしています。これにより、ローカル開発環境管理が直感的かつ効率的になります。主要ディレクトリ(とりわけdata
・db
)の定期バックアップを心がけ、開発作業の安全と生産性向上を実現しましょう。