본문 바로가기
Programming/python

[Django] Django와 apache 연동하기 [우분투]

by 유주원 2015. 10. 28.

Django에서 apache 서버를 웹서버로 연동하기 위해서는 mod_wsgi라는 것을 설치해야 한다.

wsgi란 Web Server Gateway Interface의 약자로써 웹서버와 웹어플리케이션 간의 인터페이스를 제공해 주는 프레임워크이다.

여기서는 apache 서버와 Django 간의 인터페이스를 담당한다.

물론 wsgi 설정 없이 Django 자체 웹서버를 이용해도 되긴 하지만, 아무래도 Django 자체 웹서버는 불안한 면이 있기 때문에 apache 서버를 이용해 보기로 한다.


우선 아파치 설치.

$> sudo apt-get install apache2


아파치 설치가 완료되었으면 이제 mod-wsgi 설치 (python3 같은 경우에는 libapache2-mod-wsgi-py3를 깔아야 한다고 한다. 해보지는 않음)

$> sudo apt-get install libapache2-mod-wsgi


설치가 완료되었으면 /etc/apache2 폴더가 생성된 것을 확인할 수 있고, /etc/apache2/mods-available 폴더에 wsgi.conf 파일과 wsgi.load 파일이 생성된 것을 확인할 수 있다.


그럼 이제 실제 연동될 포트를 설정하고, wsgi를 연결해 보도록 하자. 포트 설정을 위해서는 /etc/apache2 폴더의 ports.conf 파일을 수정해야 한다.

ports.conf 파일에 아래와 같이 포트를 추가하자.


Listen [추가하고 싶은 포트]

# ex) Listen 9999


위와 같이 포트를 추가했다면 이제 sites-available 폴더 안에 있는 000-default.conf 파일을 열자.

이 파일을 열어서 추가한 포트에 설정을 해주어야 한다.

아마 기존에 <VirtualHost *:80> .... </VirtualHost> 와 같이 작성이 되어 있을 것이다.

80은 아파치 기존 포트이기 때문에 건드리지 말고 아래와 같이 새로 <VirtualHost *:9999>을 추가하자.

<VirtualHost *:9999> 위에 WSGIDeamonProcess 설정을 써주는 것을 잊지말자.

나 같은 경우에는 virtualenv로 python 환경을 잡아주었기 때문에 virtualenv 설정 경로를 python 경로로 잡았다.

대부분의 python 프로젝트 환경은 virtualenv 쓰는 것을 추천하기에, virtualenv 환경 설정을 먼저 한 후, 경로를 잡으면 될 것 같다.


virtualenv 환경 설정하기


WSGIDaemonProcess test python-path=/home/jufactory/testProject/test:/home/jufactory/.venv/test/lib/python2.7/site-packages

<VirtualHost *:9999>

ServerAdmin webmaster@localhost

WSGIScriptAlias / /home/jufactory/testProject/test/test/wsgi.py process-group=test applcation-group=%_GLOBAL}

alias /static/ /home/jufactory/testProject/test/static/


<Directory /home/jufactory/testProject/test/test/>

<Files wsgi.py>

Order deny,allow

Allow from all

</Files>

</Directory>

</VirtualHost>


WSGIDaemonProcess 이후 Django 프로젝트 이름을 써주고 python-path에서는 처음에 Django 프로젝트 경로를 써준다. 그 후 : 표시를 한 후 python library 경로를 써준다. 나같은 경우에는 virtualenv 경로이기 때문에 위와 같은 경로를 설정하였다.

WSGIScriptAlias에서는 wsgi.py 경로를 써준다.


마지막으로 Directory 설정은 Django 프로젝트 경로를 설정해준 후, wsgi.py 파일을 모든 사람에게 허용 가능으로 권한을 변경해 준 후 apache를 실행하게 되면 해당 Django 프로젝트가 아파치 서버로 동작하게 되는 것을 확인 할 수 있다.


$> sudo apachectl -k restart