Skip to content

Django Deploy방법 #
Find similar titles

Structured data

Category
Programming

내가 만든 Django 어플리케이션을 서비스 하기 #

Deploy는 배포라는 뜻으로 웹 어플리케이션을 사용자가 볼 수 있도록 서비스를 시작하거나 기존 서비스를 업데이트 하는 것을 말한다. 여기서는 Django 어플리케이션을 웹으로 볼 수 있도록 서비스 하는 방법을 몇가지 소개한다.

Django - Apache 연동 #

예전에 많이 사용하던 방식으로 Apachemod_wsgi 를 통해 서비스 하는 방법이 있다.

mod_wsgi 설치 #

RedHat 계열 (RedHat, CentOS, Fedora 등)

yum install mod_wsgi

Debian 계열 (Ubuntu 등)

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은 PythonWAS로 설치 및 운영이 간단하여 많이 사용되고 있다.

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

웹 서버 연동 #

위와 같이 설정하면 설정한 포트로 바로 서비스가 되며 필요시 웹 서버와 연동하여 사용 가능하다.

Suggested Pages #

0.0.1_20210630_7_v33