5 Bước Cấu Hình VPS Chạy Ứng Dụng Python/Node.js

Bạn đã hoàn thành việc viết code (coding) trên máy cá nhân (localhost) nhưng đang loay hoay không biết làm sao để đưa sản phẩm đến tay người dùng? Việc thiết lập VPS chạy ứng dụng Python/Node.js chính là mảnh ghép cuối cùng để biến những dòng code khô khan thành một website hoặc bot hoạt động thực tế. Bài viết này sẽ hướng dẫn bạn quy trình Deploy (triển khai) chuẩn kỹ thuật, giúp ứng dụng hoạt động ổn định, tự động khởi động lại khi gặp lỗi và bảo mật tuyệt đối với chi phí tối ưu nhất.

Tại sao Shared Hosting không chạy được Python/Node.js mà cần VPS?

Trước khi đi vào kỹ thuật, chúng ta cần làm rõ lý do tại sao môi trường VPS lại là bắt buộc đối với các ứng dụng hiện đại viết bằng JavaScript (Node.js) hay Python.

  • Quyền truy cập Root: Bạn cần quyền cài đặt môi trường (Runtime), npm, pip mà Hosting thường (cPanel) không cung cấp.
  • Tác vụ nền (Long-running Process): Các ứng dụng Node/Python cần chạy liên tục (listening). Hosting thường sẽ "kill" các tiến trình này để tiết kiệm tài nguyên.
  • Tùy chỉnh cổng (Port): VPS cho phép bạn mở/đóng port tùy ý (3000, 5000, 8000) và cấu hình Firewall.

Chuẩn bị gì trước khi Deploy?

Để quá trình cài đặt diễn ra suôn sẻ, bạn hãy chuẩn bị sẵn sàng các tài nguyên sau:

  • VPS: Cấu hình tối thiểu 1 Core CPU, 1GB RAM. Nên dùng OS Ubuntu 20.04 LTS hoặc 22.04 LTS.
  • Tên miền: Đã trỏ DNS (A Record) về IP của VPS.
  • Source Code: Đã đẩy lên GitHub/GitLab.
  • Phần mềm SSH: PuTTY (Windows) hoặc Terminal (Mac/Linux).

Bước 1: Cài đặt môi trường (Environment Setup)

Đăng nhập vào VPS và chạy lệnh cập nhật hệ thống:

sudo apt update && sudo apt upgrade -y
sudo apt install git -y

Đối với ứng dụng Node.js

Sử dụng script của NodeSource để cài bản Node.js 18 (LTS) ổn định nhất:

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

Kiểm tra cài đặt: node -vnpm -v.

Đối với ứng dụng Python

Cài đặt pip và công cụ tạo môi trường ảo (venv):

sudo apt install python3-pip python3-venv -y

Bước 2: Đưa Code lên VPS và Cài đặt thư viện

Clone mã nguồn từ GitHub về thư mục web (ví dụ /var/www):

cd /var/www
git clone https://github.com/username/my-app.git
cd my-app

Cài đặt thư viện Node.js

npm install

Cài đặt thư viện Python

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Bước 3: Giữ App chạy ngầm 24/7 (Process Manager)

Để ứng dụng không bị tắt khi bạn thoát SSH, chúng ta cần Process Manager.

Với Node.js: Sử dụng PM2

sudo npm install pm2 -g
pm2 start app.js --name "my-node-app"
pm2 startup && pm2 save

Với Python: Sử dụng Gunicorn & Systemd

Tạo file service để quản lý ứng dụng Python:

sudo nano /etc/systemd/system/my-python-app.service

Dán nội dung sau vào (sửa đường dẫn cho phù hợp):

[Unit] Description=Gunicorn instance to serve my-python-app After=network.target [Service] User=root WorkingDirectory=/var/www/my-app Environment="PATH=/var/www/my-app/venv/bin" ExecStart=/var/www/my-app/venv/bin/gunicorn --workers 3 --bind unix:my-app.sock -m 007 app:app [Install] WantedBy=multi-user.target

Lưu lại (Ctrl+O, Enter) và thoát (Ctrl+X). Sau đó khởi chạy:

sudo systemctl start my-python-app
sudo systemctl enable my-python-app

Bước 4: Cài đặt Nginx làm Reverse Proxy

Nginx sẽ đón khách từ cổng 80 và chuyển vào ứng dụng của bạn.

sudo apt install nginx -y

Tạo file cấu hình mới:

sudo nano /etc/nginx/sites-available/my-app

Nội dung cấu hình:

server { listen 80; server_name tenmien.com www.tenmien.com; location / { proxy_pass http://localhost:3000; # Sửa thành port app của bạn proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }

Kích hoạt và khởi động lại Nginx:

sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Bước 5: Cài SSL miễn phí (HTTPS) với Certbot

Để có ổ khóa xanh bảo mật, hãy chạy lệnh sau:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d tenmien.com -d www.tenmien.com

Chọn 2 (Redirect) khi được hỏi để tự động chuyển hướng sang HTTPS.

Các lỗi thường gặp và cách xử lý

⚠️
Lỗi 502 Bad Gateway: Thường do App chưa chạy hoặc cấu hình Port trong Nginx bị sai. Hãy kiểm tra lại pm2 status.
  • Lỗi EADDRINUSE: Cổng đã bị chiếm dụng. Hãy tìm và tắt tiến trình cũ.
  • Permission Denied: Lỗi quyền truy cập file. Dùng lệnh chown để cấp quyền cho user.

Kết luận

Vậy là bạn đã hoàn thành việc cấu hình VPS chạy ứng dụng Python/Node.js một cách chuyên nghiệp. Quy trình 5 bước này là nền tảng vững chắc để bạn phát triển các hệ thống lớn hơn sau này. Nếu gặp khó khăn, hãy để lại bình luận bên dưới nhé!

Comments

Popular posts from this blog

Website là gì? Cách hoạt động của website cho người mới A-Z

Thuê VPS Giá Rẻ Ở Đâu? 10+ Lựa Chọn Uy Tín Nhất 2025

3 cách tạo Website Bán hàng 2025 (Không cần biết Code)