การเพิ่มเว็บไซต์ด้วยการตั้งค่ากำหนดเอง
ServBay มอบทางเลือกที่ยืดหยุ่นในการเพิ่มเว็บไซต์ นอกเหนือจากโหมดมาตรฐานที่ ServBay จัดการคอนฟิกให้อัตโนมัติแล้ว ยังรองรับโหมด "การตั้งค่ากำหนดเอง" (Custom Configuration) ด้วย โหมดนี้ช่วยให้นักพัฒนาสามารถแก้ไขและจัดการไฟล์คอนฟิกของเว็บเซิร์ฟเวอร์ (Nginx, Caddy, Apache) สำหรับแต่ละเว็บไซต์ได้โดยตรง ให้คุณควบคุมได้สูงสุด เหมาะอย่างยิ่งสำหรับการปรับแต่งอย่างละเอียด การตั้งค่าที่ไม่เป็นมาตรฐาน หรือการใช้งานฟีเจอร์ขั้นสูง
ความสำคัญของการตั้งค่ากำหนดเอง
เลือกใช้การตั้งค่ากำหนดเองมีความหมายว่า:
- ควบคุมได้เต็มที่: คุณสามารถแก้ไขส่วนคอนฟิกเซิร์ฟเวอร์ของเว็บไซต์นั้น ๆ ได้โดยตรง (เช่น บล็อก
server
ของ Nginx, บล็อกVirtualHost
ของ Apache หรือการกำหนดเว็บไซต์ใน Caddyfile) - ฟีเจอร์ขั้นสูง: สามารถตั้งค่าฟีเจอร์ซับซ้อนที่โหมดปกติไม่รองรับได้ง่าย เช่น การเขียนกฎ Rewrite ที่ซับซ้อน, ตั้งค่า Proxy เฉพาะ, รูปแบบ Log แบบพิเศษ, หรือส่วนเฮดเดอร์ด้านความปลอดภัย
- รองรับสถานการณ์พิเศษ: เหมาะกับการจำลองสภาพแวดล้อมการผลิต, การบูรณาการโมดูลเฉพาะ หรือดีบักแบบเจาะลึก
ทั้งนี้จะต้องรับผิดชอบในความถูกต้องและความปลอดภัยของไฟล์คอนฟิกด้วยตนเอง รวมถึงการจัดการใบรับรอง SSL
ขั้นตอนการเพิ่มเว็บไซต์ด้วยการตั้งค่ากำหนดเอง
- ไปที่เมนูเว็บไซต์: คลิกที่
Websites
ทางแถบเมนูซ้ายใน ServBay - เพิ่มเว็บไซต์ใหม่: คลิกที่ปุ่ม
+
(เครื่องหมายบวก) ด้านบนของรายชื่อเว็บไซต์ - กรอกข้อมูลพื้นฐาน:
- Name: ตั้งชื่อเว็บไซต์ที่จำง่าย (เช่น
My Custom Project
) - Domain: ระบุโดเมนที่ต้องการใช้ในเครื่อง (เช่น
myproject.servbay.demo
)
- Name: ตั้งชื่อเว็บไซต์ที่จำง่าย (เช่น
- เลือก Web Server: จากเมนู
Web Server
เลือกเซิร์ฟเวอร์ที่ต้องการใช้ (Nginx, Caddy หรือ Apache) ขั้นตอนนี้สำคัญมาก เพราะจะกำหนดเทมเพลตคอนฟิกที่จะให้และซอฟต์แวร์เซิร์ฟเวอร์ที่จะให้บริการเว็บไซต์นี้ - เปิดใช้งานการตั้งค่ากำหนดเอง: ติ๊กเลือกที่กล่อง
Custom Configuration
- ดูและแก้ไขเทมเพลต: เมื่อเลือกแล้ว จะมีพื้นที่ข้อความปรากฏขึ้นพร้อมเทมเพลตคอนฟิกมาตรฐานสำหรับเว็บเซิร์ฟเวอร์ที่คุณเลือก คุณสามารถปรับแก้ไขได้ตามต้องการ (และมักจำเป็นต้องปรับแก้)
ทำความเข้าใจและปรับแต่งเทมเพลตคอนฟิก
ServBay จะให้เทมเพลตคอนฟิกที่แตกต่างกันตามเว็บเซิร์ฟเวอร์ (Nginx, Caddy, Apache) ที่คุณเลือก จำเป็นต้องแก้ไขให้ตรงกับความต้องการของโปรเจ็กต์
1. การตั้งค่ากำหนดเอง Nginx
ถ้าเลือก Nginx จะได้เทมเพลตบล็อก server
เป็นฐาน
โครงสร้างเทมเพลตและคำสั่งสำคัญ:
nginx
# กำหนดพอร์ตและโปรโตคอลที่ฟัง
listen 443 ssl; # HTTPS
# โดเมนที่ผูกกับเซิร์ฟเวอร์นี้
server_name myproject.servbay.demo;
# รากเว็บไซต์ (ควรตรวจสอบว่าไดเร็กทอรีนี้มีอยู่จริง)
root /Applications/ServBay/www/myproject.servbay.demo;
# ไฟล์ index เริ่มต้น
index index.php index.html index.htm;
# โปรโตคอล SSL/TLS และชุดค่าสำหรับการเข้ารหัส (ตัวอย่าง)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:ServBay:10m;
ssl_session_tickets off;
# เส้นทางไฟล์ SSL Certificate (ถ้าเปิด HTTPS ต้องระบุเอง)
# 【สำคัญ】โปรดตรวจสอบให้แน่ใจว่าไฟล์ใบรับรองอยู่จริงและเส้นทางถูกต้อง
ssl_certificate /Applications/ServBay/ssl/private/tls-certs/myproject.servbay.demo/myproject.servbay.demo.crt;
ssl_certificate_key /Applications/ServBay/ssl/private/tls-certs/myproject.servbay.demo/myproject.servbay.demo.key;
# จัดการกับคำขอ PHP (ตัวอย่างสำหรับ PHP 8.3 ปรับตามที่ตั้งค่าจริง)
set $php_version '8.3';
include enable-php-fpm-pathinfo.conf;
# ตั้งค่าอื่น ๆ เช่น location block, rewrite rule
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# เส้นทาง log การเข้าถึงและ error log (ตัวเลือก)
# access_log /Applications/ServBay/logs/nginx/myproject.servbay.demo-access.log;
# error_log /Applications/ServBay/logs/nginx/myproject.servbay.demo-error.log;
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
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
ข้อควรปรับแก้:
- ตรวจสอบว่า
server_name
ตรงกับโดเมนของคุณ - ตั้งค่า
root
ให้ชี้ไปที่ไฟล์ของโปรเจ็กต์อย่างถูกต้อง - หากต้องการใช้ HTTPS ให้ยกเลิกการคอมเมนต์หรือเพิ่ม
listen 443 ssl;
และจำเป็นต้องกำหนดเส้นทางssl_certificate
และssl_certificate_key
ให้ถูกต้อง - เพิ่ม block location, rewrite rule และ proxy ตามความเหมาะสม
2. การตั้งค่ากำหนดเอง Caddy
ถ้าเลือก Caddy จะได้เทมเพลตแบบ Caddyfile สำหรับนิยามเว็บไซต์
โครงสร้างเทมเพลตและคำสั่งสำคัญ:
nginx
encode zstd gzip
import set-log myproject.servbay.demo # กำหนดชื่อ log
import canonical-path
# รากเว็บไซต์ (ควรตรวจสอบว่าไดเร็กทอรีนี้มีอยู่จริง)
root * /Applications/ServBay/www/myproject.servbay.demo
# การจัดการคำขอ PHP
route {
import php-rewrite-default 8.3 # PHP เวอร์ชัน 8.3
}
# การตั้งค่า TLS/SSL
# กรุณาระบุเส้นทางใบรับรอง
# tls /Applications/ServBay/ssl/private/tls-certs/myproject.servbay.demo/myproject.servbay.demo.crt /Applications/ServBay/ssl/private/tls-certs/myproject.servbay.demo/myproject.servbay.demo.key
# เปิดใช้งาน file_server
file_server
# คำสั่งเพิ่มเติม เช่น reverse_proxy, rewrite, header ฯลฯ
# ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ข้อควรปรับแก้:
- ยืนยันว่าใช้โดเมนระดับบนสุด
myproject.servbay.demo
ถูกต้อง - ตั้งค่าคำสั่ง
root
ให้ถูกต้อง - SSL/TLS: โดยปกติ Caddy จะพยายามจัดการใบรับรอง HTTPS ให้อัตโนมัติ แต่สำหรับโดเมนเครื่องเช่น
.servbay.demo
จะใช้งานอัตโนมัติไม่ได้แนะนำให้ระบุtls
พร้อมเส้นทางไฟล์ใบรับรอง SSL ที่คุณมีไว้เอง โปรดตรวจสอบว่าไฟล์จริงและเส้นทางถูกต้อง - เพิ่มคำสั่ง Caddy อื่น ๆ ตามความจำเป็น
3. การตั้งค่ากำหนดเอง Apache
ถ้าเลือก Apache จะได้โค้ดเทมเพลตบล็อก <VirtualHost>
โครงสร้างเทมเพลตและคำสั่งสำคัญ:
apache
ServerName myproject.servbay.demo
DocumentRoot "/Applications/ServBay/www/myproject.servbay.demo"
# เปิดใช้งาน SSL
SSLEngine on
# ตำแหน่ง SSL Certificate
# 【สำคัญ】โปรดตรวจสอบให้แน่ใจว่าไฟล์ใบรับรองอยู่จริงและเส้นทางถูกต้อง
SSLCertificateFile "/Applications/ServBay/ssl/private/tls-certs/myproject.servbay.demo/myproject.servbay.demo.crt"
SSLCertificateKeyFile "/Applications/ServBay/ssl/private/tls-certs/myproject.servbay.demo/myproject.servbay.demo.key"
# กำหนดสิทธิ์โฟลเดอร์
<Directory "/Applications/ServBay/www/myproject.servbay.demo">
DirectoryIndex index.php index.html index.htm
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# คอนฟิก PHP-FPM (PHP 8.3)
Define PHP_VERSION 8.3
<FilesMatch \.php$>
SetHandler "proxy:unix:/Applications/ServBay/tmp/php-cgi-${PHP_VERSION}.sock|fcgi://localhost"
</FilesMatch>
# error log และ access log (ตัวเลือก)
ErrorLog "/Applications/ServBay/logs/apache/myproject.servbay.demo-ssl-error_log"
CustomLog "/Applications/ServBay/logs/apache/myproject.servbay.demo-ssl-access_log" common
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
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
ข้อควรปรับแก้:
- ตรวจสอบว่า
ServerName
ตรงกับโดเมนของคุณ - ตั้งค่า
DocumentRoot
ให้ตรงกับตำแหน่งโปรเจ็กต์ - ตั้งค่าสิทธิ์ใน
<Directory>
ให้เหมาะกับความต้องการ - เพิ่มคำสั่ง Apache อื่น ๆ ตามจำเป็น เช่น
RewriteEngine
,ProxyPass
ฯลฯ
การจัดการ SSL Certificate 【สำคัญ】
เมื่อใช้การตั้งค่ากำหนดเอง ServBay จะไม่ สร้าง SSL certificate ใด ๆ ให้โดยอัตโนมัติ (เช่น ไม่สร้าง ServBay CA certificate หรือขอ Let's Encrypt ให้)
- คุณต้องจัดหา/สร้าง SSL certificate เอง และวางไว้ในเส้นทางที่เซิร์ฟเวอร์เข้าถึงได้
- สามารถใช้ OpenSSL สร้าง self-signed certificate เอง หรือใช้ CA ของ ServBay (ServBay User CA หรือ ServBay Public CA) เพื่อเซ็นใบรับรองทดสอบในการพัฒนา
- ในการตั้งค่ากำหนดเองของ Nginx, Caddy หรือ Apache จำเป็นต้องระบุ
ssl_certificate
/ssl_certificate_key
(Nginx),tls
(Caddy), หรือSSLCertificateFile
/SSLCertificateKeyFile
(Apache) ให้ถูกต้องและชี้ไปยังไฟล์ - หากระบุคำสั่ง SSL ในไฟล์คอนฟิก แต่ไม่มีไฟล์ certificate หรือเส้นทางผิด เว็บเซิร์ฟเวอร์จะไม่สามารถเริ่มต้นหรือโหลดเว็บไซต์ได้ ซึ่งจะนำไปสู่เว็บไซต์ไม่สามารถเข้าถึงได้ และอาจเห็นแจ้งเตือนข้อผิดพลาดใน ServBay หรือ log ของเซิร์ฟเวอร์
โปรดดูเอกสารของ ServBay เรื่อง การจัดการ SSL Certificate สำหรับรายละเอียดวิธีสร้างและจัดการ certificate สำหรับพัฒนา
การผูกกับ Web Server
DANGER
จุดสำคัญอีกประการ เมื่อคุณเลือกใช้เว็บเซิร์ฟเวอร์ใด (เช่น Nginx) แล้วกดบันทึกด้วยคอนฟิกกำหนดเอง เว็บไซต์นี้จะผูกกับซอฟต์แวร์ Nginx โดยสมบูรณ์
- นั่นคือเว็บไซต์นี้จะสามารถเข้าถึงได้ เฉพาะเมื่อ Web Server ปัจจุบันที่ทำงานใน ServBay เป็นซอฟต์แวร์ Nginx เท่านั้น
- หากเปลี่ยนจาก Nginx ไป Apache หรือ Caddy ใน ServBay (
Services
-Default Web Server
) เว็บไซต์นี้จะถูกปิดการใช้งานชั่วคราวเนื่องจากคอนฟิก Nginx จะไม่ถูกโหลด - เช่นเดียวกัน หากใช้คอนฟิกกำหนดเองของ Caddy หรือ Apache เว็บไซต์จะทำงานได้เฉพาะเมื่อรันซอฟต์แวร์นั้นอยู่เท่านั้น
การบันทึกและใช้งานจริง
เมื่อแก้ไขคอนฟิกเสร็จ ให้คลิก Save
ที่มุมล่างขวา ServBay จะบันทึกคอนฟิกที่คุณปรับและพยายามรีโหลด Web Server ที่เกี่ยวข้องให้การเปลี่ยนแปลงมีผล หากมีข้อผิดพลาด เช่น ไวยากรณ์ผิด, การบันทึกหรือรีโหลดอาจล้มเหลว ให้เช็คการแจ้งเตือนของ ServBay หรือดู error log (ปกติอยู่ใต้ /Applications/ServBay/logs/
ในโฟลเดอร์ที่เกี่ยวข้อง)
สรุป
การเพิ่มเว็บไซต์ด้วยการตั้งค่ากำหนดเองใน ServBay ช่วยเพิ่มความยืดหยุ่นอย่างมาก ช่วยให้นักพัฒนาควบคุมพฤติกรรมของเว็บเซิร์ฟเวอร์แต่ละไซต์อย่างละเอียด แต่จําเป็นต้องมีความรู้เกี่ยวกับการตั้งค่า Web Server และต้องรับผิดชอบเรื่องความถูกต้อง ความปลอดภัย และการจัดการ SSL Certificate การเข้าใจโครงสร้างเทมเพลต ความต้องการ SSL และกลไกการผูกกับ Web Server เป็นกุญแจสำคัญในการใช้งานฟีเจอร์นี้ให้ประสบผลสำเร็จ