Framework/Django

[Dj] 장고 배포 ④ : uwsgi와 nginx 설치 및 연결

QUERY 2021. 7. 25. 00:21

장고 로고


1. 가상환경 설치

1-1. virtualenv 설치

▶ 가상환경 프로그램 virtualenv를 설치해줍니다.

▶ 중간에 '계속 진행하시겠습니까?'라는 물음에 Y입력 후 엔터.

 


1-2. venv라는 이름의 virtualenv 생성

▶ venv라는 이름의 가상환경을 만들어줍니다.

(기호에 따라 이름은 바꾸셔도 상관없습니다.)

 


1-3. venv 가상환경 확인

▶ 프로젝트 폴더 안에 "venv"라는 폴더가 보인다면 제대로 설치가 된 것입니다.

 


2. 가상환경 실행

▶ virtualenv 가상환경을 실행하는 명령어입니다.

source venv/bin/activate

 

▶ 위와 같이  (venv)가 앞에 생겼다면, 가상환경이 제대로 실행된 것입니다. 

 


3. 필요 프로그램 일괄 설치

▶ 본인의 장고 프로젝트에 필요한 프로그램 목록 파일인 requirements.txt 파일을 실행해 프로그램들을 일괄 설치해주겠습니다.

▶ 본인의 장고 프로젝트에 사용된/필요한 프로그램들을 일괄 설치하는 모습입니다.

 


4. 로컬 서버 실행

▶ 장고 프로젝트 개발단계에서 로컬 서버로 테스트해봤던 것처럼,

인스턴스의 로컬에서도 서버를 실행해 테스트 해볼 수 있다.

명령어 python manage.py runserver 0.0.0.0:8000 입력. 

 


5. 로컬 서버 실행 확인

▶ 웹브라우저를 켜고, 본인 인스턴스의 IP주소와 그 끝에 :8000을 입력해보세요.

(이때, 본인 인스턴스의 IP주소는, 퍼블릭 IP를 뜻하며, 탄력적IP를 할당 받은 경우, 탄력적IP를 의미합니다.)

 

▶ 본인의 장고 프로젝트에 문제가 없다면, 잘 실행되는 것을 확인하실 수 있습니다.

 

▶ 확인이 끝났다면, Ctrl + C 로 서버를 꺼주세요.

 


6. uwsgi  설치

▶ 서버와 웹 애플리케이션 사이를 통신해 주는 인터페이스 uwsgi를 설치해줍니다.

 


6-1 uwsgi.ini 파일 생성

▶ 기본적으로 설치된 vim 이라는 에디터를 활용해서 uwsgi.ini 파일을 생성해줍니다.

(기존에 이미 파일이 있는 경우, 같은 명령어로 파일을 수정할 수 있습니다.)

(명령어로 vim 혹은 줄여서 vi라고 써도 무방합니다.)  

▶ uwsgi.ini 파일을 생성하면 위와 같은 화면이 나옵니다.

▶ 위와 같이 입력해줍니다.

[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

▶ 이때, "프로젝트 폴더" 명은 말 그대로 github에서 pull 받은 프로젝트의 폴더 명을 입력하시면 됩니다.

필자의 경우, 프로젝트 폴더명이 sns이기 때문에 프로젝트 폴더에 sns를 입력해주겠습니다.

 

▶ 한편, "프로젝트 내 파일이름"이란, settings.py 파일이 있는 폴더의 이름을 입력해주시면 됩니다.

필자의 경우, settings.py 파일이 있는 폴더 이름 역시 sns이기 때문에 sns을 입력해주겠습니다.

 

▶ 주의사항: 절대 오타나지 않도록 주의하세요.

▶ 작성을 모두 완료하셨다면, esc 버튼을 누른 후,

위 내용을 저장하고 종료하겠다는 명령어인 :wq 를 누르고 엔터.

 


6-2. uwsgi 실행 (연결)

▶ 웹 애플리케이션과 웹 서버를 연결해주는 인터페이스인 uwsgi를 실행하겠습니다.

[uWSGI] getting INI configuration from uwsgi.ini 라는 메시지가 뜨면 성공입니다.

 


7. nginx 설치

▶ http 프로토콜 요청을 처리할 서버인 Nginx를 설치해줍니다.

▶ 중간에 "계속 진행하시겠습니까?"라는 물음에 Y 입력 후 엔터.

 


7-1. nginx.conf 파일 수정

▶ 위 명령어로 nginx.conf 파일을 열어줍니다.

▶ 키보드 커서를 계속 내리다가 http { 내부 # Basic Settings 위에, 위 내용을 추가해줍니다.

키보드 i를 누르시면, INSERT(삽입) 모드로 변경됩니다.

 

▶ 이때, uwsgi.sock 뒤에 세미콜론 ; 를 잊지말고 반드시 적어주셔야 합니다.

▶ 모두 작성이 완료되면, esc 버튼을 누르신 뒤, :wq 엔터를 누르시면 파일이 저장 후 종료됩니다.

 


7-2. sites-enabled/default 수정

▶ 위 명령어로 default 파일을 열어줍니다.

▶ default 파일의 모습입니다.

▶ 키보드 방향키를 사용해 아내로 내리시다가, location / { 안에 위치한

try_files $uri $uri/ =404;를 발견하셨다면 멈추세요.

해당 내용은 필요없기 때문에 삭제하겠습니다.

해당 줄에 커서를 가져가신 뒤, dd를 누르시면 해당 줄 전체가 삭제됩니다.

▶ 그리고 그 자리에 위와 같이 정보를 입력하시면 됩니다.

 

▶ 이때, static과 media는 각자의 장고 프로젝트 환경에 맞게 경로를 설정해주시면 됩니다.

(이번에도 경로 끝에 붙어있는 세미콜론을 반드시 잊지말고 적어주셔야 합니다.)

▶ 작성을 완료하셨다면, esc를 누르고 :wq를 입력 후, 엔터.

 


7-3. nginx 재시작

▶ 마지막으로 nginx를 재시작해주면 장고 프로젝트의 배포가 완료됩니다.

 


8. 서버 확인

▶ 웹브라우저를 열고, 본인의 장고 프로젝트가 제대로 배포됐는지 확인해보세요.

이번엔 인스턴스의 로컬포트인 :8000 없이,

인스턴스의 퍼블릭 IP(탄력적 IP)만 입력하시면 본인의 장고 프로젝트를 확인하실 수 있습니다.

이 주소로 접속하신다면, 인터넷이 가능한 곳이라면, 지구 어디서도 본인의 웹 앱에 접속하실 수 있습니다.

 


9. 배포 성공

▶ 이로써 장고 프로젝트의 배포를 성공적으로 모두 마치게 되었습니다. 수고하셨습니다. 그리고 축하드립니다.

 


※ 참고: 퍼블릭IP와 도메인 주소를 연결하는 작업은 다른 포스팅에서 다루도록 하겠습니다.