Application Manager ใน cPanel Setup Node.js Python

ตั้งค่า Node.js และ Python App บน Shared Hosting ผ่าน cPanel Application Manager ได้ง่ายๆ โดยไม่ต้องใช้ VPS

Application Manager ใน cPanel Setup Node.js Python cPanel

Application Manager ใน cPanel คืออะไร?

Application Manager คือฟีเจอร์ใน cPanel ที่ช่วยให้ผู้ใช้ Shared Hosting สามารถรัน Web Application ที่พัฒนาด้วยภาษา Node.js หรือ Python ได้โดยตรง โดยไม่จำเป็นต้องมี VPS หรือ Dedicated Server เป็นของตัวเอง ฟีเจอร์นี้ทำงานผ่านระบบ Passenger Application Server ซึ่ง cPanel รองรับอยู่แล้ว ทำให้นักพัฒนาสามารถ deploy แอปได้ง่ายขึ้นมาก

โดยปกติแล้ว Shared Hosting รองรับได้เฉพาะ PHP เป็นหลัก แต่ด้วย Application Manager ทำให้สามารถรัน Express.js, Flask, Django, FastAPI และ Framework อื่นๆ บน Shared Hosting ได้เช่นกัน ซึ่งเหมาะอย่างยิ่งสำหรับโปรเจกต์ขนาดเล็กถึงกลางที่ยังไม่ต้องการ infrastructure ขนาดใหญ่

ก่อนเริ่มต้น: สิ่งที่ต้องเตรียม

ก่อนที่จะเริ่มใช้งาน Application Manager ควรตรวจสอบสิ่งต่อไปนี้ให้พร้อมก่อน:

วิธี Setup Node.js App ใน cPanel Application Manager

ขั้นตอนการตั้งค่า Node.js Application ผ่าน cPanel มีดังนี้:

  1. เข้าสู่ cPanel ของคุณ แล้วค้นหาหมวด Software
  2. คลิก "Setup Node.js App" (บาง Hosting อาจแสดงเป็น "Node.js" หรือ "Application Manager")
  3. คลิกปุ่ม "+ Create Application" สีเขียวด้านบนขวา
  4. กรอกข้อมูลต่อไปนี้:
    • Node.js version: เลือก version ที่ต้องการ เช่น 18.x หรือ 20.x
    • Application mode: เลือก "Production" สำหรับเว็บจริง หรือ "Development" สำหรับทดสอบ
    • Application root: โฟลเดอร์ที่เก็บโค้ด เช่น myapp (จะถูกสร้างอัตโนมัติใน home directory)
    • Application URL: เลือก domain หรือ subdomain ที่ต้องการ
    • Application startup file: ชื่อไฟล์หลัก เช่น app.js หรือ server.js
  5. คลิก "Create" เพื่อสร้าง Application

หลังจากสร้างแล้ว ระบบจะแสดงคำสั่ง virtual environment ให้ใช้ใน Terminal ซึ่งคุณสามารถ copy ไปรันผ่าน SSH เพื่อ install package ได้

อัปโหลดโค้ดและติดตั้ง Dependencies (Node.js)

หลังจากสร้าง Application แล้ว ให้ upload โค้ดขึ้นไปยัง Application root folder โดยใช้ File Manager หรือ FTP จากนั้นทำการ install package ผ่าน SSH:

# เข้า virtual environment ของ Node.js (copy จากหน้า Application Manager)
source /home/username/nodevenv/myapp/18/bin/activate

# เปลี่ยนไปยัง Application directory
cd ~/myapp

# ติดตั้ง package ทั้งหมดจาก package.json
npm install --production

# ตรวจสอบว่าแอปรันได้ (optional)
node app.js
หมายเหตุ: หลังจาก install package เสร็จแล้ว ให้กลับไปที่ Application Manager ใน cPanel แล้วกดปุ่ม "Restart" เพื่อให้ระบบโหลดการเปลี่ยนแปลงใหม่ทุกครั้ง

วิธี Setup Python App ใน cPanel Application Manager

