คู่มือการใช้งาน Moobaan
ภาคผนวก · บทที่ 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) การย้ายเครื่องจึงย้ายฐานข้อมูลเพียงฐานเดียว

ขั้นตอนโดยสรุป

  1. Dump ฐานข้อมูล บนเครื่องพัฒนา: tools/deploy/dump-db.sh และจดค่า encryption_key + hmac_key จาก config/auth.php
  2. อัปโหลดโค้ด (ไม่ต้องนำ node_modules, .git, ไฟล์ *.local.php และไฟล์ dump ขึ้นไป)
  3. สร้างฐานข้อมูลและผู้ใช้ บนเซิร์ฟเวอร์ (utf8mb4) แล้วนำเข้าไฟล์ dump
  4. ตั้งค่า — คัดลอก 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)
  5. สิทธิ์ไฟล์ — ให้เว็บเซิร์ฟเวอร์เขียน storage/ และ media/ ได้
  6. เว็บเซิร์ฟเวอร์ — เปิด mod_rewrite + AllowOverride All (Apache) หรือใช้ tools/deploy/nginx.conf.example
  7. HTTPS — ออกใบรับรองด้วย Let's Encrypt (certbot --apache หรือ --nginx)
  8. ตรวจความพร้อม — php tools/deploy/preflight.php ต้องได้ "✓ All checks passed"
  9. ตั้งค่าหลังบ้าน — ตั้งค่าระบบ: API key ของ AI ลิงก์ดาวน์โหลดโปรแกรมอ่านบัตร บัญชีรับชำระ

โปรแกรมอ่านบัตรประชาชน (Moobaan Card Agent)

โปรแกรมนี้ติดตั้งบน เครื่อง Windows ของผู้ใช้ ที่เสียบเครื่องอ่านบัตร (ไม่ใช่บนเซิร์ฟเวอร์)

  1. นำโฟลเดอร์ tools/moobaan-card-agent/ ขึ้น GitHub repository ใหม่
  2. สร้าง tag เช่น v1.0.0 — GitHub Actions จะสร้างไฟล์ MoobaanCardAgent.exe ในหน้า Releases
  3. คัดลอก URL ของไฟล์ .exe ไปใส่ที่ ตั้งค่าระบบ → เครื่องอ่านบัตรประชาชน → ลิงก์ดาวน์โหลดโปรแกรมอ่านบัตร
  4. ผู้ใช้กด "อ่านบัตร" ครั้งแรก ระบบจะเสนอให้ดาวน์โหลดโปรแกรม

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) เพื่อดูสาเหตุ