Amazon Linux에서는 yum 패키지 관리자를 사용하여 패키지를 설치해야 합니다. 다음은 Amazon Linux에서 Nginx와 필요한 패키지를 설치하고 Django와 연동하는 방법입니다.
1. Nginx 설치
2. Gunicorn 설치
Django 애플리케이션을 서빙하기 위해 Gunicorn을 설치합니다. Gunicorn은 Python WSGI HTTP 서버로, Nginx와 함께 사용할 수 있습니다.
3. Django 프로젝트 설정
Django 프로젝트의 설정 파일(settings.py)을 수정하여 정적 파일을 제공할 수 있도록 설정합니다.
4. Django 애플리케이션 마이그레이션 및 정적 파일 수집
python manage.py collectstatic
python manage.py migrate
이 명령어는 데이터베이스 스키마를 설정하거나 업데이트합니다. 즉, Django 모델을 기반으로 데이터베이스 테이블을 생성하거나 변경합니다.
- 역할: 데이터베이스 마이그레이션을 적용하여, 모델의 변경 사항을 데이터베이스에 반영합니다.
- 실행 시간: 모델을 변경한 후, 새 앱을 추가한 후, 프로젝트를 처음 설정할 때 실행합니다.
- 명령어 실행 과정:
- Django는 migrations 디렉토리에 있는 마이그레이션 파일을 확인합니다.
- 필요한 마이그레이션을 데이터베이스에 적용합니다
python manage.py collectstatic
이 명령어는 Django 프로젝트의 모든 정적 파일(static files)을 한 곳으로 모아줍니다. 이는 배포 환경에서 정적 파일을 효율적으로 서빙하기 위해 필요합니다.
- 역할: 각 앱과 프로젝트의 static 디렉토리에 있는 모든 정적 파일을 모아 설정된 STATIC_ROOT 디렉토리로 복사합니다.
- 실행 시간: 프로젝트를 배포할 때, 정적 파일을 변경한 후 실행합니다.
- 명령어 실행 과정:
- Django는 각 앱의 static 디렉토리를 검색하여 모든 정적 파일을 찾습니다.
- 설정된 STATIC_ROOT 디렉토리로 모든 정적 파일을 복사합니다.
5. Gunicorn 설정 및 실행
Gunicorn을 사용하여 Django 애플리케이션을 실행합니다. 다음 명령어를 사용하여 Gunicorn을 백그라운드에서 실행합니다.
6. Nginx 설정
Nginx 설정 파일을 수정하여 Django 애플리케이션과 연동합니다. 아래 설정은 HTTPS를 사용하고, HTTP 요청을 HTTPS로 리디렉션하는 설정입니다.
- Nginx 설정 파일 열기:
sudo nano /etc/nginx/conf.d/your_project.conf
- Nginx 설정 추가: 아래 내용을 설정 파일에 추가합니다. your_domain_or_IP, your_project 및 기타 경로를 실제 값으로 변경하세요.
server {listen 80;server_name your_domain_or_IP;
location / {return 301 https://$host$request_uri;}}
server {listen 443 ssl;server_name your_domain_or_IP;
ssl_certificate /etc/ssl/certs/your_certificate.crt;ssl_certificate_key /etc/ssl/private/your_private_key.key;
location = /favicon.ico { access_log off; log_not_found off; }location /static/ {root /home/ec2-user/your_project;}
location / {include proxy_params;proxy_pass http://unix:/home/ec2-user/your_project/your_project.sock;}} - Nginx 설정 테스트 및 재시작: Nginx 설정을 테스트하고, 문제가 없으면 재시작합니다
sudo nano /etc/nginx/proxy_params
내용추가
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;
Nginx 설정 파일 수정
이미 추가되어 있는 설정을 확인하고, 필요 시 수정합니다.
Nginx 설정 파일 열기
파일 내용이 다음과 같아야 합니다:
인증서 생성해야함 -240619