สำหรับ Python Application ขั้นตอนคล้ายกัน แต่ใช้เมนู "Setup Python App" แทน:

  1. ใน cPanel ค้นหา "Setup Python App" ในหมวด Software
  2. คลิก "+ Create Application"
  3. กรอกข้อมูล:
    • Python version: เลือก version เช่น 3.9, 3.10, 3.11 หรือ 3.12
    • Application root: โฟลเดอร์สำหรับเก็บโค้ด เช่น pythonapp
    • Application URL: domain หรือ subdomain ที่ต้องการ
    • Application startup file: เช่น app.py หรือ passenger_wsgi.py
    • Application Entry point: ชื่อ object หลัก เช่น application (สำหรับ WSGI)
  4. คลิก "Create"

สำหรับ Flask หรือ Django จำเป็นต้องมีไฟล์ passenger_wsgi.py เพื่อเป็น entry point ให้ Passenger รู้จักแอปของคุณ ตัวอย่างไฟล์สำหรับ Flask:

# passenger_wsgi.py สำหรับ Flask
import sys
import os

# เพิ่ม path ของแอปเข้า Python path
sys.path.insert(0, os.path.dirname(__file__))

# import Flask app object
from app import app as application

# สำหรับ Django ให้ใช้:
# from django.core.wsgi import get_wsgi_application
# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
# application = get_wsgi_application()

ติดตั้ง Python Dependencies

หลังจากสร้าง Application และ upload โค้ดแล้ว ให้ activate virtual environment แล้ว install package:

# Activate virtual environment (copy command จาก Application Manager)
source /home/username/virtualenv/pythonapp/3.11/bin/activate

# เปลี่ยนไปยัง Application directory
cd ~/pythonapp

# ติดตั้ง dependencies จาก requirements.txt
pip install -r requirements.txt

# ตรวจสอบ package ที่ติดตั้งแล้ว
pip list
Tip: ถ้าไม่มี SSH Access ให้ใช้ช่อง "Execute Python Script" หรือ "Run Pip Install" ที่มีให้ในหน้า Application Manager ของบาง Hosting Provider แทน

การตั้งค่า Environment Variables

ในหน้า Application Manager คุณสามารถเพิ่ม Environment Variables ได้โดยตรง ไม่จำเป็นต้องสร้างไฟล์ .env เอง ซึ่งปลอดภัยกว่าการเก็บ key ไว้ในโค้ด:

  1. คลิก "Edit" ที่ Application ที่ต้องการ
  2. เลื่อนลงมาที่หัวข้อ "Environment variables"
  3. กด "+ Add Variable" แล้วกรอก Name และ Value เช่น:
    • DATABASE_URL = mysql://user:pass@localhost/dbname
    • SECRET_KEY = your-secret-key-here
    • NODE_ENV = production
  4. กด "Save" แล้วกด "Restart"

การ Restart และ Stop Application

ทุกครั้งที่มีการแก้ไขโค้ดหรือเปลี่ยน Environment Variables จะต้อง Restart Application เพื่อให้การเปลี่ยนแปลงมีผล ในหน้า Application Manager จะมีปุ่มให้ดังนี้:

ข้อจำกัดของ Application Manager บน Shared Hosting

แม้ว่า Application Manager จะสะดวก แต่ Shared Hosting มีข้อจำกัดบางอย่างที่ควรทราบ:

หากแอปของคุณเริ่มโตขึ้นหรือต้องการ resource มากขึ้น การอัปเกรดไปยัง VPS จะให้ความยืดหยุ่นมากกว่า แต่สำหรับ MVP หรือโปรเจกต์ขนาดเล็ก Shared Hosting ก็เพียงพอมาก


ตรวจสอบว่า Application ทำงานถูกต้อง

# 1. ตรวจสอบสถานะแอปผ่าน cPanel Application Manager
#    - ดูที่คอลัมน์ "Status" ต้องแสดง "Running"

# 2. ทดสอบเรียก URL ของแอปในเบราว์เซอร์
curl -I https://yourdomain.com/

# 3. ตรวจสอบ Error log ใน cPanel > Logs > Error Log
# หรือดูไฟล์ log โดยตรงผ่าน SSH:
tail -f ~/logs/yourdomain.com.error.log

# 4. ตรวจสอบว่า Node.js/Python version ถูกต้อง
node --version
python3 --version

