ภาคผนวก · บทที่ 24
การนำระบบขึ้นเซิร์ฟเวอร์จริง
สรุปขั้นตอนย้ายระบบจากเครื่องพัฒนาขึ้นเซิร์ฟเวอร์ Production การตั้งค่าความปลอดภัย โปรแกรมอ่านบัตร และการสำรองข้อมูล
ใครใช้ได้
ผู้ดูแลเซิร์ฟเวอร์ / ผู้พัฒนา — รายละเอียดคำสั่งทั้งหมดอยู่ในไฟล์ DEPLOY.md ในโฟลเดอร์ระบบ
ความต้องการของเซิร์ฟเวอร์
| รายการ | ขั้นต่ำ | แนะนำ |
|---|---|---|
| PHP | 8.1 | 8.4 |
| Extensions | pdo_mysql, mbstring, openssl, json, fileinfo | + gd, curl, intl, zip |
| ฐานข้อมูล | MySQL 5.7 / MariaDB 10.4 | MySQL 8 / MariaDB 10.6+ |
| เว็บเซิร์ฟเวอร์ | Apache + mod_rewrite | Apache (มี .htaccess ให้แล้ว) หรือ Nginx + PHP-FPM |
| HTTPS | — | จำเป็น (โปรแกรมอ่านบัตรและ cookie แบบ Secure ต้องใช้) |
ระบบหลักและระบบย่อยทั้ง 10 ใช้ ฐานข้อมูลเดียว (moobaan_license) การย้ายเครื่องจึงย้ายฐานข้อมูลเพียงฐานเดียว
ขั้นตอนโดยสรุป
- Dump ฐานข้อมูล บนเครื่องพัฒนา:
tools/deploy/dump-db.shและจดค่าencryption_key+hmac_keyจากconfig/auth.php - อัปโหลดโค้ด (ไม่ต้องนำ
node_modules,.git, ไฟล์*.local.phpและไฟล์ dump ขึ้นไป) - สร้างฐานข้อมูลและผู้ใช้ บนเซิร์ฟเวอร์ (utf8mb4) แล้วนำเข้าไฟล์ dump
- ตั้งค่า — คัดลอก
config/database.local.php.exampleและconfig/auth.local.php.exampleแล้วแก้ค่า- ฐานข้อมูล: host / user / password ของเซิร์ฟเวอร์
- คีย์เข้ารหัส: ต้องใช้
encryption_keyและhmac_keyชุดเดิม มิฉะนั้นเลขบัตรประชาชนที่เข้ารหัสไว้จะถอดไม่ได้ - URL:
php tools/deploy/set-prod-urls.php https://moobaan.example.com(ตั้ง URL ระบบหลัก+ระบบย่อย และปิด debug)
- สิทธิ์ไฟล์ — ให้เว็บเซิร์ฟเวอร์เขียน
storage/และmedia/ได้ - เว็บเซิร์ฟเวอร์ — เปิด mod_rewrite +
AllowOverride All(Apache) หรือใช้tools/deploy/nginx.conf.example - HTTPS — ออกใบรับรองด้วย Let's Encrypt (
certbot --apacheหรือ--nginx) - ตรวจความพร้อม —
php tools/deploy/preflight.phpต้องได้ "✓ All checks passed" - ตั้งค่าหลังบ้าน — ตั้งค่าระบบ: API key ของ AI ลิงก์ดาวน์โหลดโปรแกรมอ่านบัตร บัญชีรับชำระ
โปรแกรมอ่านบัตรประชาชน (Moobaan Card Agent)
โปรแกรมนี้ติดตั้งบน เครื่อง Windows ของผู้ใช้ ที่เสียบเครื่องอ่านบัตร (ไม่ใช่บนเซิร์ฟเวอร์)
- นำโฟลเดอร์
tools/moobaan-card-agent/ขึ้น GitHub repository ใหม่ - สร้าง tag เช่น
v1.0.0— GitHub Actions จะสร้างไฟล์MoobaanCardAgent.exeในหน้า Releases - คัดลอก URL ของไฟล์ .exe ไปใส่ที่ ตั้งค่าระบบ → เครื่องอ่านบัตรประชาชน → ลิงก์ดาวน์โหลดโปรแกรมอ่านบัตร
- ผู้ใช้กด "อ่านบัตร" ครั้งแรก ระบบจะเสนอให้ดาวน์โหลดโปรแกรม
Checklist ความปลอดภัยก่อนเปิดใช้จริง
- ปิด debug (preflight ตรวจให้)
- ไฟล์
*.local.phpไม่อยู่ใน git และเข้าถึงจากเว็บไม่ได้ - ผู้ใช้ฐานข้อมูลไม่ใช่ root
- บังคับ HTTPS
- คีย์เข้ารหัสตรงกับฐานข้อมูลที่ย้ายมา
- กันการเข้าถึง
install.php//installหลังติดตั้ง - ตั้ง cron สำรองฐานข้อมูลอัตโนมัติด้วย
tools/deploy/dump-db.sh - ไม่นำฐานข้อมูลตัวอย่าง
moobaan_demoขึ้นเซิร์ฟเวอร์
แก้ปัญหาเบื้องต้น
| อาการ | สาเหตุ / วิธีแก้ |
|---|---|
| 500 Internal Server Error | ดู storage/logs/ และ log ของเว็บเซิร์ฟเวอร์ มักเป็นสิทธิ์ไฟล์หรือ extension ขาด → รัน preflight |
| หน้าเว็บโหลดแต่ลิงก์/CSS เพี้ยน | URL ผิด → รัน set-prod-urls.php ใหม่ |
| กดอะไรก็ 404 | ยังไม่เปิด mod_rewrite / AllowOverride หรือ Nginx ไม่มี try_files … /index.php |
| Login แล้วเด้งกลับ | เว็บยังเป็น http แต่ cookie ตั้ง Secure → เปิด HTTPS |
| เลขบัตรประชาชนอ่านไม่ออก | encryption_key ไม่ตรงกับตอนเข้ารหัส → ใช้คีย์เดิม |
| หน้าเว็บขึ้น "ระบบขัดข้องชั่วคราว" พร้อมรหัสอ้างอิง | ค้นรหัสอ้างอิงใน storage/logs/error.log (หรือ <ระบบย่อย>/storage/logs/error.log) เพื่อดูสาเหตุ |