Chuyển tới nội dung chính

15.6 — 5. Linux VPS Deployment

Mục tiêu bài học

  • Nắm được ý chính của bài và mối liên hệ với module.
  • Áp dụng được kiến thức vào bối cảnh CRM/.NET backend.
  • Sẵn sàng chuyển sang bài kế tiếp với nền tảng chắc chắn.

Nội dung bài học

15.6.1 — Provision VPS

Nhà cung cấp phổ biến: DigitalOcean Droplet, Vultr, Hetzner Cloud. Cấu hình tối thiểu cho CRM demo: 2 vCPU, 4 GB RAM, Ubuntu 22.04 LTS.

# Sau khi SSH vào VPS
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-v2 nginx certbot python3-certbot-nginx ufw curl

# Thêm user vào docker group
sudo usermod -aG docker $USER

15.6.2 — Firewall với UFW

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

15.6.3 — Nginx Reverse Proxy

# /etc/nginx/sites-available/crm-api
server {
listen 80;
server_name api.crm.yourdomain.com;

location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
sudo ln -s /etc/nginx/sites-available/crm-api /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

15.6.4 — SSL với Let's Encrypt (Certbot)

sudo certbot --nginx -d api.crm.yourdomain.com
# Certbot tự sửa nginx config, thêm HTTPS redirect
# Tự động renew qua systemd timer
sudo systemctl status certbot.timer

15.6.5 — Deploy Docker Compose trên VPS

# Trên VPS: clone repo hoặc copy docker-compose.yml + .env
mkdir -p /opt/crm && cd /opt/crm
# Copy files (hoặc git clone)
docker compose pull
docker compose up -d
docker compose ps

Bài tập áp dụng

  1. Tóm tắt bài học bằng ngôn ngữ của bạn.
  2. Liên hệ nội dung với một tình huống thực tế trong dự án.
  3. Đề xuất một cải tiến cụ thể sau khi học bài này.

Tự kiểm tra

  • Bạn có thể giải thích lại nội dung chính trong 2 phút không?
  • Bạn có ví dụ áp dụng thực tế chưa?
  • Bạn biết bước tiếp theo cần học/triển khai là gì không?

Kết luận

Hoàn thành bài này giúp bạn có góc nhìn đầy đủ hơn trước khi đi tiếp trong module.

Điều hướng