# 5. ตรวจสอบ package ที่ติดตั้ง (Node.js)
npm list --depth=0
Tip: ถ้าเว็บแสดง Error 503 หรือหน้าขาว ให้กด Restart ใน Application Manager ก่อน แล้วรอ 10-15 วินาที จากนั้น refresh หน้าเว็บ ส่วนใหญ่ปัญหาจะหายไปเพราะ Passenger ต้องใช้เวลา warm-up

แก้ปัญหาที่พบบ่อย

Error: "Application failed to start"

ปัญหานี้มักเกิดจาก startup file ไม่ถูกต้อง หรือโค้ดมี syntax error ให้ตรวจสอบ Error Log ใน cPanel และตรวจสอบว่า Application startup file ที่กรอกไว้ตรงกับชื่อไฟล์จริงในโฟลเดอร์ เช่น ถ้ากรอก app.js แต่ไฟล์จริงชื่อ index.js ต้องแก้ให้ตรงกัน

Error: "Cannot find module '...'"

เกิดจาก npm install ยังไม่ได้รัน หรือรันนอก virtual environment วิธีแก้คือ activate virtual environment ก่อนแล้วค่อย install:

source /home/username/nodevenv/myapp/18/bin/activate
cd ~/myapp
npm install

Error: "ModuleNotFoundError: No module named '...'" (Python)

ปัญหาเดียวกับ Node.js คือ package ยังไม่ได้ติดตั้ง ให้ activate Python virtual environment แล้วรัน pip install:

source /home/username/virtualenv/pythonapp/3.11/bin/activate
pip install -r requirements.txt

ตรวจสอบด้วยว่า requirements.txt อยู่ใน root ของ Application folder หรือไม่

Error: "passenger_wsgi.py not found" หรือหน้าขาว (Python)

Passenger ต้องการไฟล์ passenger_wsgi.py เป็น entry point สำหรับ Python WSGI App ถ้าใช้ Flask ให้สร้างไฟล์นี้ใน root ของ Application โดยมีเนื้อหาดังที่แสดงในตัวอย่างด้านบน และตรวจสอบว่า "Application Entry point" ในหน้า Setup Python App ตั้งเป็น application

Error: "503 Service Unavailable" ทุกครั้ง

อาจเกิดจากแอปรันไม่ผ่านเพราะ Environment Variable ขาดหาย หรือ port ที่แอปพยายามจะ bind ถูก block ให้ตรวจสอบ Error Log และแก้ไขให้แอปไม่กำหนด port เองโดยตรงในโค้ด (Passenger จะ inject PORT ให้อัตโนมัติ) สำหรับ Node.js ให้ใช้:

// ถูกต้อง: ให้ Passenger กำหนด port ให้
const port = process.env.PORT || 3000;
app.listen(port);

คำถามที่พบบ่อย

Shared Hosting รองรับ Node.js ทุกแผนไหม?

ไม่ทุกแผนและไม่ทุก Provider รองรับ ขึ้นอยู่กับว่า Hosting ของคุณติดตั้ง Passenger ไว้หรือเปล่า แนะนำให้ติดต่อ Support ของ Hosting เพื่อยืนยันก่อน โดยทั่วไปแผน Business Hosting หรือสูงกว่ามักรองรับ Node.js และ Python ผ่าน cPanel Application Manager

สามารถรัน Express.js, Django, FastAPI บน Shared Hosting ได้ไหม?

ได้ทั้งหมด โดย Express.js ใช้ Node.js setup ส่วน Django และ FastAPI ใช้ Python setup พร้อมไฟล์ passenger_wsgi.py สำหรับ FastAPI ซึ่งเป็น ASGI app อาจต้องใช้ wrapper เพิ่มเติม เช่น Uvicorn หรือ Mangum ขึ้นอยู่กับ Passenger version ที่ Hosting รองรับ

ถ้าแอปใช้ Database ต้องตั้งค่าอย่างไร?

สร้าง Database ใน cPanel ก่อนผ่าน MySQL Databases จากนั้นใส่ Connection String ลงใน Environment Variables ของ Application Manager โดยใช้ localhost เป็น host เนื่องจากทั้ง App และ Database อยู่บน Server เดียวกัน ไม่ต้องใช้ IP ภายนอก ซึ่งทำให้เร็วกว่าและปลอดภัยกว่าด้วย