Django
Deploy방법
#
Find similar titles
Structured data
- Category
- Programming
Table of Contents
내가 만든 Django 어플리케이션을 서비스 하기 #
Deploy는 배포라는 뜻으로 웹 어플리케이션을 사용자가 볼 수 있도록 서비스를 시작하거나 기존 서비스를 업데이트 하는 것을 말한다. 여기서는 Django 어플리케이션을 웹으로 볼 수 있도록 서비스 하는 방법을 몇가지 소개한다.
Django - Apache 연동 #
예전에 많이 사용하던 방식으로 Apache와 mod_wsgi 를 통해 서비스 하는 방법이 있다.
mod_wsgi 설치 #
RedHat 계열 (RedHat, CentOS, Fedora 등)
yum install mod_wsgi
apt-get install libapache2-mod-wsgi
소스코드 컴파일
시스템에 설치된 기본 Apache나 Python을 이용하지 않을 경우 소스코드 컴파일을 통해 mod_wsgi 모듈을 컴파일 할 수 있다.
mod_wsgi 에서 소스코드를 다운 받은 후 압축을 푼다.
./configure --prefix=[경로] \
--with-apxs=[Apache apxs 위치] \
--with-python=[Python 실행 위치]
wsgi.py 작성 #
import os, sys
sys.path.append('/data')
sys.path.append('/data/examplesite/')
os.environ['DJANGO_SETTINGS_MODULE']='examplesite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Apache conf 추가 #
아래는 VirtualHost 설정을 이용한 예시이다.
<VirtualHost *:80>
ServerName example.com
WSGIScriptAlias / /data/examplesite/wsgi.py
Alias /static/admin/ /usr/local/lib/python2.7/site-packages/django/contrib/admin/static/admin/
Alias /static/ /data/codaproject/codasite/codaParser/static/
ErrorLog /var/log/httpd/error_coda.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#LogLevel warn
LogLevel info
CustomLog /var/log/httpd/access_coda.log combined
</VirtualHost>
Gunicorn 이용 #
Gunicorn은 Python용 WAS로 설치 및 운영이 간단하여 많이 사용되고 있다.
Gunicorn 설치 #
python용 WAS인 gunicorn을 설치한다. pip가 설치되어 있다면 아래 커맨드로 간단하게 설치 가능하다. (인터넷이 되지 않는 환경이라면 소스코드를 직접 내려받아 설치한다. http://gunicorn.org )
pip install gunicorn
Whitenoise 설치(Optional) #
whitenoise는 staticfile서비스를 도와주는 라이브러리로 웹 서버에서 static file 경로를 수동으로 잡아줄 경우 설치할 필요가 없다.
pip install whitenoise
whitenoise를 사용하려면 wsgi.py또한 아래 코드를 추가하여 수정하여준다.
try:
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(application)
except ImportError:
pass
기동, 재기동 스크립트 작성 #
사용자 환경에 맞춰 아래 스크립트의 경로 및 이름등을 바꿔 사용한다. 아래와 같이 설정할 경우 8080포트로 웹 서비스가 시작된다. 시작되지 않는다면 프로젝트 홈에 적히는 로그인 nohup.out 파일을 확인해보고 오류를 수정하면 된다.
startup.sh
#!/usr/bin/env sh
set -e
cd /home/site/mysite
nohup gunicorn \
mysite.wsgi:application -b 0.0.0.0:8080 \
-t 3600 --log-level DEBUG --log-file - &
restart.sh
#!/usr/bin/env sh
set -e
killall gunicorn
cd /home/site/mysite
nohup gunicorn \
mysite.wsgi:application -b 0.0.0.0:8080 \
-t 3600 --log-level DEBUG --log-file - &
shutdown.sh
#!/usr/bin/env sh
set -e
killall gunicorn
웹 서버 연동 #
위와 같이 설정하면 설정한 포트로 바로 서비스가 되며 필요시 웹 서버와 연동하여 사용 가능하다.