0
0
Lập trình
NM

Triển khai Django trên AWS EC2: Hướng dẫn chi tiết

Đăng vào 5 tháng trước

• 6 phút đọc

Giới thiệu

Trong bài viết này, chúng ta sẽ khám phá cách triển khai một dự án Django lên máy chủ AWS EC2. Dự án Django của chúng ta sẽ được lưu trữ trên GitHub và chúng ta sẽ thực hiện các bước cần thiết để đưa nó lên EC2, nơi đang chạy hệ điều hành Ubuntu 18.04 LTS.

Mục tiêu bài viết

  • Hướng dẫn từng bước để triển khai dự án Django trên AWS EC2.
  • Cung cấp các mẹo và lưu ý để tránh các lỗi thường gặp.
  • Chia sẻ các thực tiễn tốt nhất và các thông tin về hiệu suất khi làm việc với Django trên AWS.

Mục tiêu cuối cùng

Sau khi hoàn thành, bạn sẽ có một ứng dụng Django hoạt động và có thể truy cập được từ internet.

Các yêu cầu cần thiết

Trước khi bắt đầu, hãy đảm bảo bạn đã chuẩn bị những điều sau:

Danh sách kiểm tra

  1. Dự án Django
    Bạn cần có một dự án Django hoàn chỉnh và hoạt động mà không có lỗi, lưu trữ trong thư mục django_deployment.

  2. Kho lưu trữ GitHub
    Đảm bảo bạn đã đẩy mã nguồn của dự án lên kho GitHub.

  3. Tài khoản AWS
    Bạn cần có tài khoản AWS (miễn phí hoặc có phí) với một EC2 instance đang chạy Ubuntu 18.04 LTS và chấp nhận các yêu cầu công khai từ các phương thức HTTP và HTTPS.

Thiết lập máy chủ EC2

⚠️ Lưu ý: Để tiện cho việc diễn đạt, tôi sẽ gọi EC2 instance là "máy tính đám mây". Từ giờ trở đi, khi nói đến "máy tính đám mây", chúng ta đang đề cập đến EC2 instance.

Sau khi đã tạo máy tính đám mây, bước tiếp theo là tải xuống và cấu hình các gói phần mềm cần thiết để chạy dự án Django.

Cài đặt các phần mềm cần thiết

Để chạy ứng dụng Django, chúng ta cần cài đặt các gói sau:

  1. python3-dev
  2. python3-venv
  3. python-pip
  4. SQLite
  5. git

Cập nhật hệ thống

Trước tiên, hãy cập nhật hệ thống của bạn để có các gói phần mềm mới nhất:

bash Copy
apt-get update
apt-get upgrade

Cài đặt các gói phần mềm

Bây giờ, hãy cài đặt tất cả các gói phần mềm cần thiết:

bash Copy
apt-get install -y python3-dev python3-venv sqlite python-pip git

Tại thời điểm này, chúng ta đã hoàn tất việc thiết lập máy tính đám mây.

Thiết lập dự án Django

Chúng ta sẽ lưu tất cả công việc của mình trong thư mục /usr/local/workspace. Khi đề cập đến thư mục WORKSPACE, tôi muốn nói đến /usr/local/workspace.

Tạo thư mục ứng dụng

Trước tiên, chúng ta sẽ tạo một thư mục apps bên trong thư mục WORKSPACE:

bash Copy
mkdir -p /usr/local/workspace/apps

Clone dự án từ GitHub

Bây giờ, hãy clone dự án Django của chúng ta từ GitHub:

bash Copy
git clone https://github.com/<username>/github_repo.git /usr/local/workspace/apps/django_deployment

Tạo môi trường ảo

Chúng ta sẽ tạo một thư mục env bên trong WORKSPACE để lưu trữ các môi trường ảo cho dự án:

bash Copy
mkdir -p /usr/local/workspace/env

Tiếp theo, hãy tạo môi trường ảo cho dự án Django:

bash Copy
python3 -m venv /usr/local/workspace/env/django_deployment

Cài đặt các yêu cầu

Sau khi tạo môi trường ảo, chúng ta cần cài đặt các yêu cầu từ file requirements.txt:

bash Copy
/usr/local/workspace/env/django_deployment/bin/pip install -r /usr/local/workspace/apps/django_deployment/requirements.txt

Chạy migrations và tạo tệp tĩnh

Bây giờ, hãy chạy migrations và tạo các tệp tĩnh cho dự án Django:

bash Copy
/usr/local/workspace/env/django_deployment/bin/python /usr/local/workspace/apps/django_deployment/manage.py makemigrations
/usr/local/workspace/env/django_deployment/bin/python /usr/local/workspace/apps/django_deployment/manage.py migrate
/usr/local/workspace/env/django_deployment/bin/python /usr/local/workspace/apps/django_deployment/manage.py collectstatic --noinput

Cài đặt và cấu hình máy chủ

Bước tiếp theo là cài đặt và cấu hình supervisornginx để xử lý các yêu cầu và phản hồi chúng.

Cài đặt supervisor và nginx

Chúng ta cần cài đặt hai gói phần mềm này:

bash Copy
apt-get install -y supervisor nginx

Cấu hình supervisor

Supervisor sử dụng các tệp cấu hình để quản lý các tiến trình. Tất cả tệp cấu hình của supervisor được lưu trong thư mục /etc/supervisor/conf.d. Tạo một tệp cấu hình cho supervisor:

bash Copy
nano /etc/supervisor/conf.d/django_deployment.conf

Viết cấu hình vào tệp này:

ini Copy
[program:django_deployment]
environment =
    DEBUG=0
command = /usr/local/workspace/env/django_deployment/bin/uwsgi --http-socket :9000 --wsgi-file /usr/local/workspace/apps/django_deployment/django_server/wsgi.py
directory = /usr/local/workspace/apps/django_deployment
user = root
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/django_deployment.log
stderr_logfile = /var/log/supervisor/django_deployment_err.log

Lưu và thoát khỏi trình soạn thảo.

Bây giờ, hãy cập nhật danh sách tiến trình và khởi động lại các tiến trình:

bash Copy
supervisorctl reread
supervisorctl update
supervisorctl restart django_deployment

Kiểm tra trạng thái

Để kiểm tra trạng thái của các tiến trình, hãy sử dụng lệnh sau:

bash Copy
supervisorctl status

Cấu hình nginx

Nginx cũng sử dụng các tệp cấu hình để quản lý cấu hình máy chủ. Tạo một tệp cấu hình cho nginx:

bash Copy
nano /etc/nginx/sites-available/django_deployment.conf

Viết cấu hình sau vào tệp:

nginx Copy
server {
    listen 80 default_server;

    location /static {
        alias /usr/local/workspace/apps/django_deployment/static;
    }

    location / {
        proxy_pass        http://127.0.0.1:9000/;
        proxy_set_header  Host                $host;
        proxy_set_header  X-Real-IP           $remote_addr;
        proxy_set_header  X-Forwarded-For     $remote_addr;
        proxy_set_header  X-Forwarded-Proto   $scheme;
        proxy_redirect    off;
    }
}

Lưu và thoát khỏi trình soạn thảo. Tiếp theo, hãy tạo liên kết từ tệp cấu hình đã tạo đến thư mục /etc/nginx/sites-enabled:

bash Copy
rm /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/django_deployment.conf /etc/nginx/sites-enabled/django_deployment.conf

Khởi động lại nginx

Cuối cùng, khởi động lại máy chủ nginx:

bash Copy
systemctl restart nginx.service

Cập nhật thay đổi

Cập nhật trên máy tính địa phương và đẩy lên GitHub

Sau khi thực hiện thay đổi, hãy cam kết và đẩy chúng lên GitHub.

Kéo tệp đã cập nhật từ GitHub

Chuyển đến thư mục dự án và kéo tệp đã cập nhật:

bash Copy
cd /usr/local/workspace/apps/django_deployment
git pull

Áp dụng thay đổi

Chạy lại migrations và tạo các tệp tĩnh cho dự án:

bash Copy
/usr/local/workspace/env/django_deployment/bin/python /usr/local/workspace/apps/django_deployment/manage.py makemigrations
/usr/local/workspace/env/django_deployment/bin/python /usr/local/workspace/apps/django_deployment/manage.py migrate
/usr/local/workspace/env/django_deployment/bin/python /usr/local/workspace/apps/django_deployment/manage.py collectstatic --noinput

Khởi động lại tiến trình supervisor

Khởi động lại tiến trình supervisor để áp dụng các thay đổi:

bash Copy
supervisorctl restart django_deployment

Kiểm tra ứng dụng trực tuyến

Cuối cùng, hãy mở trình duyệt và truy cập URL của ứng dụng Django của bạn để xem nó hoạt động như thế nào.

Kết luận

Triển khai ứng dụng Django trên AWS EC2 có thể là một nhiệm vụ đầy thách thức nhưng cũng rất thú vị. Hy vọng rằng hướng dẫn này đã giúp bạn dễ dàng triển khai dự án Django của mình. Hãy thực hiện các bước và chia sẻ kinh nghiệm của bạn với cộng đồng!

Các thực tiễn tốt nhất

  • Luôn giữ cho các gói phần mềm của bạn được cập nhật.
  • Sử dụng requirements.txt để quản lý các gói phụ thuộc.

Lưu ý quan trọng

  • Đảm bảo rằng bạn đã cấu hình tường lửa cho phép truy cập từ bên ngoài.

Câu hỏi thường gặp

  1. Tôi có thể triển khai Django trên AWS miễn phí không?
    Có, bạn có thể sử dụng AWS Free Tier để triển khai ứng dụng Django nhỏ.

  2. Có cần cài đặt thêm phần mềm nào không?
    Bạn chỉ cần cài đặt Python, pip và các thư viện cần thiết như được nêu trong hướng dẫn.

  3. Làm thế nào để khắc phục sự cố nếu ứng dụng không hoạt động?
    Kiểm tra nhật ký của supervisor và nginx để tìm hiểu lý do tại sao ứng dụng không hoạt động.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào