Phân Tích Chi Tiết Cấu Trúc Thư Mục ServBay
Tổng Quan
ServBay là môi trường phát triển Web cục bộ hỗ trợ macOS và Windows, được thiết kế với cấu trúc thư mục gọn gàng và logic. Nếu bạn từng làm việc với hệ thống Linux/Unix, bạn sẽ thấy cách tổ chức tệp của ServBay khá tương đồng với bố cục hệ thống tệp tiêu chuẩn, giúp các lập trình viên dễ dàng xác định vị trí và quản lý mọi loại tệp một cách nhanh chóng.
Vị Trí Cài Đặt ServBay
Vị trí cài đặt mặc định của ServBay trên từng hệ điều hành:
- macOS:
/Applications/ServBay
- Windows:
C:\ServBay
Hiểu rõ về cấu trúc thư mục của ServBay sẽ giúp bạn phát triển tại chỗ hiệu quả hơn, dễ dàng cấu hình môi trường, xử lý sự cố và đảm bảo an toàn dữ liệu khi sao lưu. Dưới đây là mô tả chi tiết về các thư mục chính và chức năng của chúng.
Cấu trúc thư mục điển hình khi cài đặt ServBay:
ServBay
|____backup # Thư mục lưu trữ file sao lưu
| |____config # Sao lưu cấu hình
| |____databases # Sao lưu cơ sở dữ liệu
| |____ssl # Sao lưu chứng chỉ SSL
| |____websites # Sao lưu file website
|____bin # Thư mục file thực thi người dùng (liên kết mềm tới package/bin)
|____data # Thư mục dữ liệu nội bộ ServBay
| |____servbay # Cấu hình và dữ liệu lõi của ServBay
|____db # Thư mục lưu file cơ sở dữ liệu
| |____mariadb # File dữ liệu MariaDB
| |____mongodb # File dữ liệu MongoDB
| |____mysql # File dữ liệu MySQL
| |____postgresql # File dữ liệu PostgreSQL
| |____redis # File dữ liệu Redis
|____etc # Thư mục lưu trữ file cấu hình (liên kết mềm tới package/etc)
|____logs # Thư mục nhật ký (liên kết mềm tới package/var/log)
|____package # Thư mục cài đặt phần mềm
| |____bin # File thực thi của phần mềm
| |____common # Thư viện chung và thư viện phát triển
| | |____imap-uw
| | |____include # Thư mục header (ServBay Development Library)
| | |____lib # Thư viện liên kết động và tĩnh (ServBay Development Library)
| | |____libexec
| | |____openssl
| | |____share
| |____etc # Vị trí lưu trữ file cấu hình phần mềm
| | |____caddy
| | |____dnsmasq
| | |____mariadb
| | |____mongodb
| | |____mysql
| | |____nginx
| | |____openldap
| | |____php
| | |____postgresql
| | |____redis
| | |____... (cấu hình cho các phần mềm khác như Python, Go, Java, Ruby, Rust v.v.)
| |____<package_name> # Thư mục chính của mỗi phần mềm
| | |____<major_version> # Thư mục phiên bản chính
| | | |____<full_version> # Thư mục phiên bản đầy đủ (chứa bản thân phần mềm)
| | | |____current # Liên kết mềm tới phiên bản đầy đủ mới nhất
| | |____...
| |____sbin # File hệ thống của phần mềm
| |____var # Dữ liệu biến phần mềm (ví dụ vị trí nhật ký thực tế)
| | |____log # Nhật ký thực tế
| | |____run # File runtime (ví dụ file .pid)
|____sbin # Thư mục file thực thi hệ thống (liên kết mềm tới package/sbin)
|____script # Script quản lý nội bộ ServBay
|____ssl # Thư mục chứng chỉ SSL
| |____acme # Chứng chỉ SSL theo chuẩn ACME
| |____caddy # Chứng chỉ SSL tự động tạo bởi Caddy
| |____import # Chứng chỉ SSL bên thứ ba do người dùng nhập vào
| |____private # ServBay User CA
| |____public # ServBay Public CA
|____tmp # Thư mục file tạm thời và socket
|____www # Thư mục root website
| |____servbay # Thư mục website mẫu
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
Phần dưới đây sẽ giải thích cụ thể từng thư mục.
Thư Mục Chính ServBay
Thư mục chính của ServBay mặc định đặt tại /Applications/ServBay
. Tất cả phần mềm, file cấu hình, dữ liệu, nhật ký liên quan đến ServBay đều tập trung tại đây.
Để bảo vệ môi trường phát triển và dữ liệu của bạn, hãy thường xuyên sao lưu thư mục này bằng Time Machine hoặc công cụ sao lưu bất kỳ.
Thư Mục Root Website (www
)
Thư mục lưu trữ file website nằm tại /Applications/ServBay/www
. Đây là nơi bạn đặt các dự án website cục bộ của mình.
Để quản lý dễ dàng và rõ ràng, khuyến nghị nên tạo từng thư mục con riêng cho mỗi dự án hoặc website ảo (“website” trong ServBay) tại đây.
Ví dụ, bạn khởi tạo các website như web.servbay.demo
, api.servbay.demo
và new.servbay.local
sẽ tổ chức như sau:
/Applications/ServBay/www
|____servbay.demo # Chứa tất cả website thuộc miền *.servbay.demo
| |____web # File website của web.servbay.demo
| |____api # File website của api.servbay.demo
|____servbay.local # Chứa các website thuộc miền *.servbay.local
| |____new # File website của new.servbay.local
|____myproject # Các dự án độc lập khác như myproject.local
1
2
3
4
5
6
7
2
3
4
5
6
7
Cách tổ chức này giúp bạn dễ nhận diện và quản lý từng dự án, miền website.
Thư Mục File Cấu Hình (etc
)
Thư mục file cấu hình /Applications/ServBay/etc
thực tế là liên kết mềm tới /Applications/ServBay/package/etc
. Đây là nơi ServBay lưu mọi file cấu hình của các phần mềm cài đặt (ví dụ PHP, MariaDB, Nginx, Caddy...).
Bạn có thể truy cập và chỉnh sửa trực tiếp từ đường dẫn /Applications/ServBay/etc
. Sau khi sửa đổi hầu hết các file cấu hình, bạn cần khởi động lại dịch vụ tương ứng để áp dụng thay đổi.
Một số ví dụ vị trí lưu file cấu hình phần mềm phổ biến:
PHP (etc/php
)
Thư mục cấu hình PHP chia thành hai tầng, phân loại theo phiên bản lớn của PHP. Ví dụ, trong etc/php
sẽ có các thư mục 5.6
, 7.4
, 8.3
... mỗi thư mục tương ứng với một phiên bản lớn. Ví dụ:
php
|____5.6 # Cấu hình cho PHP 5.6
| |____conf.d # Thư mục cấu hình extension
| |____php.ini # File cấu hình chính PHP
|____7.4 # Cấu hình cho PHP 7.4
| |____conf.d # Thư mục cấu hình extension
| |____php-fpm.d # Thư mục cấu hình pool PHP-FPM
| |____php-fpm.conf # File cấu hình chính PHP-FPM
| |____php.ini # File cấu hình chính PHP
|____8.3 # Cấu hình cho PHP 8.3
| |____conf.d
| |____php-fpm.d
| |____php-fpm.conf
| |____php.ini
|____... (các phiên bản PHP khác)
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
Mỗi phiên bản chứa php.ini
(file cấu hình chính), php-fpm.conf
(cấu hình chính PHP-FPM nếu hỗ trợ FPM), pear.conf
v.v. Sau khi sửa các file này, bạn cần sử dụng bảng điều khiển ServBay hoặc lệnh servbayctl
để khởi động lại dịch vụ PHP-FPM tương ứng và áp dụng thay đổi.
Thư mục conf.d
là nơi lưu các cấu hình extension PHP như xdebug.ini
, opcache.ini
, redis.ini
... Chỉnh sửa các file này để tải, gỡ hoặc chỉnh cấu hình cho từng extension. Sau chỉnh sửa, cũng cần khởi động lại PHP-FPM.
Lưu ý: ServBay thiết kế để các bản nhỏ của một phiên bản PHP dùng chung file cấu hình, ví dụ PHP 8.3.3
và 8.3.5
cùng sử dụng file trong etc/php/8.3
.
MariaDB / MySQL / PostgreSQL (etc/mariadb
, etc/mysql
, etc/postgresql
)
Cấu hình database cũng được chia theo phiên bản lớn, ví dụ etc/mariadb/11.2
. Trong các thư mục này thường có file cấu hình chính như my.cnf
(MariaDB/MySQL), postgresql.conf
(PostgreSQL). Sửa đổi cần khởi động lại dịch vụ để áp dụng. Phiên bản nhỏ cùng bản lớn chia sẻ file cấu hình.
Đặt lại mật khẩu cho user root
của MariaDB, MySQL hay PostgreSQL thường dùng lệnh riêng hoặc chức năng trên bảng điều khiển ServBay.
Caddy (etc/caddy
)
File cấu hình chính của Caddy (Caddyfile
) nằm trong thư mục etc/caddy
.
Quan trọng: ServBay sẽ tự động sinh Caddyfile
dựa trên cấu hình “website” bạn thiết lập trong bảng điều khiển. Không chỉnh sửa file này bằng tay vì thay đổi có thể bị ghi đè khi ServBay cập nhật cấu hình. Muốn thêm cấu hình Caddy tùy biến cho website nào, hãy thiết lập trong phần quản lý website của ServBay.
Nginx (etc/nginx
)
File cấu hình chính (nginx.conf
) nằm tại etc/nginx
. Tương tự Caddy, ServBay cũng tự động sinh hoặc bổ sung đoạn cấu hình website vào file chính. Nếu muốn chỉnh sửa tay, cần rất cẩn trọng, thường nên thao tác qua bảng điều khiển ServBay.
dnsmasq (etc/dnsmasq
)
Thư mục cấu hình dnsmasq chứa dnsmasq.conf
(cấu hình mặc định) và domains.conf
(ServBay tự động sinh ra dựa trên domain cục bộ bạn cấu hình).
Lưu ý quan trọng: Hai file này đều do ServBay tự quản lý để đảm bảo hệ thống tên miền cục bộ hoạt động ổn. Không chỉnh sửa thủ công để tránh website bị lỗi không truy cập được.
Cấu Hình Các Phần Mềm Khác
Đối với phần mềm khác như Node.js, Python, Go, Java, Ruby, Rust..., nếu có file cấu hình toàn hệ hoặc dành cho dịch vụ, thường sẽ lưu trong thư mục con của etc
và quy tắc chia theo phiên bản cũng tương tự.
Thư Mục Dữ Liệu Nội Bộ ServBay (data/servbay
)
/Applications/ServBay/data/servbay
1
Thư mục này lưu các file cấu hình, trạng thái và thiết lập quan trọng giúp ứng dụng ServBay vận hành ổn định. Các file ở đây giúp quản lý bảng điều khiển ServBay, phần mềm, cấu hình website, database v.v.
Quan trọng: Hãy sao lưu thư mục này thường xuyên. Không xóa hoặc sửa file bên trong bằng tay để tránh lỗi khởi động hoặc mất cấu hình của ServBay.
Thư Mục File Thực Thi & Script (bin
, sbin
, script
)
/Applications/ServBay/bin -> package/bin
/Applications/ServBay/sbin -> package/sbin
/Applications/ServBay/script
1
2
3
2
3
Các file thực thi của ServBay nằm trong bin
và sbin
(liên kết mềm tới package/bin
và package/sbin
). Đây là nơi tập trung các công cụ tích hợp và môi trường ngôn ngữ.
Bạn có thể sử dụng các file thực thi này trực tiếp trong terminal do ServBay tự động bổ sung đường dẫn vào biến môi trường PATH khi khởi động. Bao gồm:
- Công cụ phổ biến:
curl
,openssl
,frpc
v.v. - Nhiều phiên bản môi trường ngôn ngữ: ví dụ
php
(mặc định),php-5.6
,php-7.4
,php-8.3
,node
(mặc định),node-16
,node-18
,python3
,go
,java
,ruby
,rustc
... Có thể chỉ định chính xác phiên bản khi dùng. - Trình khách database:
mysql
,psql
,mongosh
,redis-cli
...
Thư mục script
(/Applications/ServBay/script
) chứa các script quản lý hệ thống ServBay như khởi động/dừng dịch vụ, khởi tạo database, bảo trì v.v. Có thể tự chạy các script này, nhưng nên dùng công cụ servbayctl
vì nó đóng gói logic quản lý thành giao diện dễ dùng.
Ví dụ, để khởi động PHP-FPM 7.4:
bash
servbayctl start php 7.4
1
Công cụ servbayctl
nằm ở /Applications/ServBay/bin
.
Thư Mục Dữ Liệu Database (db
)
/Applications/ServBay/db
1
Đây là nơi các phần mềm cơ sở dữ liệu lưu trữ dữ liệu thật sự. Tổ chức vả cấu trúc cũng chia theo loại phần mềm, phiên bản lớn.
/Applications/ServBay/db/mariadb/<major_version>
: dữ liệu của MariaDB/Applications/ServBay/db/mysql/<major_version>
: dữ liệu của MySQL/Applications/ServBay/db/postgresql/<major_version>
: dữ liệu của PostgreSQL/Applications/ServBay/db/mongodb
: dữ liệu của MongoDB/Applications/ServBay/db/redis
: dữ liệu của Redis
Mỗi phần mềm dùng chung file dữ liệu cho phiên bản lớn. Ví dụ MariaDB 11.2.x
các bản dùng chung dữ liệu trong /Applications/ServBay/db/mariadb/11.2
.
Lưu ý quan trọng: Thư mục này chứa tất cả dữ liệu database cục bộ. Hãy luôn sao lưu lại trước các thao tác lớn như nâng cấp ServBay hoặc di chuyển hệ thống. Tính năng sao lưu tự động của ServBay cũng sẽ lưu cả dữ liệu database.
Thư Mục Nhật Ký (logs
)
/Applications/ServBay/logs -> package/var/log
1
Các file nhật ký của dịch vụ tập trung trong /Applications/ServBay/logs
(liên kết mềm tới /Applications/ServBay/package/var/log
). Điều này giúp bạn dễ dàng kiểm tra trạng thái dịch vụ hoặc phân tích lỗi.
Thư mục con chứa nhật ký theo loại dịch vụ:
logs/caddy/
hoặclogs/nginx/
: nhật ký truy cập, lỗi của Caddy/Nginx, thường chia nhỏ theo website/domainlogs/php/
: nhật ký PHP-FPM (php-fpm.log
), lỗi thực thi mã PHP (errors.log
). Fileerrors.log
ghi lỗi nghiêm trọng chưa được framework hoặc ứng dụng xử lý.logs/mariadb/
,logs/mysql/
,logs/postgresql/
,logs/mongodb/
,logs/redis/
: nhật ký lỗi, truy vấn chậm... cho từng loại database.- Nhật ký dịch vụ khác: Python, Go, Java, Ruby, Rust v.v. cũng lưu trong thư mục tương ứng.
Lưu ý: Nhật ký, đặc biệt nhật ký truy cập và lỗi, có thể hao tốn nhiều dung lượng đĩa với dự án lớn. Nên định kỳ kiểm tra xoá các file không cần thiết.
Thư Mục Phần Mềm (package
)
/Applications/ServBay/package
1
Thư mục này lưu mọi bản cài đặt phần mềm của ServBay. Các phần mềm sẽ được chia riêng thành nhiều thư mục theo dạng tên_phần_mềm/phiên_bản_lớn/phiên_bản_đầy_đủ
. Ví dụ PHP có thể nằm ở /Applications/ServBay/package/php/8.3/8.3.7
.
Thông qua bảng điều khiển ServBay có thể dễ dàng cài đặt, gỡ, chuyển đổi phiên bản phần mềm.
Nếu cần giải phóng dung lượng, bạn có thể tự xóa thư mục phiên bản đầy đủ cũ (như /Applications/ServBay/package/php/8.2/8.2.10
).
Quan trọng: Trong mỗi thư mục phiên bản lớn (ví dụ /Applications/ServBay/package/php/8.3
) sẽ có liên kết mềm current
chỉ tới phiên bản đầy đủ đang dùng. Không tự xóa hoặc chỉnh sửa liên kết current
nếu không ServBay có thể không nhận diện đúng phiên bản phần mềm, dẫn đến dịch vụ không khởi động được.
Thư Mục SSL (ssl
)
/Applications/ServBay/ssl
1
Chứa file chứng chỉ liên quan tới SSL/TLS, gồm:
- Chứng chỉ SSL tự động đăng ký qua giao thức ACME cho website cục bộ (thường lưu trong
ssl/caddy
hayssl/acme
tuỳ web server) - CA root cho phát triển HTTPS cục bộ (ServBay User CA) và chứng chỉ công khai (ServBay Public CA), thường ở
ssl/private
vàssl/public
. Khi cài CA này vào kho tin cậy của hệ thống, trình duyệt sẽ tin các chứng chỉ ServBay cấp cho website cục bộ, chỉ định HTTPS không cảnh báo.
Thư Mục Sao Lưu (backup
)
/Applications/ServBay/backup
1
Đây là nơi lưu file sao lưu tự động của ServBay, giúp bạn bảo vệ dữ liệu và cấu hình:
backup/config
: Sao lưu file cấu hình cốt lõi và cấu hình phần mềmbackup/databases
: Sao lưu dữ liệu MariaDB, MySQL, PostgreSQL, MongoDB...backup/ssl
: Sao lưu file chứng chỉ SSLbackup/websites
: Sao lưu file dự án tại/Applications/ServBay/www
Nên thường xuyên kiểm tra và sao chép dữ liệu sao lưu sang thiết bị lưu trữ ngoài để dự phòng lâu dài.
Thư Mục File Tạm Thời (tmp
)
/Applications/ServBay/tmp
1
Lưu trữ file tạm sinh ra trong lúc chạy dịch vụ, chủ yếu là .pid
và file socket cho giao tiếp dịch vụ.
- File
.pid
: Ghi lại ID tiến trình của dịch vụ đang chạy - File socket: Ví dụ như
php-cgi.sock
,mysql.sock
,pgsql.sock
... để các chương trình cục bộ trao đổi với php-fpm, database qua kênh Unix Domain Socket. Phương thức này thường nhanh và hiệu quả hơn TCP, đặc biệt cho giao tiếp giữa các tiến trình cùng máy.
Thư Viện Chung & Thư Viện Phát Triển (package/common
)
/Applications/ServBay/package/common
1
Chứa các thư viện dùng chung, file liên kết động (*.dylib
) và thư viện phát triển tuỳ chọn của tất cả phần mềm đã cài đặt.
Nếu bạn cài ServBay Development Library, ở đây sẽ có thư mục include
(header) và lib
(tĩnh *.a
, liên kết .la
). Những file này phù hợp khi cần biên dịch extension PHP hoặc phần mềm phụ thuộc thư viện của ServBay.
Quan trọng: Không xóa các file *.dylib
trong package/common/lib
vì đây là thư viện bắt buộc để phần mềm ServBay chạy ổn. Xóa file sẽ gây lỗi thiếu thư viện, dẫn đến phần mềm bị crash.
Tổng Kết
Cấu trúc thư mục của ServBay chia rõ ràng phần mềm, cấu hình, dữ liệu, nhật ký và website — dựa trên nguyên tắc hệ thống tệp Unix chuẩn — giúp các lập trình viên quản lý môi trường phát triển trực quan và tiện lợi. Hiểu rõ chức năng từng thư mục sẽ giúp bạn phát triển web tại chỗ hiệu quả hơn. Đừng quên sao lưu định kỳ các thư mục quan trọng (data
, db
) để bảo vệ công việc của mình khỏi mọi sự cố mất mát dữ liệu.