본문 바로가기
Programming

Django AWS 배포하기 4

by 하하호호 2022. 1. 16.
반응형

 

 

Django AWS 배포하기 3

requirements.txt 현재 프로젝트에서 필요한 모듈들을 requirements.txt 파일에 저장한다. 작업을 완료한 프로젝트 파일을 Git에 push해준다. AWS를 통해 배포하는 작업.." data-og-host="incomeplus.tistory.com"..

incomeplus.tistory.com

 

 

이전 글에서 실제 서버에 Git에 있는 프로젝트 소스코드를 

업로드하고 접속까지 진행해봤다. 하지만, 이렇게는 서버를

정상적으로 돌릴 수가 없다. 매번 서버에 들어가서 서버에

소스코드를 실행할 수는 없다.

 

 

 

STEP 1. WSGI 설치

서버와 프로젝트를 연결하기 위해서는 WSGI가 필요하다.

WSGI(Web Server Gateway Interface) 

웹 서버 게이트웨이 인터페이스란 녀석인데,

웹 애플리케이션과 서버를 연결해주는 역할을

담당한다. WSGI는 다양한 툴이 있는데, 파이썬에서는

uWSGI 혹은 Gunicorn을 사용한다.

 

python3 -m pip install uwsgi

 

 

STEP 2. uwsgi.ini 설정

WSGI를 사용하기 위해서 *.ini파일을 설정해준다.

vim을 사용해서 uwsgi.ini를 실행해준다.

vim uwsgi.ini

 

프로젝트 내 파일이름은 Django_project/settings.py에서

확인할 수 있다. WSGI_APPLICATION에 할당된 값을 

확인하면 맨 앞에 있는 프로젝트 이름을 기입하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
[uwsgi]
 
chdir=/home/ubuntu/{프로젝트 폴더}
module={프로젝트 내 파일이름}.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/home/ubuntu/{프로젝트 폴더}/django.log
home=/home/ubuntu/{프로젝트 폴더}/venv
virtualenv=/home/ubuntu/{프로젝트 폴더}/venv
socket=/home/ubuntu/{프로젝트 폴더}/uwsgi.sock
chmod-socket=666
cs

 

 

vim에 *.ini 작업을 완료하고 나서 ini 를 서버에 반영해준다.

먼저 uwsgi으로 파이썬으로 작성된 애플리케이션을 연결

하기 위한 core 모듈을 설치해준다.

 

sudo apt install uwsgi-core 

uwsgi --ini uwsgi.ini

 

정상적으로 설정이 반영되면 다음 메세지가 출력된다.

[uWSGI] getting INI configuration from uwsgi.ini

 

STEP 3. 서버 모듈 설치

사용자들 HTTP 프로토콜을 처리할 수 있는 서버 모듈을

설치해준다. 서버모듈은 Nginx를 사용한다.

sudo apt-get install nginx

 

 

STEP 4. 서버 모듈 nginx.conf 설정

서버 모듈이 설치완료되면 Nginx configuration을

다시 설정해준다.

 

sudo vim /etc/nginx/nginx.conf

 

conf 파일을 열어서 "http" 섹션 가장 위에 다음코드를

입력해준다. WSGI 소켓설정을 해줘야 서버랑 WSGI가

정상적으로 연결된다.

http{
    upstream django{
        server unix:/home/ubuntu/mokey.com/uwsgi.sock;
    }
    ## # Basic Settings ##
}

 

STEP 5. 서버 모듈 nginx.sites-enabled 설정

root 계정 권한으로 sites-enabled를 오픈한다.

 

sudo vim /etc/nginx/sites-enabled/default

 

먼저 Location 섹션에서 필요없는 부분을 삭제한다.

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
}

 

upstream Django로 설정해준 부분을 추가해준다.

wsgi방식으로 HTTP 요청을 django로 보내는

설정이다.

 

static폴더를 만들어서 img 혹은 css/js를 추가한

프로젝트의 경우는 static 폴더 설정까지 추가해준다.

 

media 폴더를 만든경우에도 동일하게 Location

설정을 해준다. alias를 사용하고, ";"를 절대 

빠뜨리면 안된다.

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    include /etc/nginx/uwsgi_params;
    uwsgi_pass django;
}

location /static/ {
    alias /home/ubuntu/project_name/project_subname/static/;
}

location /media/ {
    alias 프로젝트 내 media 디렉토리 path;
}

 

STEP 6. Nginx 재시작

이제 모든 설정을 완료했다.

Nginx(서버모듈)을 재시작 해주면, 정상적으로

서버에 접속이 가능하고, HTTP 프로토콜 처리가

작동한다.

 

 

반응형

댓글