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
-
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ụcdjango_deployment. -
Kho lưu trữ GitHub
Đảm bảo bạn đã đẩy mã nguồn của dự án lên kho GitHub. -
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:
python3-devpython3-venvpython-pipSQLitegit
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
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
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
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
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
mkdir -p /usr/local/workspace/env
Tiếp theo, hãy tạo môi trường ảo cho dự án Django:
bash
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
/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
/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 supervisor và nginx để 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
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
nano /etc/supervisor/conf.d/django_deployment.conf
Viết cấu hình vào tệp này:
ini
[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
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
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
nano /etc/nginx/sites-available/django_deployment.conf
Viết cấu hình sau vào tệp:
nginx
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
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
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
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
/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
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
-
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ỏ. -
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. -
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.