Node.js คืออะไร และวิธี Deploy ขึ้น Production บน Cloud Server
Node.js คือ Runtime ที่ให้รันจาวาสคริปต์ฝั่งเซิร์ฟเวอร์ เป็นฐานของแอปเว็บและ API จำนวนมหาศาลในปัจจุบัน การนำขึ้น Production ต้องมี Process Manager และ Reverse Proxy ที่ตั้งค่าถูกต้อง
- หมวดหมู่
- ภาษาโปรแกรมและ Framework
- ติดตั้งบนเซิร์ฟเวอร์เองได้
- ได้
- สเปกเริ่มต้นที่แนะนำ
- 2 vCPU · RAM 4 GB
- ไลเซนส์
- MIT (โอเพนซอร์ส)
- เว็บทางการ
- เปิดเว็บไซต์
- ISO/IEC 27001
- ISO 22301
- ISO 20000-1
- CSA-STAR
Data Center ในไทย มาตรฐาน TIA-942 Tier 3+ ข้อมูลอยู่ในประเทศไทย
Node.js คืออะไร
Node.js ทำให้ทีมพัฒนาใช้ภาษาเดียวกันทั้งหน้าบ้านและหลังบ้าน จุดแข็งคือการรับคำขอจำนวนมากพร้อมกันได้ดีในงานที่ต้องรอข้อมูลจากภายนอก เช่น API และงานที่คุยกับฐานข้อมูลบ่อย
สิ่งที่ต่างจากเว็บ PHP อย่างชัดเจนคือแอป Node.js ต้องรันเป็นบริการตลอดเวลา ไม่ใช่ไฟล์ที่เว็บเซิร์ฟเวอร์เรียกเป็นครั้ง ๆ ดังนั้นโฮสติ้งแบบแชร์ทั่วไปจึงรันไม่ได้ ต้องใช้ Cloud Server ที่ควบคุมกระบวนการเองได้
โครงสร้าง Production ที่เป็นมาตรฐานคือให้ Nginx รับทราฟฟิกและจัดการ HTTPS แล้วส่งต่อไปยังแอป Node.js ที่รันอยู่หลังบ้านผ่าน PM2 ซึ่งดูแลให้แอปรีสตาร์ตเองเมื่อล่มและรันหลายกระบวนการเพื่อใช้ทุกคอร์
ความสามารถเด่นของ Node.js
รับคำขอพร้อมกันได้ดี
เหมาะกับงาน API และงานที่ต้องรอข้อมูลจากระบบอื่น
ระบบนิเวศไลบรารีใหญ่ที่สุด
มีแพ็กเกจสำเร็จรูปให้ใช้แทบทุกงาน ลดเวลาพัฒนาลงมาก
ใช้ภาษาเดียวทั้งระบบ
ทีมเดียวดูแลได้ทั้งหน้าบ้านและหลังบ้าน
รองรับ WebSocket ในตัว
ทำระบบเรียลไทม์อย่างแชทหรือแดชบอร์ดสดได้โดยไม่ต้องเพิ่มบริการ
รันได้ทุกที่
ทั้งบน Cloud Server, ในคอนเทนเนอร์ และในคลัสเตอร์ Kubernetes
ใช้ Node.js ทำอะไรได้บ้าง
- API หลังบ้านของเว็บและแอปมือถือ
- เว็บที่เรนเดอร์ฝั่งเซิร์ฟเวอร์ด้วย Next.js หรือ Nuxt
- ระบบเรียลไทม์อย่างแชท การแจ้งเตือน และแดชบอร์ดสด
- บริการเชื่อมระบบภายในที่ต้องคุยกับหลาย API
สเปก Cloud Server ที่แนะนำ
| ระดับการใช้งาน | vCPU | RAM | Disk |
|---|---|---|---|
| เริ่มต้นแอปเดียวและทราฟฟิกไม่สูง | 2 vCPU | 4 GB | NVMe 40 GB |
| แนะนำProduction ที่มีผู้ใช้ต่อเนื่อง รัน PM2 หลายกระบวนการ | 4 vCPU | 8 GB | NVMe 80 GB |
| ทราฟฟิกสูงหลาย Instance หลัง Load Balancer และแยกเครื่องฐานข้อมูล | 8 vCPU ขึ้นไป | 16 GB ขึ้นไป | NVMe 160 GB ขึ้นไป |
ดูราคาตามสเปกได้ที่ ราคา Cloud Compute หรือให้ทีมงานช่วยประเมินสเปกจากปริมาณผู้ใช้จริงของคุณ
วิธีติดตั้ง Node.js บน Cloud Server ของ THAI DATA CLOUD
ขั้นตอนด้านล่างใช้กับ Cloud Server ที่เพิ่งสร้างใหม่จากหน้าจัดการของ THAI DATA CLOUD ได้ทันที ถ้าไม่สะดวกทำเอง ทีมวิศวกรของเราติดตั้งและตั้งค่าให้ฟรีสำหรับลูกค้า Cloud Server
สิ่งที่ต้องเตรียม
- Ubuntu Server 24.04 LTS
- Node.js รุ่น LTS ที่ตรงกับที่แอปทดสอบไว้
- PM2 หรือ systemd สำหรับรันเป็นบริการ
- Nginx สำหรับ Reverse Proxy และ HTTPS
ทดสอบบน Ubuntu Server 24.04 LTS
- 1
ติดตั้ง Node.js จากที่เก็บทางการ
ที่เก็บของ Ubuntu มักมีรุ่นเก่ากว่า ใช้ NodeSource เพื่อได้รุ่น LTS ที่ต้องการ
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt -y install nodejs node -v && npm -v - 2
สร้างผู้ใช้สำหรับรันแอป
ไม่ควรรันแอปด้วย root เพื่อจำกัดความเสียหายหากแอปถูกเจาะ
sudo adduser --disabled-password --gecos "" appuser sudo mkdir -p /var/www/app sudo chown appuser:appuser /var/www/app - 3
ติดตั้ง Dependency และบิลด์สำหรับ Production
cd /var/www/app npm ci --omit=dev npm run build - 4
รันเป็นบริการด้วย PM2
โหมด cluster จะรันหลายกระบวนการให้ใช้ทุกคอร์ของเครื่อง
sudo npm install -g pm2 pm2 start npm --name app -i max -- run start pm2 startup systemd pm2 save - 5
ตั้ง Nginx เป็น Reverse Proxy พร้อม HTTPS
server { listen 443 ssl; server_name app.example.com; location / { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } - 6
เก็บค่าคอนฟิกและความลับใน .env
ห้ามฝังรหัสผ่านหรือคีย์ในซอร์สโค้ด และตั้งสิทธิ์ไฟล์ให้เฉพาะผู้ใช้ที่รันแอปอ่านได้
sudo chown appuser:appuser /var/www/app/.env sudo chmod 600 /var/www/app/.env
ให้แอปฟังเฉพาะ 127.0.0.1 แล้วเปิดสู่ภายนอกผ่าน Nginx เท่านั้น เพื่อไม่ให้ใครเข้าถึงแอปโดยข้ามชั้น HTTPS และการป้องกันที่ตั้งไว้
พอร์ตที่ต้องเปิดบน Firewall
| พอร์ต | โปรโตคอล | ใช้ทำอะไร |
|---|---|---|
| 443 | TCP | HTTPS ผ่าน Nginx |
| 80 | TCP | HTTP และการต่ออายุใบรับรอง |
| 3000 | TCP | พอร์ตภายในของแอป (ไม่เปิดสู่อินเทอร์เน็ต) |
สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ
- รันแอปด้วยผู้ใช้ที่ไม่ใช่ root และให้ฟังเฉพาะภายในเครื่อง
- ตั้ง NODE_ENV เป็น production เพื่อปิดข้อมูลดีบักและเปิดการปรับแต่งประสิทธิภาพ
- อัปเดต Dependency ตามรอบและตรวจช่องโหว่ด้วย npm audit
- จำกัดอัตราการเรียก API ที่ชั้น Nginx เพื่อกันการยิงคำขอถี่
- ตั้งการเฝ้าระวังหน่วยความจำ เพราะการรั่วของหน่วยความจำเป็นปัญหาที่พบบ่อยในแอประยะยาว
ทำไมควรรัน Node.js บน Cloud Server ของ THAI DATA CLOUD
Data Center ในประเทศไทย มาตรฐาน ISO/IEC 27001 และ ISO 22301 พร้อมทีมวิศวกรคนไทยดูแลตลอด 24 ชั่วโมง
แอป Node.js ต้องรันเป็นบริการตลอดเวลา ซึ่งโฮสติ้งแบบแชร์ทำไม่ได้ Cloud Server จึงเป็นทางเลือกที่ตรงที่สุด
แยกฐานข้อมูลออกอีกเครื่องในวง Private Network ในไทย ได้ทั้งความเร็วและความปลอดภัย
เพิ่ม Instance หลัง Load Balancer ได้เมื่อทราฟฟิกโต โดยไม่ต้องเปลี่ยนสถาปัตยกรรม
THAI DATA CLOUD มีบริการ Cloud Node.js Server ที่เตรียมสภาพแวดล้อมมาให้พร้อมใช้
คำถามที่พบบ่อยเกี่ยวกับ Node.js
ต้องใช้ PM2 ไหม หรือใช้ systemd ก็พอ
ใช้ได้ทั้งสองแบบ systemd เพียงพอถ้ารันกระบวนการเดียวและอยากพึ่งเครื่องมือของระบบ ส่วน PM2 สะดวกกว่าเมื่อต้องรันหลายกระบวนการ ดู Log รวม และรีโหลดแบบไม่มีช่วงหยุดให้บริการ
ทำไมแอปล่มเองเป็นระยะ
สาเหตุที่พบบ่อยคือหน่วยความจำรั่วจนถูกระบบปิด หรือมีข้อผิดพลาดที่ไม่ได้ดักจับ ให้ตั้งการเฝ้าระวังหน่วยความจำ ดัก error ให้ครบ และให้ PM2 หรือ systemd รีสตาร์ตอัตโนมัติระหว่างที่แก้ต้นเหตุ
Node.js รองรับผู้ใช้พร้อมกันได้เท่าไหร่
ขึ้นกับลักษณะงาน ถ้าเป็นงานที่รอข้อมูลจากฐานข้อมูลหรือ API จะรับได้มากบนเครื่องขนาดกลาง แต่ถ้ามีการคำนวณหนักในเธรดหลักจะกลายเป็นคอขวด ควรย้ายงานหนักไปทำเบื้องหลังผ่านคิวงาน
ทางเลือกอื่นที่คล้ายกับ Node.js
แอปอื่นในหมวด ภาษาโปรแกรมและ Framework
บริการของ THAI DATA CLOUD ที่เกี่ยวข้อง
ให้เราติดตั้ง Node.js ให้ฟรี บน Cloud Server ในไทย
แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด