01ปัญหาของ "vibe coding" — เขียนเป็น แต่ deploy ไม่เป็น
ยุคนี้ใครก็เขียนแอปได้ บอก AI ว่าอยากได้ระบบจองคิว ระบบสต็อก หรือแดชบอร์ด ไม่กี่นาทีก็ได้โค้ดมารันในเครื่อง เปิด localhost:5000 แล้วใช้งานได้เลย ความรู้สึกคือ "จบแล้ว!"
แต่ การเขียนโค้ด กับ การ deploy (เอาขึ้นใช้จริง) เป็นคนละเรื่องกันสิ้นเชิง ในเครื่องคุณ แอปมี Python หรือ Node รันเป็นเซิร์ฟเวอร์ค้างไว้ตลอด มีฐานข้อมูลของมันเอง เปิด port ได้ตามใจ — พอย้ายขึ้น hosting จริง กติกาเปลี่ยนหมด และนี่คือจุดที่คนส่วนใหญ่ติด
02ทำไมแอป AI รันบน shared hosting ตรง ๆ ไม่ได้
Shared hosting (เช่นที่ใช้ DirectAdmin หรือ cPanel — โฮสต์ราคาหลักร้อยที่คนส่วนใหญ่ใช้) ออกแบบให้หลายเว็บอยู่บนเครื่องเดียวกัน จึงต้องจำกัดสิทธิ์เพื่อไม่ให้เว็บหนึ่งไปกวนคนอื่น ข้อจำกัดที่กระทบแอป AI โดยตรง:
- รัน process ค้างตลอดไม่ได้ — ไม่มี background server / daemon แอปที่ต้องสั่ง
python app.pyหรือnpm startค้างไว้ จึงทำไม่ได้ - ไม่มี root, เปิด custom port ไม่ได้, ไม่มี Docker — เข้าถึงได้แค่ผ่านเว็บ (พอร์ต 80/443) เท่านั้น
- ฐานข้อมูลมักมีแค่ MySQL/MariaDB — ไม่มี PostgreSQL, MongoDB ให้ (Redis มีเฉพาะบางเจ้า — โฮสต์เราเปิดใช้ได้ตามลักษณะงาน)
- path, permission, ค่า secret ต่างจากในเครื่อง — โค้ดที่ hardcode path หรือรหัสไว้จะพังทันที
แอปที่ AI เขียนมัก "รันในเครื่องได้ แต่ขึ้น host แล้วพัง" เพราะ AI เขียนโดยสมมติว่ามีเซิร์ฟเวอร์รันค้างได้ตลอดเวลา ซึ่งบน shared hosting ไม่มี
032 ทางเลือก: แปลงเข้า shared host vs เช่า VPS
มีทางไปต่อ 2 ทาง เลือกให้ตรงกับงานและงบ:
| แปลงเข้า Shared Host | เช่า VPS | |
|---|---|---|
| ราคา | ถูก (หลักร้อย/เดือน) | แพงกว่า (หลักพัน/เดือน) |
| ดูแลระบบ | โฮสต์ดูแลให้ | ต้องดูแลเอง (อัปเดต/security) |
| รันโค้ดเดิมได้เลย | ต้องแปลงก่อน | รันได้ตรง ๆ |
| เหมาะกับ | เว็บแอป CRUD, ระบบร้าน, ฟอร์ม, แดชบอร์ด | real-time, AI หนัก, process รันค้าง |
งานส่วนใหญ่ (เว็บแอปทั่วไปที่แค่บันทึก–แสดง–แก้ข้อมูล) แปลงเข้า shared host คุ้มกว่าเยอะ — ถูกกว่าหลายเท่า ไม่ต้องปวดหัวดูแลเซิร์ฟเวอร์เอง บทความนี้จะโฟกัสทางนี้
04เตรียมแอปก่อน deploy (checklist ตามภาษา)
ถ้าแอปเป็น Python (Flask / FastAPI / Django)
- สร้างไฟล์ dependencies:
pip freeze > requirements.txt - ย้ายรหัส/คีย์ทั้งหมดออกจากโค้ด ไปไว้ในไฟล์
.env - อย่า hardcode
localhostหรือเลข port — อ่านจาก config แทน - Django: เตรียมรัน
migrateและcollectstatic, ปิดDEBUG
ถ้าแอปเป็น Node (Express / Next.js)
- ตรวจ
package.jsonให้มีคำสั่งbuild/startครบ - อ่าน port จาก
process.env.PORTเสมอ (อย่า fix เลข port) - Next.js: แยกให้ชัดว่าส่วนไหน static, ส่วนไหนต้องมี server
ถ้ามี Frontend (React / Vue / Next)
- สั่ง
buildให้ได้ไฟล์ static (HTML/CSS/JS) — ส่วนนี้ขึ้น shared host ได้สบาย - เหลือแค่ backend/API ที่ต้องแปลง
ฐานข้อมูล
- export ข้อมูลออกมาเป็นไฟล์:
.sqldump หรือไฟล์.sqlite - ถ้าเป็น SQLite / PostgreSQL / MongoDB เตรียมใจว่าต้องแปลงเป็น MySQL
05โมเดล "convert เข้าระบบ host" (หัวใจของเรื่อง)
หลักคิดคือ: เก็บ "สิ่งที่แอปทำ" ไว้ให้ครบ แต่เปลี่ยน "วิธีรัน" ให้เข้ากับ shared host ตารางนี้คือแผนที่การแปลง:
| AI เขียนมาเป็น | แปลงเป็น (รันบน host ได้) |
|---|---|
| เซิร์ฟเวอร์ Python/Node รันค้าง | → PHP / Laravel ที่ทำงานเป็น request (เรียกเมื่อมีคนเข้า) |
| worker / loop รันตลอดเวลา | → cron job (ตั้งให้รันทุก 1/5/10 นาที) |
| SQLite / PostgreSQL / MongoDB | → MySQL / MariaDB (แปลง schema + import) |
| เรียกโมเดล AI ในเครื่อง | → เรียก API ภายนอก (Claude / GPT / Gemini) |
| ค่า secret ในโค้ด | → ย้ายไป .env / ตั้งใน panel ของ host |
| websocket / real-time | → polling ทุกไม่กี่วินาที (พอสำหรับงานส่วนใหญ่) |
ตัวอย่างที่ชัดที่สุด: แอปที่มี "worker คอยเช็คออเดอร์ใหม่ทุกวินาที" บน shared host รันแบบนั้นไม่ได้ แต่แปลงเป็น cron job รันทุก 1 นาที ก็ได้ผลลัพธ์เกือบเหมือนกัน ในราคาที่ถูกกว่ามาก
06แปลงโค้ดเป็น PHP 8.4 ด้วย AI (+ prompt สำเร็จรูป)
วิธีที่เร็วที่สุดในการแปลงคือ ให้ AI แปลงให้ — แต่ถ้าสั่งลอย ๆ ว่า "แปลงเป็น PHP" มักได้โค้ดที่ยังรันบน shared host ไม่ได้อยู่ดี (ยังมี process ค้าง, ต่อ DB ผิด, hardcode path) เคล็ดลับคือ สั่งให้ครบข้อกำหนดของ shared host — ก๊อป prompt ด้านล่างไปวางในแชท AI (Claude / ChatGPT) แล้วแนบโค้ดเดิมต่อท้าย
PHP 8.4 + MariaDB (ผ่าน PDO) + Redis สำหรับ cache/session — งานข้อมูลเยอะหรือโหลดหนักก็รับไหว โดยไม่ต้องขึ้น VPS
คุณคือวิศวกรที่เชี่ยวชาญการย้ายเว็บแอปขึ้น shared hosting (DirectAdmin) ฉันจะแนบโค้ดแอปเดิม (Python / Node / อื่น ๆ) ให้ ช่วยแปลงเป็น PHP 8.4 + MariaDB ให้รันบน shared hosting ได้จริง โดยทำตามข้อกำหนดนี้อย่างเคร่งครัด: 1) ทำงานแบบ request-based เท่านั้น — ห้ามมี process/daemon/worker ที่รันค้างตลอดเวลา 2) ฐานข้อมูล = MariaDB/MySQL ต่อผ่าน PDO + prepared statements (กัน SQL injection) ถ้าเดิมเป็น SQLite/PostgreSQL/MongoDB ให้แปลง schema และเขียนไฟล์ schema.sql ให้ด้วย 3) ค่า config/secret ทุกตัวอ่านจากไฟล์ .env (ห้าม hardcode) และแนบ .env.example 4) งานที่เดิมเป็น background loop/worker ให้แยกเป็นสคริปต์ PHP ที่สั่งด้วย cron ได้ พร้อมบอกบรรทัด crontab ที่ต้องตั้ง 5) ถ้ามีการเรียกโมเดล AI ในเครื่อง ให้เปลี่ยนเป็นเรียก API ภายนอก (คีย์อยู่ใน .env) 6) ถ้าข้อมูลเยอะ/โหลดหนัก ให้ใช้ Redis เป็น cache/session (เปิด-ปิดผ่าน .env) และทำ query ให้มี index + pagination 7) โครงสร้างไฟล์แบบ DirectAdmin: public_html เป็น web root, ไฟล์ลับอยู่นอก web root 8) ใช้ฟีเจอร์ PHP 8.4 (typed properties, enum, match, nullsafe) และห้ามแสดง error บนหน้าเว็บ ให้ log แทน ส่งกลับมาให้ครบ: โครงสร้างไฟล์, โค้ด PHP ทุกไฟล์, schema.sql, .env.example, บรรทัด crontab (ถ้ามี), และขั้นตอน deploy สั้น ๆ โค้ดเดิมของฉัน: 【 วางโค้ดที่ AI เขียนมาตรงนี้ 】
เมื่อได้โค้ด PHP 8.4 + schema.sql + .env.example มาแล้ว → ทำตามขั้นตอน deploy ข้อถัดไป หรือส่งมาให้เรา deploy ให้ครบเลยก็ได้ (ถ้า AI แปลงมาแล้วยังมี error เราเก็บให้จบ)
07ขั้นตอน deploy บน DirectAdmin (ภาพรวม)
- เตรียมไฟล์ให้พร้อม (build frontend, export ฐานข้อมูล)
- สร้าง database + user ใน DirectAdmin
- อัปโหลดไฟล์ (File Manager / FTP / git)
- import ฐานข้อมูลผ่าน phpMyAdmin
- ตั้งค่า
.env— DB host =localhostพร้อม user/รหัสที่สร้างไว้ - ผูกโดเมน + เปิด SSL (Let's Encrypt)
- ตั้ง cron สำหรับงานเบื้องหลัง (แทน worker)
- ทดสอบ และดู error log ถ้ามีปัญหา
# DirectAdmin > Cron Jobs * * * * * php /home/user/domains/yourapp.com/artisan schedule:run # หรือเรียกสคริปต์ตรง ๆ */5 * * * * php /home/user/.../check_orders.php
DB_HOST=localhost
DB_DATABASE=user_appdb
DB_USERNAME=user_app
DB_PASSWORD=********
08Error ที่เจอบ่อยจากโค้ด AI + วิธีแก้
| อาการ | สาเหตุ + วิธีแก้ |
|---|---|
| หน้าเว็บขาว / 500 | เปิด error log ก่อน มักเป็น permission ไฟล์, .env ไม่ครบ หรือ DB ต่อไม่ได้ |
| DB connection refused | host ต้องเป็น localhost + user/รหัสของ host (ไม่ใช่ค่าตอนรันในเครื่อง) |
| hardcode localhost:port | เปลี่ยนเป็น path แบบ relative หรืออ่านจาก env |
| SQLite ใช้ไม่ได้/หาย | ย้ายเป็น MySQL (import + ปรับ query ที่ต่างกัน) |
| debug เปิดค้าง | ปิด debug mode — ไม่งั้นเสี่ยงข้อมูลหลุด (security) |
| worker/บอทไม่รัน | shared host รัน process ค้างไม่ได้ ทำเป็น cron แทน |
09เมื่อไหร่ควรใช้ VPS แทน
แปลงเข้า shared host คุ้มสำหรับงานส่วนใหญ่ แต่บางงานควรขยับไป VPS ตั้งแต่แรก:
- real-time จริง ๆ — แชทสด, เกม, ข้อมูลที่ต้องอัปเดตทันทีระดับวินาที ที่ polling ไม่พอ
- รันโมเดล AI/ML หนักในเครื่อง — ต้องใช้ CPU/GPU/RAM เยอะ
- process ที่ต้องรันค้างจริง ๆ ตลอดเวลา (เช่น bot ที่ต่อ socket ค้าง)
- traffic สูงมาก — คนเข้าพร้อมกันเยอะเกินกว่า shared host จะรับไหว
ถ้าไม่เข้าข้อพวกนี้ — เริ่มที่ shared host ก่อน ประหยัดกว่าเยอะ แล้วค่อยย้ายทีหลังถ้าโตจริง
ไม่อยากแปลง/deploy เอง?
ส่งโค้ดที่ AI เขียนมา ThaiDeploy แปลงให้เข้ากับ host + เอาขึ้นให้รันจริง + ผูกโดเมน + SSL ให้ครบ คุณไม่ต้องแตะ command line เลย
เริ่ม deploy (ปรึกษาฟรี)