[AWS] AWS에 nginx로 Django 프로젝트 배포하기

남영민·2021년 11월 14일
0

nginx 웹서버를 활용하여 django 프로젝트를 배포해주면
python manage.py runserver 0.0.0.0:8000와 같은 서버 실행문을 ec2마다 들어가서 실행해 줄 필요 없이 서버를 원하는 상태로 띄워두고, 원하는 서버 상태까지 포함하여 ec2 이미지를 만들 수 있는 이점이 있습니다.

아래는 nginx를 활용하여 django 서비스를 배포하는 과정입니다.

sudo apt update
sudo apt-get install python3.pip
// Django를 서비스 하기위함
sudo pip3 install gunicorn
sudo apt-get install supervisor
sudo apt-get install nginx
sudo pip3 install django
// django 프로젝트 생성(nginx가 django에 있는 app.sock 파일을 물고 올라가기 때문에 django 설정을 먼저 해주어야 한다.)
django-admin startproject django_nginx
cd django_nginx
vi django_nginx/settings.py
-> allowed host를 ["*"]로 변경

//config 파일 변경
cd /etc/supervisor/conf.d/
sudo touch django.conf
sudo vi django.conf

----- config file -----

[program:gunicorn]
// unbuntu의 django_nginx 프로젝트에서 진행 하겠다.
directory=/home/ubuntu/django_nginx
// django_nginx.wsgi:application에 있는 socket을 사용하겠다.
command=/usr/local/bin/gunicorn -- workers 3 --bind unix:/home/ubuntu/django_nginx/app.sock django_nginx.wsgi:application
// 자동 시작 및 재시작
autostart=true
autorestart=true
// 로그파일
stderr_logfile=/logs/gunicorn.err.log
stdout_logfile=/logs/gunicorn.out.log

sudo mkdir /logs
sudo supervisorctl reread
-> gunicorn:availabe 이라는 출력이 나와야 함
sudo supervisorctl update
cd /etc/nginx/
// available sites에도 config를 생성
cd sites-available
sudo touch django.conf
sudo vi django.conf

----- config file -----

server {
    listen 80;
    // 이렇게 해주어야 auto-scaling할 때 편함
    server_name *.compute.amazonaws.com;
    location / {
        // socket이 바라보는 주소
        include proxy_params;
        proxy_pass http://unix:/home/ubuntu/django_nginx/app.sock;
    }
}

sudo ln django.conf /etc/nginx/sites-enabled/
sudo service nginx restart

profile
성장하는 개발자

0개의 댓글