ServBay 디렉토리 구조 상세 안내
ServBay는 macOS에 최적화된 로컬 웹 개발 환경으로, 디렉토리 구조가 간결하고 체계적으로 설계되었습니다. 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 # 공유 및 정적 라이브러리
| | |____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 # 임시 파일 및 소켓 파일
|____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 또는 기타 백업 툴로 /Applications/ServBay
전체를 백업하세요.
웹사이트 루트 디렉토리 (www
)
웹사이트 프로젝트 파일의 기본 위치는 /Applications/ServBay/www
입니다. 모든 로컬 사이트의 소스 파일은 이 디렉토리에 보관합니다.
구조의 명확함과 관리를 위해, 각 개별 사이트나 버추얼 사이트("웹사이트")마다 독립적인 하위 폴더를 만드는 것이 좋습니다.
예시: 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 등 ServBay에서 설치한 패키지들의 주요 설정 파일이 이곳에 모입니다.
일상 사용에서는 이 경로를 통해 설정 파일을 바로 수정할 수 있습니다. 대부분의 설정 파일을 수정한 후에는 해당 서비스를 재시작해야 변경이 적용됩니다.
대표적인 패키지별 설정 파일 위치 예시는 다음과 같습니다.
PHP (etc/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 메인 설정), php-fpm.conf
(PHP-FPM 메인 설정, 해당 버전이 FPM을 지원할 경우), pear.conf
등이 포함됩니다. 이 파일들 수정 후에는 ServBay 제어판 또는 servbayctl
커맨드로 PHP-FPM 서비스를 재시작해야 변경사항이 적용됩니다.
conf.d
는 PHP 확장 설정 폴더로, xdebug.ini
, opcache.ini
, redis.ini
등 개별 확장 설정을 담고 있습니다. 해당 파일들을 수정/추가/삭제 후 역시 PHP-FPM 서비스 재시작이 필요합니다.
참고: ServBay는 하나의 PHP 주요 버전에 소버전들이 같은 설정을 공유하도록 설계되어 있습니다. 예컨대, 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 비밀번호 변경 등은 보통 설정 파일 직접 수정보다 전용 명령어나 ServBay 제어판 내 기능을 활용하는 것이 일반적입니다.
Caddy (etc/caddy
)
Caddy의 설정 파일(Caddyfile
)은 etc/caddy
에 저장됩니다.
중요 안내: ServBay는 사용자가 제어판에서 웹사이트를 설정하면 자동으로 Caddyfile
을 생성하므로, 직접 수정하지 마세요. 수동 수정 내용은 다음 설정 생성 시 덮어써질 수 있습니다. 웹사이트에 별도 설정이 필요하다면 ServBay 제어판의 사이트 설정 내에서 처리하세요.
Nginx (etc/nginx
)
Nginx의 메인 설정 파일인 nginx.conf
는 etc/nginx
에 있습니다. Caddy와 비슷하게 사이트별 설정 조각 역시 자동 생성 또는 포함됩니다. 주요 설정 파일 직접 수정은 신중히 접근하고, 가능하면 제어판을 통해 사이트별 설정을 권장합니다.
dnsmasq (etc/dnsmasq
)
dnsmasq 설정 폴더에는 dnsmasq.conf
(기본값)와 domains.conf
(로컬 도메인 자동 생성)가 포함되어 있습니다.
중요 안내: dnsmasq.conf
, domains.conf
는 ServBay가 자동 생성 및 관리하므로, 직접 수정하면 안 됩니다. 임의 변경 시 로컬 사이트 접속이 불가능해질 수 있습니다.
기타 패키지 설정
Node.js, Python, Go, Java, Ruby, Rust 등 ServBay 지원 타 언어/서비스의 전역 또는 서비스 레벨 설정 파일도 해당 버전별 디렉토리 하위에 저장되며, 위와 동일한 버전별 구조를 따릅니다.
ServBay 내부 데이터 디렉토리 (data/servbay
)
/Applications/ServBay/data/servbay
1
이 디렉토리는 ServBay 프로그램 자체의 정상 동작을 위한 핵심 설정 파일, 상태 정보, 사용자별 세팅 등이 저장됩니다. 제어판 작동, 패키지 관리, 웹사이트/데이터베이스 구성 등과 밀접히 관련되어 있습니다.
중요 안내: 반드시 백업해 두세요. 수동으로 파일을 삭제하거나 수정하지 마십시오. 잘못 건드릴 경우 ServBay가 정상적으로 동작하지 않을 수 있습니다.
실행 파일 및 스크립트 디렉토리 (bin
, sbin
, script
)
/Applications/ServBay/bin -> package/bin
/Applications/ServBay/sbin -> package/sbin
/Applications/ServBay/script
1
2
3
2
3
ServBay에서 제공하는 모든 실행 파일은 bin
, sbin
하위에 정리되어 있습니다(심볼릭 링크, 실 파일은 package/bin, package/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 내부 관리 스크립트(예: 서비스 시작/중지, DB 초기화, 유지보수 작업 스크립트 등)가 있습니다. 직접 실행도 가능하지만, 일반적으로 servbayctl
명령행 툴을 사용하는 것이 안전하며, 이 툴이 이들 스크립트를 포괄적으로 관리합니다.
예: PHP 7.4 FPM 서비스를 시작하려면
bash
servbayctl start php 7.4
1
servbayctl
은 /Applications/ServBay/bin
하위에 위치합니다.
데이터베이스 파일 디렉토리 (db
)
/Applications/ServBay/db
1
이 디렉토리는 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 데이터파일
ServBay의 설계상 각 데이터베이스 주요 버전 별로 데이터파일을 공유합니다(MariaDB 11.2.x
전체가 /Applications/ServBay/db/mariadb/11.2
사용).
중요 안내: 이 폴더는 모든 로컬 데이터베이스 데이터를 포함합니다. ServBay 업그레이드, 시스템 이전 등 중요한 조치 전에는 /Applications/ServBay/db
전체를 반드시 백업해야 합니다. ServBay의 자동 백업 기능 역시 이 데이터를 포함합니다.
로그 디렉토리 (logs
)
/Applications/ServBay/logs -> package/var/log
1
모든 통합 서비스의 로그 파일은 /Applications/ServBay/logs
에 집중 저장되며, 이 경로는 실제로 /Applications/ServBay/package/var/log
로 연결됩니다. 서비스별 동작 상태, 에러 등의 모니터링이나 문제 해결 시 유용합니다.
로그 파일은 서비스별 하위 디렉토리로 구분됩니다:
logs/caddy/
,logs/nginx/
: Caddy, 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
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
)를 삭제해도 됩니다.
중요 안내: 각각의 패키지 주요 버전 폴더에는 현재 활성 소버전을 가리키는 current
심볼릭 링크(예: /Applications/ServBay/package/php/8.3/current
)가 있습니다. 이 current
링크는 절대 수동으로 삭제/수정하지 마세요. 손상시 ServBay가 실행 파일이나 라이브러리를 찾지 못해 서비스가 정상적으로 시작되지 않을 수 있습니다.
SSL 인증서 디렉토리 (ssl
)
/Applications/ServBay/ssl
1
SSL/TLS 관련 인증서 파일들이 이곳에 저장됩니다. 주요 구성은 아래와 같습니다.
- ACME 프로토콜을 통해 자동 발급받는 SSL 인증서(보통
ssl/caddy
또는ssl/acme
하위) - ServBay가 생성한 로컬 HTTPS 개발용 루트 인증서(ServBay User CA) 및 공개 인증서(ServBay Public CA)는 각각
ssl/private
,ssl/public
에 위치. 시스템 신뢰 저장소에 CA 인증서를 설치하면 브라우저에서 ServBay에서 발급한 인증서에 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
: 서비스의 활성 프로세스 ID를 저장- 소켓 파일:
php-cgi.sock
,mysql.sock
,pgsql.sock
등. 같은 머신 내 서비스 통신시 TCP보다 더 빠르고 효율적으로 프로세스 간 데이터를 주고받을 수 있게 해줍니다.
공용 구성 요소 및 개발 라이브러리 (package/common
)
/Applications/ServBay/package/common
1
ServBay가 설치한 패키지들의 의존 공용 모듈, 공유 라이브러리(*.dylib
) 및 선택적 개발 라이브러리가 포함됩니다.
ServBay Development Library(선택 설치, 컴파일용)의 경우, 이 폴더 하위에 include
(헤더)와 lib
(정적 라이브러리 *.a
, 링킹 라이브러리 *.la
) 폴더가 추가됩니다. PHP 확장이나 ServBay 라이브러리에 의존하는 소프트웨어를 직접 빌드할 때 활용됩니다.
중요 안내: package/common/lib
폴더 내 *.dylib
파일은 ServBay 소프트웨어들이 필수로 요구하는 공유 라이브러리이므로 직접 별도의 삭제/수정을 절대 하지 마세요. 라이브러리 부족으로 인해 실행에 치명적인 에러가 발생할 수 있습니다.
요약
ServBay의 디렉토리 구조는 소프트웨어 패키지, 설정, 데이터, 로그, 웹사이트 파일을 명확히 구분하여, 표준 Unix 파일 시스템 규약을 참고합니다. 이를 통해 개발자는 로컬 개발 환경을 직관적으로 관리할 수 있습니다. 각 디렉토리의 용도를 숙지하면 ServBay에서 웹 개발을 더욱 효율적이고 편리하게 수행할 수 있으며, 특히 data
와 db
등 주요 폴더의 정기 백업은 프로젝트의 안전을 지키는 데 필수적입니다.