Hướng Dẫn Deploy Ứng Dụng Web Lên VPS Với Nginx Chi Tiết A-Z

Deploy (triển khai) ứng dụng web lên VPS là một kỹ năng quan trọng mà mọi lập trình viên đều cần nắm vững. Bài viết này sẽ hướng dẫn bạn deploy ứng dụng web lên VPS sử dụng Nginx từ A đến Z, phù hợp cho cả người mới bắt đầu.

Chuẩn bị những gì bạn cần

  • Một VPS chạy Ubuntu 20.04/22.04
  • Quyền truy cập SSH vào VPS
  • Tên miền (domain) đã trỏ DNS về IP VPS
  • Ứng dụng web đã sẵn sàng (Node.js, Python, PHP…)

Bước 1: Cập nhật hệ thống

sudo apt update && sudo apt upgrade -y

Bước 2: Cài đặt Nginx

sudo apt install nginx -y

Sau khi cài đặt, khởi động và bật Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Bước 3: Cài đặt SSL miễn phí với Certbot

Certbot giúp bạn cài đặt chứng chỉ SSL miễn phí từ Let’s Encrypt:

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

Bước 4: Cấu hình Nginx cho ứng dụng

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

sudo nano /etc/nginx/sites-available/yourapp

Thêm nội dung cấu hình (ví dụ cho Node.js app):

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    
    location / {
        proxy_pass http://localhost:3000;
        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;
    }
}

Bước 5: Kích hoạt cấu hình

sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Bước 6: Thiết lập Firewall

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable

Bước 7: Thiết lập Auto-Renew SSL

sudo certbot renew --dry-run

Certbot sẽ tự động gia hạn SSL, nhưng hãy kiểm tra cron job để đảm bảo:

sudo systemctl list-timers | grep certbot

Bước 8: Cài PM2 để chạy ứng dụng Node.js

npm install -g pm2
pm2 start app.js --name myapp
pm2 save
pm2 startup

PM2 giúp ứng dụng của bạn chạy liên tục, tự khởi động lại khi có lỗi và quản lý process dễ dàng.

Lời kết

Việc deploy ứng dụng web lên VPS không quá phức tạp nếu bạn nắm vững các bước cơ bản. Hãy bắt đầu từ việc deploy một ứng dụng đơn giản, sau đó dần dần nâng cấp với Docker, CI/CD và các công cụ tự động hóa khác. Chúc bạn thành công!