Детальний огляд структури директорій ServBay
ServBay — це локальне веб-середовище розробки, спеціально створене для macOS з простою та логічною структурою директорій. Якщо ви знайомі з екосистемою Linux/Unix, ви знайдете багато спільного у розміщенні файлів, що спрощує навігацію та керування різними файлами для розробників.
Розуміння структури директорій 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 # Cимволічне посилання на поточну останню повну версію
| | |____...
| |____sbin # Системні виконувані файли пакетів
| |____var # Змінні дані пакетів (як справжнє розміщення logs)
| | |____log # Де-факто розміщення журналів
| | |____run # Файли виконання (наприклад, .pid)
|____sbin # Системна директорія виконуваних файлів (символічне посилання на package/sbin)
|____script # Внутрішні скрипти ServBay
|____ssl # Директорія SSL-сертифікатів
| |____acme # Сертифікати, отримані через ACME
| |____caddy # Автоматично створені Caddy SSL-сертифікати
| |____import # Імпортовані користувачем сторонні сертифікати
| |____private # ServBay User CA
| |____public # ServBay Public CA
|____tmp # Тимчасові файли та сокети
|____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 або іншого бекап-інструменту.
Коренева директорія сайтів (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
1
2
3
4
5
6
7
2
3
4
5
6
7
Така організація дозволяє чітко розділити різні проєкти й домени для зручнішого керування.
Директорія конфігураційних файлів (etc
)
Директорія конфігураційних файлів /Applications/ServBay/etc
фактично є символічним посиланням на /Applications/ServBay/package/etc
. Тут знаходяться всі основні конфіги встановлених пакетів (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-fpm.conf
(головний конфіг PHP-FPM, якщо підтримується FPM), pear.conf
та інше. Після зміни цих файлів потрібно перезапустити відповідний PHP-FPM через панель керування ServBay чи команду servbayctl
.
Директорія conf.d
— це директорія розширених налаштувань PHP, де містяться файли на кшталт xdebug.ini
, opcache.ini
, redis.ini
. Їх редагування дозволяє підключати/виключати розширення та налаштовувати їх. Після редагування потрібно перезапустити 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
). Після редагування треба перезапустити відповідну службу. Кожна дрібна версія ділить спільний конфіг основної версії.
Для зміни пароля користувача root у MariaDB, MySQL чи PostgreSQL зазвичай використовують окремі утиліти командного рядка або інструменти панелі керування ServBay, а не редагування конфігів.
Caddy (etc/caddy
)
Конфіг Caddy (Caddyfile
) міститься в etc/caddy
.
Важливо: ServBay автоматично генерує Caddyfile
згідно з налаштуваннями “сайтів” у панелі керування. Не редагуйте файл вручну — зміни буде перезаписано при наступній генерації конфігів. Додайте кастомні налаштування для конкретного сайту через панель керування ServBay.
Nginx (etc/nginx
)
Основний конфіг Nginx (nginx.conf
) міститься в etc/nginx
. Тут також сайтова конфігурація генерується/включається автоматично. Ручне редагування головного файлу — лише у разі необхідності; рекомендується керування через панель ServBay.
dnsmasq (etc/dnsmasq
)
Директорія містить dnsmasq.conf
(конфіг за замовчуванням) і domains.conf
(автоматично згенерований файл локальних доменів).
Важливо: обидва файли автоматично керуються ServBay для коректної локальної маршрутизації. Не редагуйте вручну, інакше локальні сайти можуть стати недоступними.
Інші конфігурації пакетів
Для Node.js, Python, Go, Java, Ruby, Rust та інших пакетів глобальні/сервісні налаштування також зберігаються у відповідних підкаталогах всередині etc
, і структура зазвичай також версіонована.
Внутрішня директорія даних ServBay (data/servbay
)
/Applications/ServBay/data/servbay
1
Тут знаходяться критичні налаштування, стани та налаштування користувача, необхідні для функціонування програми й усіх її служб. Ці дані важливі для коректної роботи панелі керування, пакетного менеджменту, налаштувань проєктів і баз даних тощо.
Важливо: створюйте резервну копію цієї директорії! Не видаляйте і не редагуйте її вручну — це може призвести до втрати конфігурації чи неможливості запуску ServBay.
Виконувані файли та скрипти (bin
, sbin
, script
)
/Applications/ServBay/bin -> package/bin
/Applications/ServBay/sbin -> package/sbin
/Applications/ServBay/script
1
2
3
2
3
Всі виконувані файли організовано у bin
та 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 для управління процесами, ініціалізації баз, технічного обслуговування тощо — це частина ядра ServBay. Рекомендується користуватися інтерфейсом командного рядка servbayctl
, який обгортає роботу з цими скриптами:
bash
servbayctl start php 7.4
1
Утиліта servbayctl
розташована у /Applications/ServBay/bin
.
Директорія файлів баз даних (db
)
/Applications/ServBay/db
1
Тут фактично зберігаються всі файли даних встановлених вами баз даних. Аналогічно до конфігів — організовано по типу і версії:
/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
).
Важливо: тут містяться ваші локальні БД. Перед важливими діями (оновлення, міграція ОС тощо) обов'язково робіть повну резервну копію каталогу /Applications/ServBay/db
. Автоматичне резервне копіювання ServBay також охоплює дані баз.
Директорія журналів (logs
)
/Applications/ServBay/logs -> package/var/log
1
Тут акумулюються всі логи інтегрованих сервісів у /Applications/ServBay/logs
(символічне посилання на /Applications/ServBay/package/var/log
). Це спрощує моніторинг та дебагінг роботи сервісів.
Файли журналів розбиті по підкаталогах відповідно до сервісу, наприклад:
logs/caddy/
,logs/nginx/
: доступ і помилки веб-серверів, розбиті по доменах.logs/php/
: журнали PHP-FPM (php-fpm.log
), помилки виконання PHP (errors.log
). Останній фіксує фатальні помилки, які не перехоплені фреймворками/застосунками.logs/mariadb/
,logs/mysql/
,logs/postgresql/
,logs/mongodb/
,logs/redis/
: журнали помилок, повільних запитів БД тощо.- Журнали інших сервісів: Python, Go, Java, Ruby, Rust та ін.
Зверніть увагу: журнали (особливо access/error) можуть швидко займати багато дискового простору при активній розробці. Регулярно перевіряйте і видаляйте непотрібні журнали.
Директорія пакетів (package
)
/Applications/ServBay/package
1
Тут фактично встановлюються і зберігаються всі пакети ServBay. Організація — окрема піддиректорія для кожного пакету, структура назва/основна-версія/повна-версія
. Наприклад, PHP 8.3.7 знаходитиметься у /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
на актуальну підверсію. Не видаляйте і не змінюйте цей лінк вручну, інакше сервіси можуть перестати запускатися.
Директорія SSL-сертифікатів (ssl
)
/Applications/ServBay/ssl
1
Сюди зберігаються всі файли SSL/TLS-сертифікатів:
- Сертифікати, отримані автоматично по протоколу ACME (найчастіше у підкаталогах
ssl/caddy
чиssl/acme
— залежно від веб-сервера). - Згенеровані ServBay кореневі сертифікати для локального HTTPS (
ssl/private
,ssl/public
). Додавши їх у довірені сертифікати системи, ви зможете уникати попереджень про HTTPS при локальній розробці.
Директорія резервних копій (backup
)
/Applications/ServBay/backup
1
Тут зберігаються всі створені ServBay резервні копії. Система бекапів дозволяє легко робити копії критично важливих даних та налаштувань, зокрема:
backup/config
: Резервні копії налаштувань ServBay і пакетів.backup/databases
: Резервні копії MariaDB, MySQL, PostgreSQL, MongoDB тощо.backup/ssl
: Резервні копії SSL-сертифікатів.backup/websites
: Резервні копії сайтів із/Applications/ServBay/www
.
Рекомендується регулярно перевіряти цю директорію і за потреби переносити бекапи на зовнішні носії для більшої стійкості до збоїв.
Директорія тимчасових файлів (tmp
)
/Applications/ServBay/tmp
1
Тут зберігаються тимчасові файли, що створюються робочими процесами служб, — насамперед це .pid
і сокет-файли.
- Файли
.pid
— ідентифікатори процесів сервісів. - Сокет-файли: наприклад,
php-cgi.sock
,mysql.sock
,pgsql.sock
. Вони дозволяють сервісам і програмам взаємодіяти через Unix Domain Socket для більш високої продуктивності й меншої затримки порівняно з TCP, особливо якщо все розташовано локально.
Загальні компоненти та бібліотеки розробки (package/common
)
/Applications/ServBay/package/common
1
Тут містяться спільні залежності пакетів, загальні бібліотеки (*.dylib
), а також (опційно) бібліотеки для розробки.
При встановленні пакета ServBay Development Library тут з’являються include
(заголовки) і lib
(статичні *.a
і динамічні *.la
бібліотеки). Вони потрібні для розробників, які компілюють власні розширення PHP або інші модулі з прив’язкою до внутрішніх бібліотек ServBay.
Важливо: не видаляйте файли *.dylib
у package/common/lib
— вони критично необхідні для коректної роботи пакета й сервісів. Їхня відсутність призведе до проблем із запуском.
Висновок
ServBay чітко структурує пакети, налаштування, дані, логи та файли проєктів, дотримуючись принципів файлової системи Unix. Це дозволяє розробникам інтуїтивно керувати локальним середовищем розробки. Ретельно ознайомившись із цією структурою директорій, ви значно підвищите ефективність та комфорт роботи із ServBay. Не забувайте регулярно робити резервні копії критичних даних (особливо data
і db
), щоб убезпечити свої розробки від втрат.