이 포스트는 완성된 로컬 Django 프로젝트만 있는 상태에서 이를 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 --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
프로젝트 폴더 생성 후 이동
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
다음 유튜브 영상을 참고하였습니다.
https://www.youtube.com/watch?v=oGQ1HteFYnQ
(영상 24분부터가 아래 내용입니다.)
파이썬 프로젝트와 서버를 이어줄 uwsgi를 설치하고 실행합니다. uwsgi를 통해 많은 요청을 처리할 수 있습니다.
pip install uwsgi
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 --ini uwsgi.ini
nginx 설치
sudo apt-get install nginx
설정파일 수정
sudo vi /etc/nginx/nginx.conf
http 안에 다음과 같은 문장 삽입
upstream django{
server unix:{프로젝트 폴더 절대경로}/uwsgi.sock;
}
sudo vi /etc/nginx/sites-enabled/default
include /etc/nginx/uwsgi_params;
uwsgi_pass django;
location /static/ {
alias {static 디렉토리 절대경로}/;
}
sudo service nginx restart
참고사항
- 소스코드 변경이나 서버 재구동시 uwsgi도 다시 실행해야함.