Penjelasan Lengkap Struktur Direktori ServBay
Pengenalan
ServBay ialah persekitaran pembangunan Web tempatan yang menyokong macOS dan Windows dengan rekaan struktur direktori yang kemas serta teratur. Jika anda biasa dengan sistem Linux/Unix, anda akan dapati cara pengurusan fail ServBay amat menyerupai susun atur fail sistem standard, memudahkan pembangun untuk mencapai dan mengurus fail dengan pantas.
Lokasi Pemasangan ServBay
Lokasi pemasangan ServBay secara lalai mengikut platform:
- macOS:
/Applications/ServBay - Windows:
C:\ServBay
Memahami struktur direktori ServBay adalah penting untuk membangunkan secara efisien, mengkonfigurasi persekitaran, menyelesaikan masalah, serta membuat sandaran data. Bahagian ini akan menerangkan direktori utama ServBay dan kegunaannya.
Struktur tipikal direktori 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 penyimpanan 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 pakej perisian
| |____common # Perpustakaan awam dan perpustakaan pembangunan
| | |____imap-uw
| | |____include # Fail header (ServBay Development Library)
| | |____lib # Perpustakaan bersama dan statik (ServBay Development Library)
| | |____libexec
| | |____openssl
| | |____share
| |____etc # Lokasi simpanan fail konfigurasi sebenar pakej
| | |____caddy
| | |____dnsmasq
| | |____mariadb
| | |____mongodb
| | |____mysql
| | |____nginx
| | |____openldap
| | |____php
| | |____postgresql
| | |____redis
| | |____... (pakej lain seperti Python, Go, Java, Ruby, Rust dsb.)
| |____<package_name> # Direktori utama setiap pakej perisian
| | |____<major_version> # Direktori versi utama
| | | |____<full_version> # Direktori versi lengkap (termasuk pakej penuh)
| | | |____current # Symlink ke versi penuh terkini
| | |____...
| |____sbin # Fail boleh laksana sistem pakej
| |____var # Data berubah-ubah pakej (seperti lokasi log sebenar)
| | |____log # Lokasi simpanan log sebenar
| | |____run # Fail runtime (.pid dsb.)
|____sbin # Direktori fail boleh laksana sistem (symlink ke package/sbin)
|____script # Skrip pengurusan dalaman ServBay
|____ssl # Direktori sijil SSL
| |____acme # Sijil SSL diperoleh melalui protokol ACME
| |____caddy # Sijil SSL dijana oleh Caddy secara automatik
| |____import # Sijil SSL pihak ketiga yang diimport oleh pengguna
| |____private # ServBay User CA
| |____public # ServBay Public CA
|____tmp # Direktori fail sementara dan Socket
|____www # Direktori root laman web
| |____servbay # Direktori laman web contoh1
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
Di bawah adalah penerangan setiap direktori utama.
Direktori Utama ServBay
Direktori utama ServBay terletak secara lalai di /Applications/ServBay. Semua pakej perisian, fail konfigurasi, data, log serta fail berkaitan ServBay berada di sini.
Bagi memastikan keselamatan persekitaran pembangunan tempatan dan data anda, sangat disyorkan untuk membuat sandaran direktori utama secara berkala. Anda boleh gunakan Time Machine atau perisian sandaran lain untuk menduplikasi direktori /Applications/ServBay secara lengkap.
Direktori Root Laman Web (www)
Fail laman web utama terletak di /Applications/ServBay/www. Inilah tempat anda menyimpan setiap projek laman web tempatan anda.
Untuk memastikan struktur kemas dan mudah diurus, sangat digalakkan supaya setiap projek atau laman web maya ("website" dalam ServBay) mempunyai folder subdirektori tersendiri di bawah direktori ini.
Contohnya, untuk laman seperti web.servbay.demo, api.servbay.demo dan new.servbay.local, struktur yang disyorkan adalah:
/Applications/ServBay/www
|____servbay.demo # Simpan semua laman untuk domain *.servbay.demo
| |____web # Fail untuk laman web.servbay.demo
| |____api # Fail untuk laman api.servbay.demo
|____servbay.local # Simpan semua laman untuk domain *.servbay.local
| |____new # Fail untuk laman new.servbay.local
|____myproject # Projek lain misalnya myproject.local1
2
3
4
5
6
7
2
3
4
5
6
7
Susunan begini memudahkan pembezaan projek berlainan dan domain, sekaligus melancarkan pengurusan.
Direktori Fail Konfigurasi (etc)
Direktori fail konfigurasi /Applications/ServBay/etc sebenarnya ialah symlink ke /Applications/ServBay/package/etc. Inilah lokasi fail konfigurasi utama bagi semua pakej ServBay (seperti PHP, MariaDB, Nginx, Caddy dan lain-lain).
Di penggunaan harian, anda boleh akses dan ubah fail konfigurasi terus melalui laluan /Applications/ServBay/etc. Selepas mengubah kebanyakan konfigurasi, biasanya anda perlu memulakan semula servis berkaitan agar perubahan berkuat kuasa.
Antara contoh lokasi fail konfigurasi pakej utama:
PHP (etc/php)
Direktori konfigurasi PHP terbahagi kepada dua lapisan, mengikut versi utama PHP. Dalam etc/php, anda akan temui folder seperti 5.6, 7.4, 8.3 dan sebagainya, setiap satunya untuk versi utama PHP tertentu. Struktur tipikal:
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 kolam 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 folder versi mengandungi php.ini (konfigurasi utama PHP), php-fpm.conf (konfigurasi utama PHP-FPM jika disokong), dan fail seperti pear.conf. Selepas mengubah konfigurasi ini, anda perlu memulakan semula servis PHP-FPM melalui panel kawalan ServBay atau perintah servbayctl.
conf.d ialah direktori konfigurasi lanjutan, seperti xdebug.ini, opcache.ini, redis.ini dan lain-lain. Edit fail ini untuk mengaktifkan, buang, atau ubah tetapan lanjutan PHP. Selepas mengubah, anda perlu memulakan semula servis PHP-FPM agar perubahan digunakan.
Perhatian: ServBay direka supaya setiap versi minor PHP dalam satu versi utama berkongsi fail konfigurasi. Contohnya, PHP 8.3.3 dan 8.3.5 keduanya menggunakan konfigurasi dalam etc/php/8.3.
MariaDB / MySQL / PostgreSQL (etc/mariadb, etc/mysql, etc/postgresql)
Direktori konfigurasi perisian pangkalan data juga diasingkan mengikut versi, misalnya etc/mariadb/11.2. Di dalam anda akan temui fail utama seperti my.cnf untuk MariaDB/MySQL atau postgresql.conf untuk PostgreSQL. Untuk berkuat kuasa, perlu mulakan semula servis selepas mengubah. Versi minor dalam satu versi utama menggunakan fail konfigurasi yang sama.
Untuk menetapkan semula kata laluan pengguna root MariaDB, MySQL atau PostgreSQL, gunakan alat baris perintah khas atau fungsi panel kawalan ServBay, bukan melalui pengubahsuaian fail terus.
Caddy (etc/caddy)
Fail konfigurasi Caddy (Caddyfile) tersimpan dalam etc/caddy.
Penting: ServBay akan menjanakan semula Caddyfile berdasarkan konfigurasi laman web anda melalui panel kawalan. Jangan ubah fail ini secara manual, perubahan anda mungkin akan ditindih pada penjanaan semula. Untuk konfigurasi khas, gunakan terus tetapan di panel kawalan laman web ServBay.
Nginx (etc/nginx)
Fail konfigurasi utama Nginx (nginx.conf) terletak di etc/nginx. Sama seperti Caddy, ServBay menjana dan memasukkan konfigurasi laman secara automatik. Ubah suai fail utama hanya jika perlu, sebaiknya urus melalui panel kawalan ServBay.
dnsmasq (etc/dnsmasq)
Direktori konfigurasi dnsmasq mengandungi dnsmasq.conf (fail konfigurasi lalai) dan domains.conf (fail domain tempatan yang dijana automatik oleh ServBay berdasarkan laman web anda).
Penting: Kedua-dua fail ini dijana dan diurus secara automatik oleh ServBay untuk memastikan penyelesaian domain tempatan berfungsi dengan baik. Jangan ubah suai secara manual kerana boleh menyebabkan laman web tempatan tidak boleh diakses.
Konfigurasi Pakej Lain
Untuk pakej lain seperti Node.js, Python, Go, Java, Ruby, Rust, dsb., jika mempunyai fail konfigurasi global atau servis, ia disimpan dalam subdirektori sendiri di bawah etc, mengikut versi, sama seperti contoh di atas.
Direktori Data Dalaman ServBay (data/servbay)
/Applications/ServBay/data/servbay1
Direktori ini menyimpan fail konfigurasi penting, maklumat status serta tetapan pengguna yang diperlukan untuk operasi ServBay, panel kawalan, pengurusan pakej, laman web dan pangkalan data.
Penting: Pastikan lakukan sandaran direktori ini. Jangan padam atau ubah fail di sini secara manual kerana boleh menyebabkan ServBay gagal berfungsi atau kehilangan konfigurasi.
Direktori Fail Boleh Laksana dan Skrip (bin, sbin, script)
/Applications/ServBay/bin -> package/bin
/Applications/ServBay/sbin -> package/sbin
/Applications/ServBay/script1
2
3
2
3
Semua fail boleh laksana ServBay berada dalam bin dan sbin, yang merupakan symlink ke package/bin dan package/sbin. Di sinilah semua alat dan runtime pelbagai bahasa ServBay berada.
Anda boleh terus akses fail boleh laksana ini dalam terminal kerana ServBay menambah direktori ke PATH sistem (sewaktu ServBay dimulakan). Antara yang disediakan:
- Alat harian popular: seperti
curl,openssl,frpcdsb. - Runtime pelbagai versi bahasa: seperti
php(versi lalai),php-5.6,php-7.4,php-8.3,node(lalai),node-16,node-18,python3,go,java,ruby,rustcdsb. Gunakan arahan spesifik versi untuk memilih versi alat. - Klien pangkalan data: seperti
mysql,psql,mongosh,redis-clidan sebagainya.
Direktori script (/Applications/ServBay/script) mengandungi skrip pengurusan sistem dalaman ServBay, seperti memulakan/hentikan servis, inisialisasi pangkalan data, tugas penyelenggaraan, dan lain-lain. Meski anda boleh jalankan skrip terus, lebih baik gunakan tools baris perintah servbayctl yang membalut fungsi skrip ini dengan antaramuka yang lebih mudah.
Contoh untuk memulakan servis PHP 7.4 FPM:
bash
servbayctl start php 7.41
Alat servbayctl tersimpan di folder /Applications/ServBay/bin.
Direktori Fail Pangkalan Data (db)
/Applications/ServBay/db1
Direktori ini adalah tempat semua pangkalan data yang ServBay pasang menyimpan fail datanya, terbahagi mengikut jenis pakej dan versi:
/Applications/ServBay/db/mariadb/<major_version>: Fail data MariaDB./Applications/ServBay/db/mysql/<major_version>: Fail data MySQL./Applications/ServBay/db/postgresql/<major_version>: Fail data PostgreSQL./Applications/ServBay/db/mongodb: Fail data MongoDB./Applications/ServBay/db/redis: Fail data Redis.
Rekaan ServBay membolehkan setiap versi utama pangkalan data menggunakan satu direktori data. Sebagai contoh, semua MariaDB 11.2.x berkongsi folder /Applications/ServBay/db/mariadb/11.2.
Penting: Direktori ini mengandungi semua data pangkalan data tempatan anda. Sebelum sebarang operasi penting (naik taraf ServBay, migrasi sistem dsb.), pastikan sandaran lengkap /Applications/ServBay/db. Fungsi sandaran automatik ServBay juga akan memanfaatkan direktori ini.
Direktori Log (logs)
/Applications/ServBay/logs -> package/var/log1
Semua log servis dalam ServBay dikumpulkan dalam direktori /Applications/ServBay/logs, yang sebenarnya adalah symlink kepada /Applications/ServBay/package/var/log. Ini memudahkan pengawasan status servis dan diagnosis ralat.
Fail log diatur mengikut jenis servis, misalnya:
logs/caddy/ataulogs/nginx/: Log capaian dan ralat Caddy atau Nginx, biasanya disusun mengikut domain laman web.logs/php/: Log PHP-FPM (php-fpm.log) dan log ralat kod PHP (errors.log).errors.logmerekod kesalahan fatal PHP yang tidak sempat ditangani aplikasi atau kerangka kerja.logs/mariadb/,logs/mysql/,logs/postgresql/,logs/mongodb/,logs/redis/: Log ralat, log pertanyaan perlahan dan lain-lain untuk servis pangkalan data berkaitan.- Log servis lain: Python, Go, Java, Ruby, Rust dsb juga tersimpan dalam subdirektori masing-masing.
Perhatian: Fail log (terutamanya log capaian dan log ralat) boleh menjana ruang cakera yang besar terutama bagi projek aktif. Disyorkan supaya sentiasa periksa dan buang fail log yang tidak diperlukan untuk menjimatkan ruang cakera.
Direktori Pakej Perisian (package)
/Applications/ServBay/package1
Direktori ini menempatkan semua pakej perisian yang dipasang dan diurus oleh ServBay. Setiap pakej disusun mengikut subdirektori nama_pakej/versi_utama/versi_lengkap. Contohnya, PHP versi tertentu dipasang di /Applications/ServBay/package/php/8.3/8.3.7.
Panel kawalan ServBay membolehkan anda mudah memasang, nyahpasang dan bertukar versi pakej.
Untuk menjimatkan ruang bagi pakej versi lama yang tidak diperlukan selepas naik taraf, anda boleh padam sendiri folder versi lengkap misalnya /Applications/ServBay/package/php/8.2/8.2.10.
Penting: Untuk setiap folder versi utama (cth /Applications/ServBay/package/php/8.3), terdapat symlink bernama current yang merujuk ke versi minor terkini/aktif. Jangan padam atau ubah symlink current ini kerana ia digunakan untuk mengenal pasti fail boleh laksana atau perpustakaan pakej yang sedang berjalan.
Direktori Sijil SSL (ssl)
/Applications/ServBay/ssl1
Direktori ini menyimpan fail sijil berkaitan SSL/TLS, termasuk:
- Sijil SSL untuk laman tempatan yang dijana automatik secara ACME (biasanya di
ssl/caddyataussl/acmebergantung pada pelayan web digunakan). - Sijil root (ServBay User CA) dan sijil awam (ServBay Public CA) untuk pembangunan HTTPS tempatan. Biasanya di folder
ssl/privatedanssl/public. Selepas memasang sijil CA ini ke stor kepercayaan sistem, anda boleh akses laman tempatan HTTPS tanpa amaran keselamatan pelayar.
Direktori Backup (backup)
/Applications/ServBay/backup1
Direktori ini tempat penyimpanan automatik fungsi sandaran ServBay. Fungsi backup ServBay membolehkan anda sandarkan data pembangunan penting dan konfigurasi dengan mudah, termasuk:
backup/config: Sandaran fail konfigurasi teras dan konfigurasi pakej.backup/databases: Sandaran data pangkalan data (MariaDB, MySQL, PostgreSQL, MongoDB dan lain-lain).backup/ssl: Sandaran fail sijil SSL.backup/websites: Sandaran fail projek web dari/Applications/ServBay/www.
Disyorkan supaya sentiasa periksa direktori ini dan pindahkan fail sandaran ke peranti storan luaran bagi strategi pemulihan data yang lebih selamat.
Direktori Fail Sementara (tmp)
/Applications/ServBay/tmp1
Direktori ini menyimpan fail sementara yang dijana ketika servis berjalan, biasanya termasuk fail .pid dan fail socket.
- Fail
.pid: Untuk merekod PID (process ID) servis yang sedang berjalan. - Fail socket: Contohnya
php-cgi.sock,mysql.sock,pgsql.sock. Digunakan oleh program tempatan untuk memudahkan komunikasi antara php-fpm atau servis pangkalan data melalui Unix Domain Socket. Berbanding komunikasi TCP, penggunaan socket memberi prestasi lebih tinggi, kelancaran dan kependekan latensi untuk komunikasi dalam satu mesin.
Komponen Awam & Perpustakaan Pembangunan (package/common)
/Applications/ServBay/package/common1
Direktori ini menyimpan komponen awam dan perpustakaan (seperti *.dylib) yang diperlukan bagi semua pakej ServBay, serta perpustakaan pembangunan pilihan.
Jika anda memasang ServBay Development Library (pakej pilihan untuk keperluan kompilasi), anda akan dapati folder include untuk fail header dan lib untuk fail perpustakaan statik *.a dan *.la. Penting untuk keperluan kompilasi lanjutan PHP atau aplikasi lain yang bergantung pada perpustakaan dalaman ServBay.
Penting: Jangan padam fail *.dylib di package/common/lib kerana ia adalah perpustakaan asas untuk operasi lancar pakej ServBay. Ketiadaannya akan menyebabkan aplikasi gagal akibat kehilangan kebergantungan.
Rumusan
Struktur direktori ServBay membahagikan dengan jelas lokasi pakej perisian, konfigurasi, data, log dan fail laman web, berteraskan amalan standard sistem fail Unix. Ini memudahkan pembangun mengurus persekitaran pembangunan tempatan dengan lebih intuitif. Penguasaan fungsi setiap direktori penting akan melonjakkan produktiviti dan kemudahan pembangunan Web anda menggunakan ServBay. Sentiasa buat sandaran direktori kritikal, khususnya data dan db, sebagai langkah perlindungan kerja pembangunan anda daripada sebarang kehilangan data.
