혜야의 코딩스토리

Linux 환경에 Django 프로젝트 배포하기: gunicorn과 supervisor 사용법 본문

꿈 : 멋진 개발자 🧸/Python

Linux 환경에 Django 프로젝트 배포하기: gunicorn과 supervisor 사용법

hyeya_ 2024. 9. 20. 17:37

Windows(개발)에서 작성한 소스 코드를 WSL(Linux/개발)에 배포하거나

WSL(Linux /개발)에서 작성한 소스코드를 AWS(Linux /운영)에 배포하는 단계를 정리해둔 글입니다.


* 먼저 프로젝트의 소스 코드를 배포하려는 서버에 업로드합니다. 

(가상환경 폴더 제외)

 

* 배포서버의 프로젝트의 경로로 이동합니다.

# 제 프로젝트의 경로는 이렇답니다..
cd home/사용자/projects/프로젝트명


* 프로젝트 경로에서 venv를 이용하여 가상환경을 생성합니다.

python3 -m venv 가상환경 이름


* 가상환경을 실행합니다.

source "가상환경 이름"/bin/activate


* python 패키지를 설치합니다.

(requirements.txt파일은 개발서버에서 명령어를 통해 만들면 됩니다.)

pip install -r requirements.txt


* gunicorn을 설치합니다.

pip install gunicorn


* supervisor를 설치합니다.

sudo apt-get update
sudo apt-get install supervisor

   
* supervisor conf 파일을 생성합니다.

deactivate (가상환경 실행 종료)
cd /etc/supervisor/conf.d

 

* supervisor conf 파일에 아래 정보를 입력 후 저장합니다.

sudo vi 프로젝트명.conf
[program:프로젝트명]
command=/home/사용자/프로젝트명/가상환경 이름/bin/gunicorn 프로젝트명.wsgi:application --bind 127.0.0.1:8001
directory=/home/사용자/프로젝트명
user=사용자
autostart=true
autorestart=true
stdout_logfile=/var/log/프로젝트명/gunicorn.log
stderr_logfile=/var/log/프로젝트명/gunicorn.err.log
environment=LANG="ko_KR.UTF-8",LC_ALL="ko_KR.UTF-8"


* 로그 폴더를 생성합니다.

cd /var/log
sudo mkdir 프로젝트명
sudo chown 사용자.사용자 ./프로젝트명/


* supervisor를 적용합니다.

sudo supervisorctl reread
sudo supervisorctl update

 

* supervisor를 실행합니다.

sudo supervisorctl start 프로젝트명

 

*가장 자주 쓰는 명령어입니다.

sudo supervisorctl restart all


* 실시간으로 에러 로그를 확인할 수 있습니다.

tail -f /var/log/프로젝트명/gunicorn.err.log

 

 



설치 끝! 개발 시작  🍀