การย้ายเว็บไซต์ NGINX ไปยังเซิร์ฟเวอร์ Caddy ของ ServBay
ServBay คือสภาพแวดล้อมพัฒนาเว็บแบบ Local ที่ทรงพลัง ซึ่งรวมเว็บเซิร์ฟเวอร์ยอดนิยมหลายตัว ได้แก่ Caddy, NGINX และ Apache มาให้ใช้งานในตัว ServBay ได้เตรียม กติกา URL Rewrite ที่ใช้บ่อย สำหรับเซิร์ฟเวอร์เหล่านี้โดยเฉพาะ (โดยเฉพาะกับ Caddy และ NGINX) ช่วยลดภาระงานของนักพัฒนาในการติดตั้งและตั้งค่าได้มาก
เอกสารฉบับนี้จะเป็นคู่มือแบบละเอียด อธิบายวิธีการย้ายเว็บไซต์ NGINX ที่คุณมีอยู่ให้ทำงานร่วมกับ Caddy Web Server ที่ติดตั้งมากับ ServBay ได้อย่างราบรื่น โดยจะขอยกตัวอย่างจากเฟรมเวิร์ก PHP ชื่อดัง Laravel และระบบ CMS อย่าง WordPress เพื่อแสดงให้เห็นถึงขั้นตอนในกระบวนการย้ายเว็บ
การสนับสนุนเว็บเซิร์ฟเวอร์อย่างเต็มรูปแบบของ ServBay
ServBay รองรับเว็บเซิร์ฟเวอร์ทั้ง Caddy, NGINX และ Apache คุณสามารถสลับการใช้งานเว็บเซิร์ฟเวอร์เริ่มต้นได้อย่างยืดหยุ่นตามความต้องการของโปรเจกต์ กรุณาศึกษา วิธีการเปลี่ยนเว็บเซิร์ฟเวอร์เริ่มต้น สำหรับรายละเอียดเพิ่มเติม
ภาพรวม
การย้ายเว็บไซต์จากเว็บเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่ง โดยทั่วไปจะเกี่ยวข้องกับการย้ายไฟล์คอนฟิกและไฟล์เว็บไซต์ ใน ServBay กระบวนการย้ายเว็บมายัง Caddy ถูกออกแบบให้เรียบง่ายมาก สำหรับเฟรมเวิร์กและ CMS ที่รันบน PHP ส่วนใหญ่ (เช่น Laravel, WordPress, Symfony, CodeIgniter, Drupal, Joomla ฯลฯ) ServBay มีการตั้งค่าที่พร้อมใช้งานทันที โดย ไม่จำเป็นต้องเขียนหรือแก้ไขไฟล์คอนฟิก Caddy ด้วยตนเอง ServBay จะสร้างไฟล์ Caddyfile ให้อัตโนมัติตามการตั้งค่าเว็บไซต์ใน GUI
เตรียมตัวก่อนย้าย
ก่อนเริ่มดำเนินการย้ายเว็บใดๆ กรุณาทำสิ่งต่อไปนี้ให้ครบถ้วน:
- สำรองไฟล์เว็บไซต์: ให้สำรองไฟล์และโฟลเดอร์ทั้งหมดในโฟลเดอร์รากของเว็บไซต์คุณให้เรียบร้อย
- สำรองฐานข้อมูล: สำรองฐานข้อมูลที่เว็บไซต์ใช้งาน (เช่น MySQL, PostgreSQL, MongoDB ฯลฯ) โดย ServBay มีเครื่องมือจัดการฐานข้อมูลในตัว และยังรองรับการสำรองด้วยตนเอง
- ติดตั้ง ServBay: ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งและเปิดใช้งาน ServBay บน macOS แล้ว
- ตรวจสอบตำแหน่งไฟล์เว็บ: ให้นำไฟล์เว็บไซต์ของคุณไปวางที่โฟลเดอร์รากเริ่มต้นของเว็บไซต์ใน ServBay (
/Applications/ServBay/www
) หรือโฟลเดอร์ย่อยของมัน เช่น หากโปรเจกต์คุณชื่อmyproject
ให้วางไว้ที่/Applications/ServBay/www/myproject
วิธีการทำงานของ Caddy ใน ServBay
การเข้าใจวิธีที่ ServBay จัดการคอนฟิกของ Caddy เป็นเรื่องสำคัญสำหรับการย้ายเว็บ ไม่เหมือนกับการเขียน Caddyfile ด้วยตนเอง ServBay ให้คุณเพิ่มและตั้งค่าเว็บไซต์ผ่านหน้าจอ GUI เมื่อคุณเพิ่มเว็บไซต์และเลือกให้ใช้ Caddy เป็นเว็บเซิร์ฟเวอร์ ServBay จะ สร้างและจัดการไฟล์คอนฟิกย่อยของ Caddyfile ให้โดยอัตโนมัติ จากข้อมูลโดเมน โฟลเดอร์รากเว็บไซต์ เวอร์ชัน PHP ฯลฯ ที่คุณกำหนด ไฟล์คอนฟิกย่อยเหล่านี้จะถูกรวมเข้าไปใน Caddyfile หลักของ ServBay และทำให้เว็บไซต์สามารถทำงานได้ทันที
กล่าวคือ เมื่อตั้งค่าเว็บไซต์ผ่าน GUI ของ ServBay เรียบร้อยแล้ว คุณไม่จำเป็นต้องแก้ไข .caddyfile
หรือไฟล์คอนฟิกใดๆ ด้วยตนเองอีก
ขั้นตอนการย้ายเว็บไซต์
การย้ายเว็บไซต์ NGINX ไปยังเซิร์ฟเวอร์ Caddy บน ServBay ทำได้อย่างตรงไปตรงมา:
- เปิดใช้งาน ServBay: ตรวจสอบว่าแอปพลิเคชัน ServBay กำลังรันอยู่
- นำไฟล์เว็บไซต์ไปยังตำแหน่งที่ต้องการ: ให้นำไฟล์เว็บไซต์ NGINX ทั้งหมด (รวมโค้ด รูปภาพ CSS JS ฯลฯ) ไปไว้ในโฟลเดอร์ใหม่ภายใต้เว็บไซต์รากของ ServBay เช่น
/Applications/ServBay/www/your-site-name
- เพิ่มเว็บไซต์ผ่าน GUI ของ ServBay:
- เปิดแอปพลิเคชัน ServBay
- ไปที่หมวด “เว็บไซต์” (Websites)
- คลิกปุ่ม “เพิ่มเว็บไซต์”
- กรอกข้อมูลเว็บไซต์:
- โดเมน (Domain): ใส่ชื่อโดเมนที่ต้องการใช้สำหรับเข้าถึงเว็บไซต์ในเครื่อง เช่น
your-site-name.servbay.demo
- โฟลเดอร์รากเว็บไซต์ (Website Root): เลือกโฟลเดอร์ที่คุณนำไฟล์เว็บไซต์ไปวางไว้ในข้อ 2 เช่น
/Applications/ServBay/www/your-site-name
- เว็บเซิร์ฟเวอร์ (Web Server): เลือก
Caddy
- เวอร์ชัน PHP (PHP Version): เลือกเวอร์ชัน PHP ที่โปรเจกต์ของคุณใช้
- โดเมน (Domain): ใส่ชื่อโดเมนที่ต้องการใช้สำหรับเข้าถึงเว็บไซต์ในเครื่อง เช่น
- คลิก “บันทึก” หรือ “สร้าง”
- ทดสอบเว็บไซต์: ServBay จะเพิ่มโดเมนใหม่ในไฟล์ hosts ของเครื่องคุณและตั้งค่าคอนฟิก Caddy ให้อัตโนมัติ ให้เปิดเว็บเบราว์เซอร์แล้วเข้าดูโดเมนที่คุณตั้งไว้ (เช่น
http://your-site-name.servbay.demo
) เพื่อตรวจสอบว่าเว็บโหลดได้ตามปกติหรือไม่ - ตั้งค่าฐานข้อมูล: หากเว็บไซต์คุณใช้งานฐานข้อมูล ให้ตรวจสอบว่าได้เปิดใช้บริการฐานข้อมูลที่เกี่ยวข้อง (เช่น MySQL, PostgreSQL) ใน ServBay แล้ว จากนั้น อัปเดตไฟล์คอนฟิกของเว็บไซต์โดยกรอกค่าการเชื่อมต่อฐานข้อมูลใหม่ (เช่น ชี้ไปที่
127.0.0.1
หรือlocalhost
พร้อมด้วย user/password ที่กำหนด)
ตัวอย่าง: การย้ายเว็บไซต์ Laravel
ตัวอย่างการตั้งค่า NGINX (สำหรับอ้างอิง)
นี่คือตัวอย่างไฟล์คอนฟิก NGINX สำหรับเว็บ Laravel ที่แสดงให้เห็นว่ากำหนดรากเว็บไซต์, ไฟล์เริ่มต้น (index.php
) และการจัดการ FastCGI ของ PHP อย่างไร:
nginx
server {
listen 80;
server_name laravel.servbay.demo; # ตัวอย่างโดเมนภายใต้แบรนด์ ServBay
root /Applications/ServBay/www/laravel/public; # ชี้ไปยัง public ของ Laravel
index index.php index.html index.htm;
location / {
# พยายามเข้าถึงไฟล์หรือโฟลเดอร์โดยตรง ถ้าไม่มีให้ rewrite ไป index.php
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
# ตั้งค่า FastCGI สำหรับ PHP
include fastcgi_params;
# path ของ PHP-CGI socket ที่ ServBay ตั้งไว้
fastcgi_pass unix:/Applications/ServBay/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
# ป้องกันการเข้าถึงไฟล์ที่ซ่อนอยู่
deny all;
}
}
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ตัวอย่างคอนฟิก Caddy ที่เกี่ยวข้องใน ServBay (สร้างให้อัตโนมัติ ไม่ต้องเขียนเอง)
ไม่จำเป็นต้องคอนฟิก Caddyfile เอง
ใน ServBay คุณไม่จำเป็นต้องสร้างหรือแก้ไข Caddyfile เองสำหรับสิ่งที่กล่าวถึงข้างต้น GUI ของ ServBay จะสร้างคอนฟิกให้อัตโนมัติตามการตั้งค่าเว็บไซต์ ตัวอย่างด้านล่างนี้มีไว้เพื่ออธิบายระบบการสร้างคอนฟิกของ ServBay ให้เห็นภาพเท่านั้น
ตัวอย่างนี้คือชิ้นส่วนคอนฟิก Caddy ที่ ServBay จะสร้างให้อัตโนมัติสำหรับเว็บ Laravel (เป็นเวอร์ชันย่อ อาจมีรายละเอียดมากกว่านี้ในของจริง):
bash
# คอนฟิกนี้ถูก ServBay จัดการให้อัตโนมัติ
laravel.servbay.demo {
# ตั้งค่ารากเว็บไซต์
root * /Applications/ServBay/www/laravel/public
# กำหนด PHP FastCGI และ socket ของ ServBay
php_fastcgi unix//Applications/ServBay/tmp/php-cgi.sock
# ให้บริการไฟล์ปกติ
file_server
# สร้าง matcher สำหรับไฟล์ที่ไม่ใช่ static
@notStatic {
not {
file {
try_files {path} {path}/ /index.php?{query}
}
}
}
# rewrite ไฟล์ที่ไม่ใช่ static ไป index.php
rewrite @notStatic /index.php
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ขั้นตอนการย้าย Laravel สรุป:
- คัดลอกไฟล์ Laravel ของคุณไปที่
/Applications/ServBay/www/laravel
- ตรวจสอบว่าโฟลเดอร์
laravel/public
เป็นจุดเริ่มต้นของเว็บ - เพิ่มเว็บไซต์ใหม่ใน GUI ของ ServBay: โดเมนใช้
laravel.servbay.demo
รากเว็บที่/Applications/ServBay/www/laravel/public
และเลือกใช้ Caddy เซิร์ฟเวอร์ - ตั้งค่าการเชื่อมต่อฐานข้อมูลในไฟล์
.env
ของ Laravel ให้ถูกต้อง - เข้าทดสอบที่
http://laravel.servbay.demo
ตัวอย่าง: การย้ายเว็บไซต์ WordPress
ตัวอย่างการตั้งค่า NGINX (สำหรับอ้างอิง)
นี่คือตัวอย่างไฟล์คอนฟิก NGINX สำหรับเว็บไซต์ WordPress:
nginx
server {
listen 80;
server_name wordpress.servbay.demo; # ตัวอย่างโดเมนภายใต้แบรนด์ ServBay
root /Applications/ServBay/www/wordpress; # ตำแหน่งที่ติดตั้ง WordPress
index index.php index.html index.htm;
location / {
# กติกาสำหรับ Pretty Permalink ของ WordPress
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
# ตั้งค่า FastCGI สำหรับ PHP
include fastcgi_params;
# path ของ PHP-CGI socket ที่ ServBay ตั้งไว้
fastcgi_pass unix:/Applications/ServBay/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
# ป้องกันเข้าถึงไฟล์ .ht*
deny all;
}
}
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ตัวอย่างคอนฟิก Caddy ที่เกี่ยวข้องใน ServBay (สร้างให้อัตโนมัติ ไม่ต้องเขียนเอง)
ไม่จำเป็นต้องคอนฟิก Caddyfile เอง
เช่นเดียวกับ WordPress GUI ของ ServBay จะดูแลการสร้างคอนฟิก Caddy ให้อัตโนมัติ ตัวอย่างด้านล่างมีไว้เพื่อให้เข้าใจกลไกเบื้องใน เช่นการรองรับ Permalink ของ WordPress
ตัวอย่างชิ้นส่วนคอนฟิกที่ ServBay จะสร้างให้อัตโนมัติสำหรับเว็บ WordPress:
bash
# คอนฟิกนี้ถูก ServBay จัดการให้อัตโนมัติ
wordpress.servbay.demo {
# ตั้งค่ารากเว็บไซต์
root * /Applications/ServBay/www/wordpress
# ตั้งค่า PHP FastCGI
php_fastcgi unix//Applications/ServBay/tmp/php-cgi.sock
# ให้บริการไฟล์ปกติ
file_server
# สร้าง matcher สำหรับไฟล์ที่ไม่ใช่ static
@notStatic {
not {
file {
try_files {path} {path}/ /index.php?{query}
}
}
}
# rewrite ไฟล์ที่ไม่ใช่ static ไป index.php (เพื่อ Permalink)
rewrite @notStatic /index.php
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ขั้นตอนการย้าย WordPress สรุป:
- คัดลอกไฟล์ WordPress ของคุณไปที่
/Applications/ServBay/www/wordpress
- เพิ่มเว็บไซต์ใหม่ผ่าน GUI ของ ServBay: โดเมน
wordpress.servbay.demo
รากเว็บที่/Applications/ServBay/www/wordpress
เซิร์ฟเวอร์เลือกCaddy
- กำหนดข้อมูลการเชื่อมต่อฐานข้อมูลในไฟล์
wp-config.php
ของ WordPress ให้ถูกต้อง - เข้าเว็บที่
http://wordpress.servbay.demo
เพื่อตรวจสอบ หากพบปัญหา Pretty Permalink โดยทั่วไปแล้ว ServBay ได้จัดการ Rewrite Rule ให้อัตโนมัติอยู่แล้ว ไม่ต้องตั้งค่าเพิ่ม ตรวจสอบการตั้งค่า Permalink ในหลังบ้าน WordPress ด้วย
ข้อควรระวัง
- การเชื่อมต่อฐานข้อมูล: หลังย้ายเว็บแล้ว ต้องแก้ไขข้อมูลการเชื่อมต่อฐานข้อมูลในโค้ดเว็บไซต์ให้ถูกต้องและชี้ไปยังบริการฐานข้อมูลที่รันใน ServBay
- Environment Variable: หากแอปพลิเคชันของคุณอาศัย Environment Variable เฉพาะ ต้องตรวจสอบให้แน่ใจว่าได้ตั้งค่าตัวแปรเหล่านั้นในสภาพแวดล้อมของ ServBay (ผ่านไฟล์
.env
ของ PHP หรือวิธีการตั้งค่าของ ServBay) - NGINX Config ซับซ้อน: ตัวอย่างในเอกสารนี้เน้นกรณีใช้งาน Laravel กับ WordPress ซึ่งเป็นคอนฟิกมาตรฐาน หากคอนฟิก NGINX ของคุณมีความซับซ้อนเช่นมี custom rule, โมดูลเฉพาะ หรือการตั้งค่าที่ต่างจากมาตรฐาน อาจทำให้ระบบอัตโนมัติของ ServBay ไม่รองรับโดยตรง คุณอาจต้องศึกษาคู่มือ Caddy และใช้ช่องทางขยายคอนฟิก หรือเรียนรู้หลักการสร้างไฟล์อัตโนมัติของ ServBay เพื่อนำมาแก้ไขตามความเหมาะสม แต่สำหรับเคสส่วนใหญ่ ระบบอัตโนมัติของ ServBay เพียงพอแล้ว
- HTTPS/SSL: ServBay รองรับการตั้งค่า HTTPS สำหรับเว็บไซต์ในเครื่อง คุณสามารถใช้ ServBay User CA หรือ ServBay Public CA เพื่อออกและเชื่อถือใบรับรอง SSL ได้ในเครื่อง โดยไม่ต้องตั้งค่า TLS ของ Caddy ด้วยตนเอง
สรุป
การย้ายเว็บไซต์ NGINX ไปยังเซิร์ฟเวอร์ Caddy ของ ServBay เป็นกระบวนการที่ถูกออกแบบมาให้ง่ายและสะดวก เพราะ ServBay จัดการคอนฟิกของ Caddy ให้อัตโนมัติ เพียงแค่คัดลอกไฟล์เว็บไซต์ไปไว้ในโฟลเดอร์ที่ถูกต้อง และสร้างเว็บไซต์ผ่าน GUI เท่านั้น สำหรับ Laravel, WordPress และแอปยอดนิยมอื่นๆ ServBay จะตั้งค่า URL rewrite และ PHP FastCGI ให้โดยอัตโนมัติ ช่วยให้คุณเปิดรันเว็บไซต์ด้วย Caddy ได้อย่างรวดเร็วในเครื่องของตนเอง