โลโก้ Node.js
อันดับ 7 ใน Top 100 ภาษาโปรแกรมและ FrameworkMIT (โอเพนซอร์ส)

Node.js คืออะไร และวิธี Deploy ขึ้น Production บน Cloud Server

Node.js คือ Runtime ที่ให้รันจาวาสคริปต์ฝั่งเซิร์ฟเวอร์ เป็นฐานของแอปเว็บและ API จำนวนมหาศาลในปัจจุบัน การนำขึ้น Production ต้องมี Process Manager และ Reverse Proxy ที่ตั้งค่าถูกต้อง

ติดตั้งบนเซิร์ฟเวอร์เองได้
ได้
สเปกเริ่มต้นที่แนะนำ
2 vCPU · RAM 4 GB
ไลเซนส์
MIT (โอเพนซอร์ส)
เว็บทางการ
เปิดเว็บไซต์
สร้าง Cloud Server เดี๋ยวนี้
  • 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 บน Cloud Server หนึ่งเครื่องที่ Data Center ในประเทศไทย ผู้ใช้เข้าถึงผ่านไฟร์วอลล์ที่เปิดเฉพาะพอร์ต 443, 80, 3000 ตัว Node.js และข้อมูลอยู่บนเครื่องเดียวกัน เริ่มต้นที่ 2 vCPU แรม 4 GB และมีสำเนาสำรองเขียนออกไปเก็บอีกไซต์หนึ่ง
Node.js ทำงานบน Cloud Server เครื่องเดียวได้ครบ เปิดเฉพาะพอร์ตที่จำเป็น ข้อมูลและสำเนาสำรองอยู่ใน Data Center ในประเทศไทย

ความสามารถเด่นของ Node.js

รับคำขอพร้อมกันได้ดี

เหมาะกับงาน API และงานที่ต้องรอข้อมูลจากระบบอื่น

ระบบนิเวศไลบรารีใหญ่ที่สุด

มีแพ็กเกจสำเร็จรูปให้ใช้แทบทุกงาน ลดเวลาพัฒนาลงมาก

ใช้ภาษาเดียวทั้งระบบ

ทีมเดียวดูแลได้ทั้งหน้าบ้านและหลังบ้าน

รองรับ WebSocket ในตัว

ทำระบบเรียลไทม์อย่างแชทหรือแดชบอร์ดสดได้โดยไม่ต้องเพิ่มบริการ

รันได้ทุกที่

ทั้งบน Cloud Server, ในคอนเทนเนอร์ และในคลัสเตอร์ Kubernetes

ใช้ Node.js ทำอะไรได้บ้าง

  • API หลังบ้านของเว็บและแอปมือถือ
  • เว็บที่เรนเดอร์ฝั่งเซิร์ฟเวอร์ด้วย Next.js หรือ Nuxt
  • ระบบเรียลไทม์อย่างแชท การแจ้งเตือน และแดชบอร์ดสด
  • บริการเชื่อมระบบภายในที่ต้องคุยกับหลาย API

สเปก Cloud Server ที่แนะนำ

แผนภาพเทียบสเปก Cloud Server สำหรับ Node.js 3 ระดับ เริ่มจาก 2 vCPU แรม 4 GB ดิสก์ NVMe 40 GB ไปจนถึง 8 vCPU ขึ้นไป แรม 16 GB ขึ้นไป ดิสก์ NVMe 160 GB ขึ้นไป โดยเทียบขนาดแยกตามแต่ละคอลัมน์
เริ่มจากระดับที่ตรงกับการใช้งานตอนนี้ แล้วเพิ่ม CPU และ RAM ทีหลังได้บนเครื่องเดิม
ระดับการใช้งานvCPURAMDisk
เริ่มต้นแอปเดียวและทราฟฟิกไม่สูง2 vCPU4 GBNVMe 40 GB
แนะนำProduction ที่มีผู้ใช้ต่อเนื่อง รัน PM2 หลายกระบวนการ4 vCPU8 GBNVMe 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. 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. 2

    สร้างผู้ใช้สำหรับรันแอป

    ไม่ควรรันแอปด้วย root เพื่อจำกัดความเสียหายหากแอปถูกเจาะ

    sudo adduser --disabled-password --gecos "" appuser
    sudo mkdir -p /var/www/app
    sudo chown appuser:appuser /var/www/app
  3. 3

    ติดตั้ง Dependency และบิลด์สำหรับ Production

    cd /var/www/app
    npm ci --omit=dev
    npm run build
  4. 4

    รันเป็นบริการด้วย PM2

    โหมด cluster จะรันหลายกระบวนการให้ใช้ทุกคอร์ของเครื่อง

    sudo npm install -g pm2
    pm2 start npm --name app -i max -- run start
    pm2 startup systemd
    pm2 save
  5. 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. 6

    เก็บค่าคอนฟิกและความลับใน .env

    ห้ามฝังรหัสผ่านหรือคีย์ในซอร์สโค้ด และตั้งสิทธิ์ไฟล์ให้เฉพาะผู้ใช้ที่รันแอปอ่านได้

    sudo chown appuser:appuser /var/www/app/.env
    sudo chmod 600 /var/www/app/.env

ให้แอปฟังเฉพาะ 127.0.0.1 แล้วเปิดสู่ภายนอกผ่าน Nginx เท่านั้น เพื่อไม่ให้ใครเข้าถึงแอปโดยข้ามชั้น HTTPS และการป้องกันที่ตั้งไว้

พอร์ตที่ต้องเปิดบน Firewall

พอร์ตโปรโตคอลใช้ทำอะไร
443TCPHTTPS ผ่าน Nginx
80TCPHTTP และการต่ออายุใบรับรอง
3000TCPพอร์ตภายในของแอป (ไม่เปิดสู่อินเทอร์เน็ต)

สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ

  • รันแอปด้วยผู้ใช้ที่ไม่ใช่ 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 ให้ฟรี บน Cloud Server ในไทย

แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด