Penjelasan Lengkap Struktur Direktori ServBay
ServBay direka khusus sebagai persekitaran pembangunan web tempatan untuk macOS. Struktur direktorinya adalah tersusun dan mudah difahami. Jika anda sudah biasa dengan sistem Linux/Unix, anda akan dapati cara pengurusan fail ServBay sangat mirip dengan struktur fail standard, yang memudahkan pembangun mengurus dan mencari fail dengan pantas.
Memahami struktur direktori ServBay sangat penting untuk memastikan kecekapan kerja pembangunan tempatan, konfigurasi persekitaran, penyelesaian masalah dan proses sandaran data. Artikel ini akan menerangkan secara terperinci mengenai direktori utama ServBay dan kegunaannya.
Struktur direktori tipikal pemasangan ServBay adalah seperti berikut:
ServBay
|____backup # Direktori fail sandaran
| |____config # Sandaran konfigurasi
| |____databases # Sandaran pangkalan data
| |____ssl # Sandaran sijil SSL
| |____websites # Sandaran fail laman web
|____bin # Direktori fail boleh laksana pengguna (symlink ke package/bin)
|____data # Direktori data dalaman ServBay
| |____servbay # Konfigurasi dan data teras ServBay
|____db # Direktori storan fail pangkalan data
| |____mariadb # Fail data MariaDB
| |____mongodb # Fail data MongoDB
| |____mysql # Fail data MySQL
| |____postgresql # Fail data PostgreSQL
| |____redis # Fail data Redis
|____etc # Direktori fail konfigurasi (symlink ke package/etc)
|____logs # Direktori fail log (symlink ke package/var/log)
|____package # Direktori pemasangan pakej perisian
| |____bin # Fail boleh laksana dalam pakej
| |____common # Komponen dan perpustakaan umum/pembangunan
| | |____imap-uw
| | |____include # Fail header (Perpustakaan Pembangunan ServBay)
| | |____lib # Perpustakaan berkongsi & statik (ServBay Development Library)
| | |____libexec
| | |____openssl
| | |____share
| |____etc # Lokasi sebenar fail konfigurasi pakej perisian
| | |____caddy
| | |____dnsmasq
| | |____mariadb
| | |____mongodb
| | |____mysql
| | |____nginx
| | |____openldap
| | |____php
| | |____postgresql
| | |____redis
| | |____... (konfigurasi perisian lain seperti Python, Go, Java, Ruby, Rust dll.)
| |____<package_name> # Direktori utama setiap pakej perisian
| | |____<major_version> # Direktori versi utama
| | | |____<full_version> # Direktori versi penuh (mengandungi fail pakej)
| | | |____current # Symlink ke versi terkini/pilihan
| | |____...
| |____sbin # Fail boleh laksana sistem untuk pakej
| |____var # Data berubah semasa (cth. lokasi sebenar log)
| | |____log # Tempat simpan log sebenar
| | |____run # Fail runtime (cth. fail .pid)
|____sbin # Direktori fail boleh laksana sistem (symlink ke package/sbin)
|____script # Skrip pengurusan dalaman ServBay
|____ssl # Direktori sijil SSL
| |____acme # Sijil SSL yang diperoleh melalui protokol ACME
| |____caddy # Sijil SSL automatik yang dijana Caddy
| |____import # Sijil SSL pihak ketiga yang diimport oleh pengguna
| |____private # CA Pengguna ServBay
| |____public # CA Awam ServBay
|____tmp # Direktori fail sementara dan fail Socket
|____www # Root laman web
| |____servbay # Direktori laman web contoh
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
Berikut ialah penjelasan terperinci kegunaan setiap direktori.
Direktori Utama ServBay
Direktori utama ServBay secara lalai terletak di /Applications/ServBay
. Semua fail perisian, konfigurasi, data dan log berkaitan ServBay dikumpulkan di sini.
Bagi memastikan keselamatan persekitaran pembangunan tempatan dan data anda, adalah sangat disyorkan untuk membuat sandaran berkala bagi direktori utama ini. Anda boleh gunakan Time Machine atau mana-mana perisian sandaran untuk membuat salinan penuh /Applications/ServBay
.
Direktori Root Laman Web (www
)
Direktori utama untuk fail laman web ialah /Applications/ServBay/www
. Di sinilah semua projek laman web tempatan anda perlu disimpan.
Untuk memudahkan pengurusan dan mengekalkan struktur yang tersusun, sangat disyorkan agar setiap projek laman web/laman maya (dirujuk sebagai "website" dalam ServBay) dijadikan subdirektori tersendiri.
Sebagai contoh, jika anda mencipta laman web.servbay.demo
, api.servbay.demo
dan new.servbay.local
, struktur kemas mereka adalah seperti berikut:
/Applications/ServBay/www
|____servbay.demo # Untuk semua laman bawah domain *.servbay.demo
| |____web # Fail laman untuk web.servbay.demo
| |____api # Fail laman untuk api.servbay.demo
|____servbay.local # Untuk laman bawah *.servbay.local
| |____new # Fail laman untuk new.servbay.local
|____myproject # Projek bebas lain, contohnya myproject.local
1
2
3
4
5
6
7
2
3
4
5
6
7
Struktur sebegini sangat memudahkan pengurusan projek dan perbezaan antara domain.
Direktori Fail Konfigurasi (etc
)
Direktori konfigurasi /Applications/ServBay/etc
sebenarnya adalah symlink ke /Applications/ServBay/package/etc
. Di sinilah semua perisian seperti PHP, MariaDB, Nginx, Caddy dsb. menyimpan fail konfigurasi utamanya.
Untuk kegunaan harian, anda boleh akses dan ubah suai terus fail konfigurasi melalui laluan /Applications/ServBay/etc
. Sila pastikan anda restart perkhidmatan berkaitan selepas setiap perubahan agar ia berkuatkuasa.
Berikut adalah contoh lokasi fail konfigurasi perisian utama:
PHP (etc/php
)
Direktori konfigurasi PHP menggunakan struktur dua tingkat berdasarkan versi utama PHP. Sebagai contoh dalam etc/php
anda akan dapati direktori 5.6
, 7.4
, 8.3
dan lain-lain, setiap satunya mewakili satu versi utama. Struktur tipikal ialah:
php
|____5.6 # Konfigurasi PHP 5.6
| |____conf.d # Direktori konfigurasi lanjutan
| |____php.ini # Fail konfigurasi utama PHP
|____7.4 # Konfigurasi PHP 7.4
| |____conf.d # Direktori konfigurasi lanjutan
| |____php-fpm.d # Direktori konfigurasi pool PHP-FPM
| |____php-fpm.conf # Fail konfigurasi utama PHP-FPM
| |____php.ini # Fail konfigurasi utama PHP
|____8.3 # Konfigurasi PHP 8.3
| |____conf.d
| |____php-fpm.d
| |____php-fpm.conf
| |____php.ini
|____... (versi PHP lain)
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
Setiap direktori versi mengandungi php.ini
(konfigurasi utama), php-fpm.conf
(jika FPM disokong), pear.conf
dsb. Selepas setiap pindaan, anda perlu restart perkhidmatan PHP-FPM melalui panel kawalan ServBay atau arahan servbayctl
.
Direktori conf.d
ialah tempat konfigurasi sambungan PHP – seperti xdebug.ini
, opcache.ini
, redis.ini
dsb. Setiap perubahan juga memerlukan restart PHP-FPM yang berkaitan.
Nota: ServBay menyatukan konfigurasi untuk semua subversi dalam satu versi utama contohnya PHP 8.3.3
dan 8.3.5
akan berkongsi fail dalam etc/php/8.3
.
MariaDB / MySQL / PostgreSQL (etc/mariadb
, etc/mysql
, etc/postgresql
)
Konfigurasi pangkalan data juga distrukturkan mengikut direktori versi, contoh etc/mariadb/11.2
. Fail utama termasuk my.cnf
(MariaDB/MySQL) dan postgresql.conf
(PostgreSQL). Sebarang perubahan perlu diikuti oleh restart pangkalan data berkaitan.
Tukar kata laluan root biasanya perlu dilakukan melalui panel kawalan ServBay atau utiliti baris arahan – bukan melalui fail konfigurasi secara langsung.
Caddy (etc/caddy
)
Fail konfigurasi Caddy (Caddyfile
) disimpan di etc/caddy
.
PENTING: ServBay akan secara automatik menjana semula fail Caddyfile
berdasarkan konfigurasi website dalam panel kawalan. JANGAN ubah fail ini secara manual kerana perubahan anda mungkin akan ditimpa apabila konfigurasi baharu dijana. Untuk menambah konfigurasi Caddy khusus projek, sila lakukannya melalui tetapan laman dalam panel kawalan ServBay.
Nginx (etc/nginx
)
Fail konfigurasi utama Nginx nginx.conf
terletak di etc/nginx
. ServBay akan auto-generate/paparkan konfigurasi berkaitan laman secara automatik. Ubah suai manual sangat tidak digalakkan; lakukan melalui panel kawalan jika perlu.
dnsmasq (etc/dnsmasq
)
Direktori ini mengandungi configurasi dnsmasq.conf
(lalai) & domains.conf
(senarai domain tempatan yang dijana ServBay).
PENTING: Kedua-dua fail ini diurus sepenuhnya oleh ServBay untuk memastikan resolusi domain tempatan berjalan lancar. JANGAN ubah fail-fail ini secara manual bagi mengelakkan kegagalan capaian laman web tempatan anda.
Konfigurasi Perisian Lain
Pakej perisian lain seperti Node.js, Python, Go, Java, Ruby, Rust dll. juga akan menyimpan konfigurasi mereka dalam subdirektori masing-masing di bawah etc
, mengikut struktur versi yang serupa.
Direktori Data Dalaman ServBay (data/servbay
)
/Applications/ServBay/data/servbay
1
Direktori ini menyimpan fail konfigurasi penting, maklumat status, serta tetapan khas pengguna yang diperlukan bagi operasi teras ServBay. Fail-fail di sini sangat kritikal kepada fungsi panel kawalan, pengurusan pakej perisian, konfigurasi laman dan pangkalan data.
PENTING: Pastikan direktori ini disandarkan dengan kerap. Jangan hapus atau ubah fail-fail di sini secara manual kerana ia mungkin menyebabkan ServBay gagal dimulakan atau kehilangan konfigurasi penting.
Direktori Fail Boleh Laksana & Skrip (bin
, sbin
, script
)
/Applications/ServBay/bin -> package/bin
/Applications/ServBay/sbin -> package/sbin
/Applications/ServBay/script
1
2
3
2
3
Semua fail boleh laksana disusun dalam bin
dan sbin
, kedua-duanya adalah symlink kepada package/bin
dan package/sbin
. Dalamnya mengandungi pelbagai utiliti, bahasa pengaturcaraan dan alat yang sedia digunakan oleh ServBay.
ServBay menambah direktori ini ke dalam variabel sistem PATH semasa ia bermula, membolehkan anda menggunakan arahan seperti:
- Utiliti popular:
curl
,openssl
,frpc
dan sebagainya. - Runtime pelbagai versi: seperti
php
(lalai),php-5.6
,php-7.4
,php-8.3
,node
(lalai),node-16
,node-18
,python3
,go
,java
,ruby
,rustc
dll. Untuk guna versi tertentu, sebutkan bersama nombor versi. - Klien pangkalan data:
mysql
,psql
,mongosh
,redis-cli
dan lain-lain.
Direktori script
(/Applications/ServBay/script
) menyimpan skrip sistem dalaman untuk pengurusan ServBay – misalnya memulakan/berhentikan perkhidmatan, inisialisasi pangkalan data atau tugas penyelenggaraan. Walaupun skrip ini boleh dilancarkan terus, disarankan menggunakan alat servbayctl
yang lebih mesra pengguna dalam /Applications/ServBay/bin
.
Contoh memulakan PHP 7.4 FPM:
bash
servbayctl start php 7.4
1
Alat servbayctl
berada di /Applications/ServBay/bin
.
Direktori Fail Pangkalan Data (db
)
/Applications/ServBay/db
1
Direktori ini ialah tempat simpan utama fail data untuk semua perkhidmatan pangkalan data. Struktur failnya serupa dengan konfigurasi – dibezakan mengikut jenis dan versi utama perisian:
/Applications/ServBay/db/mariadb/<major_version>
: Data MariaDB/Applications/ServBay/db/mysql/<major_version>
: Data MySQL/Applications/ServBay/db/postgresql/<major_version>
: Data PostgreSQL/Applications/ServBay/db/mongodb
: Data MongoDB/Applications/ServBay/db/redis
: Data Redis
Setiap versi utama berkongsi fail data yang sama, contohnya semua MariaDB 11.2.x
akan menggunakan fail data dalam /Applications/ServBay/db/mariadb/11.2
.
PENTING: Direktori ini memuatkan semua data pangkalan data tempatan anda. Pastikan anda menyandarkan /Applications/ServBay/db
sebelum melakukan operasi penting seperti naik taraf ServBay atau migrasi sistem. Fungsi sandaran automatik ServBay turut menyertakan fail pangkalan data.
Direktori Log (logs
)
/Applications/ServBay/logs -> package/var/log
1
Semua log perkhidmatan akan disimpan terpusat di /Applications/ServBay/logs
(symlink ke /Applications/ServBay/package/var/log
). Ini memudahkan anda untuk memantau operasi dan masalah setiap perkhidmatan.
Fail log biasanya diasingkan mengikut jenis:
logs/caddy/
ataulogs/nginx/
: Log akses dan ralat, diasingkan mengikut domain laman.logs/php/
: Log PHP-FPM (php-fpm.log
) serta log ralat fail kod PHP (errors.log
).errors.log
merekodkan ralat teruk yang tidak ditangani oleh framework atau aplikasi.logs/mariadb/
,logs/mysql/
,logs/postgresql/
,logs/mongodb/
,logs/redis/
: Log ralat, log pertanyaan perlahan dan lain-lain.- Log perkhidmatan lain: Python, Go, Java, Ruby, Rust dsb. akan disimpan mengikut subdirektori masing-masing.
Nota: Fail log akses dan ralat boleh memakan ruang cakera yang besar – terutamanya untuk projek aktif. Disarankan agar anda semak dan padamkan log yang tidak perlu secara berkala.
Direktori Pakej Perisian (package
)
/Applications/ServBay/package
1
Ini adalah direktori induk pemasangan semua pakej perisian ServBay. Setiap pakej ditempatkan dalam subdirektori tersendiri berdasarkan nama, versi utama & versi penuh contoh /Applications/ServBay/package/php/8.3/8.3.7
.
Pihak pengguna boleh memasang, membuang dan beralih antara versi melalui panel kawalan ServBay.
Jika ingin mengosongkan ruang cakera, boleh buang direktori versi penuh lama yang tidak digunakan (cth. /Applications/ServBay/package/php/8.2/8.2.10
).
PENTING: Setiap direktori versi utama (cth. /Applications/ServBay/package/php/8.3
) biasanya mempunyai symlink current
ke versi terkini yang sedang aktif. JANGAN hapus atau ubah symlink ini secara manual kerana ia kritikal bagi operasi perkhidmatan.
Direktori Sijil SSL (ssl
)
/Applications/ServBay/ssl
1
Direktori ini menyimpan semua fail berkaitan SSL/TLS – termasuk:
- Sijil SSL yang diperoleh secara automatik untuk laman web tempatan melalui ACME (biasanya dalam
ssl/caddy
ataussl/acme
, bergantung pada pelayan web anda). - Sijil root CA dan CA awam yang dijana oleh ServBay khas untuk pembangunan HTTPS tempatan (dalam
ssl/private
danssl/public
). Selepas memasang root CA ini ke gedung kepercayaan sistem macOS, anda boleh melayari laman web tempatan secara HTTPS tanpa amaran.
Direktori Sandaran (backup
)
/Applications/ServBay/backup
1
Direktori ini ialah tempat simpan fail sandaran automatik yang dihasilkan oleh fungsi backup terbina dalam ServBay, termasuk:
backup/config
: Sandaran konfigurasi teras dan konfigurasi perisian.backup/databases
: Sandaran data MariaDB, MySQL, PostgreSQL, MongoDB dan lain-lain.backup/ssl
: Sandaran sijil SSL.backup/websites
: Sandaran projek laman dari/Applications/ServBay/www
.
Semak direktori ini secara berkala, dan untuk strategi pemulihan bencana yang lebih baik, pindahkan sandaran luar ke storan luaran.
Direktori Fail Sementara (tmp
)
/Applications/ServBay/tmp
1
Direktori ini menyimpan fail sementara yang dijana perkhidmatan semasa operasi – biasanya fail .pid
dan fail Socket.
- Fail
.pid
: Menyimpan ID proses bagi setiap servis yang sedang aktif. - Fail Socket: Contohnya
php-cgi.sock
,mysql.sock
,pgsql.sock
dsb. Ini membolehkan komunikasi pantas antara proses pada mesin yang sama. Akses melalui fail socket lazimnya lebih cekap/berprestasi tinggi berbanding sambungan TCP.
Komponen Umum dan Perpustakaan Pembangunan (package/common
)
/Applications/ServBay/package/common
1
Direktori ini mengandungi semua komponen dan perpustakaan berkongsi yang diperlukan oleh pakej ServBay. Ia termasuk fail *.dylib
serta perpustakaan pembangunan pilihan.
Jika anda memasang ServBay Development Library (pilihan), anda juga akan dapati direktori include
(fail header) dan lib
(fail statik/linker) di sini. Ia berguna jika anda ingin membina sambungan PHP atau perisian lain yang bergantung kepada perpustakaan dalaman ServBay.
PENTING: Jangan hapus fail *.dylib
dalam package/common/lib
kerana ia diperlukan untuk operasi perisian ServBay. Kehilangan fail ini mungkin menyebabkan kegagalan menjalankan perkhidmatan.
Ringkasan
Struktur direktori ServBay membahagikan dengan jelas antara perisian, konfigurasi, data, log, dan fail laman, sambil mencontohi struktur fail Unix standard bagi kemudahan pengurusan pembangun. Memahami tujuan setiap direktori akan sangat memudahkan dan mempercepatkan workflow pembangunan web anda menggunakan ServBay. Sandarkan direktori kritikal (terutamanya data
dan db
) secara berkala untuk memastikan kerja anda sentiasa terpelihara.