Django 프로젝트 클라우드 서버 배포(nginx,uwsgi,git 활용)
이 포스트는 완성된 로컬 Django 프로젝트만 있는 상태에서 이를 Git을 통해 원격디렉토리에 저장하고, 처음 생성된 클라우드 서버 환경에 배포하는 것을 가정하고 있습니다.
프로젝트 관련 준비
Git 설정 및 원격저장소에 저장
프로젝트가 로컬(개발PC환경)에서 runserver로 잘 동작되는 것이 확인되었다면 git에 올리는 작업을 합니다.
프로젝트가 로컬(개발PC환경)에서 runserver로 잘 동작되는 것이 확인되었다면 git에 올리는 작업을 합니다.
우선 django 설정이 모든 host 요청을 허용하는지 확인해주세요.
[참고]http://vezi95.blogspot.com/2016/06/django-debug-false-allowedhosts.html
-
Django 프로젝트 위치에서 git init 명령어 실행
저의 경우 django-proj 밑에 가상환경 폴더와 웹프로젝트 폴더가 있었습니다(아래 이미지 참고). 깃을 설치하고 Git Bash를 통해 django-proj 위치에서git init
을 실행하여 git 사용 준비를 합니다. -
.gitignore 파일을 생성하고 가상환경 디렉토리 적기
.gitignore 파일을 프로젝트 위치에서 생성합니다.
touch .gitignore
.gitignore 파일을 열어 가상환경 디렉토리를 추가합니다.
저는 vi를 활용했습니다.
vi .gitignore
.gitignore에 가상환경 디렉토리를 적은 후 저장합니다. 저의 경우venv/
를 입력하면 됩니다.
-
파이썬 패키지 목록 생성하기
터미널을 열어 프로젝트 가상환경을activate
합니다.
pip freeze > requirements.txt
를 실행하여 패키지 리스트를 생성합니다. -
다시 Git Bash에서
git add .
명령어 실행 후git commit
진행합니다. -
원격저장소에 프로젝트 소스 올리기
원격 저장소를 생성하고 push 합니다. 아래 블로그를 참고해주세요.
https://www.zerocho.com/category/Git/post/581042fdcae2d100152ceae6
로컬 환경 파악하기
개발환경과 배포 환경을 맞추기 위해 파이썬 버전을 확인합니다.
- 터미널에서 python 버전을 확인합니다.
저는 가상환경을 만들 때 파이썬 버전을 따로 지정하지 않고 만들었기 때문에 python 명령어에 기본적으로 실행되는 파이썬 버전을 조회합니다. 저는 3.9.0 버전이였습니다.
python --version
서버 관련 준비
파이썬 관련 셋팅
-
apt-get 최신버전 업데이트 하기
sudo apt-get update
sudo apt-get upgrade
-
파이썬 설치하기
제 클라우드 서버 OS는 ubuntu-16.04이기 때문에 기본으로 설치되어 있는 파이썬이 있습니다. 하지만 제 개발PC와 버전이 다르므로 아래 링크를 참고하여 파이썬 설치 및 기본 파이썬 설정을해줍니다.
https://dlehdgml0480.tistory.com/8
-
pip 설치하기
apt-get install python3-pip
배포
Git에서 프로젝트 받아오기
-
프로젝트 폴더 생성 후 이동
mkdir django-proj
cd django-proj
-
Git clone을 통해 프로젝트 소스 받아오기
우분투는 git이 기본적으로 설치되어 있습니다.
git clone [저장소 주소]
-
git에서 받아온 폴더에서 프로젝트 폴더로 옮기기
cd [git으로 저장된 폴더이름]
mv [프로젝트 폴더 이름. 저의 경우 webproj]/ ..
mv requirements.txt ..
cd ..
rm -r [git으로 저장된 폴더이름]
가상환경 관련 설정
- 가상환경 만들기
python -m venv venv
- 가상환경을 실행
source venv/bin/activate
- 필요한 파이썬 패키지를 설치
pip install -r requirements.txt
uwsgi
apt-get 최신버전 업데이트 하기
sudo apt-get update
sudo apt-get upgrade
파이썬 설치하기
제 클라우드 서버 OS는 ubuntu-16.04이기 때문에 기본으로 설치되어 있는 파이썬이 있습니다. 하지만 제 개발PC와 버전이 다르므로 아래 링크를 참고하여 파이썬 설치 및 기본 파이썬 설정을해줍니다.
https://dlehdgml0480.tistory.com/8
pip 설치하기
apt-get install python3-pip
Git에서 프로젝트 받아오기
-
프로젝트 폴더 생성 후 이동
mkdir django-proj
cd django-proj
-
Git clone을 통해 프로젝트 소스 받아오기
우분투는 git이 기본적으로 설치되어 있습니다.
git clone [저장소 주소]
-
git에서 받아온 폴더에서 프로젝트 폴더로 옮기기
cd [git으로 저장된 폴더이름]
mv [프로젝트 폴더 이름. 저의 경우 webproj]/ ..
mv requirements.txt ..
cd ..
rm -r [git으로 저장된 폴더이름]
가상환경 관련 설정
- 가상환경 만들기
python -m venv venv
- 가상환경을 실행
source venv/bin/activate
- 필요한 파이썬 패키지를 설치
pip install -r requirements.txt
uwsgi
다음 유튜브 영상을 참고하였습니다.
https://www.youtube.com/watch?v=oGQ1HteFYnQ
(영상 24분부터가 아래 내용입니다.)
파이썬 프로젝트와 서버를 이어줄 uwsgi를 설치하고 실행합니다. uwsgi를 통해 많은 요청을 처리할 수 있습니다.
- uwsgi 설치
pip install uwsgi
- 설정파일 작성
프로젝트 폴더에서(==manage.py 파일이 있는 위치)에서vi uwsgi.ini
로 에디터 실행 후 다음과 같이 내용 작성[uwsgi] chdir={프로젝트 폴더 절대경로} module={프로젝트 내 파일이름}.wsgi:application master=True pidfile=/tmp/project-master.pid vacuum=True max-requests=5000 daemonize={프로젝트 폴더 절대경로}/django.log home={프로젝트 가상환경 폴더 절대경로} virtualenv={프로젝트 가상환경 폴더 절대경로} socket={프로젝트 폴더 절대경로}/uwsgi.sock chmod-socket=666
- 작성된 파일을 바탕으로 uwsgi를 실행합니다.
uwsgi --ini uwsgi.ini
nginx
-
nginx 설치
sudo apt-get install nginx
-
설정파일 수정
sudo vi /etc/nginx/nginx.conf
http 안에 다음과 같은 문장 삽입
upstream django{
server unix:{프로젝트 폴더 절대경로}/uwsgi.sock;
}
- nginx default 설정 변경
sudo vi /etc/nginx/sites-enabled/default
server에 location / 에 다음 내용 추가
include /etc/nginx/uwsgi_params;
uwsgi_pass django;
server에 다음 내용 추가
location /static/ {
alias {static 디렉토리 절대경로}/;
}
- 서버 구동
sudo service nginx restart
80포트가 열려있는지 확인 필수
참고사항
- 소스코드 변경이나 서버 재구동시 uwsgi도 다시 실행해야함.
Author And Source
이 문제에 관하여(Django 프로젝트 클라우드 서버 배포(nginx,uwsgi,git 활용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@du-du-zi/Django-프로젝트-클라우드-서버-배포nginxuwsgigit-활용저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)