본문 바로가기
Coding/Python

장고(Django) Apache랑 연동하는 방법

by Hide­ 2018. 2. 19.
반응형

기존에 학식봇을 포함하여 최근 어플을 제작하고 있는데 뒷단을 장고로 사용하고 있다.

Django Rest framework를 사용하면 크게 사용자가 건드릴 필요 없이 API서버를 구축할 수 있다.

정말 편한 라이브러리라서 앞으로의 API서버 구축은 모두 장고로 할 것 같다.

튼, 여러모로 장고를 많이 사용하고 있었는데 SSL를 적용해야해서 관련 문서를 찾고 있었다.

그런데 대부분의 예제들이 모두 장고를 아파치나 Nginx와 연동하여 적용시키고 있었다.

왜 그랬는지 몰랐는데 특정 블로그에서 그 이유를 찾았다.

나는 대부분 runserver + nohup으로 백그라운드에서 서버가 돌도록 구동시키고 있었다.

그런데 runserver는 개발시에만 사용하고 실 서비스할때에는 아파치등의 서버에 올려서

작동시키라고 장고팀에서도 권장하고 있다고 한다.

몇달동안 장고를 썼는데 처음 안 사실이다.

그래서 장고(Django)와 아파치(Apache) 웹서버를 연동시키는 방법에 대해서 포스팅한다.

(장고와 아파치는 깔려있다고 가정한다. 서버 환경은 Ubuntu 16.04이다)


먼저 apt-get을 업데이트 한다.

sudo apt-get update


mod-wsgi를 설치해줘야 한다.

sudo apt-get install libapache2-mod-wsgi


파이썬3을 사용한다면 위 라이브러리도 같이 설치해줘야 한다.

sudo apt-get install libapache2-mod-wsgi-py3


이제 설정파일을 수정해야한다.

sudo vi /etc/apache2/sites-available/000-default.conf


먼저 static폴더를 연결해줘야 한다.

장고에서 visualize한 정보들은 모두 static폴더에 있기 때문이다.

나는 Rest framework를 사용하고 있으므로 해당 경로대로 줬다.


Alias /static /home/프로젝트이름/static

<Directory /home/프로젝트이름/static>

Require all granted

</Directory>


형식으로 입력한다.


다음으로 wsgi.py에 관해 설정해줘야 한다.


<Directory /home/app/wsgi.py가 있는 경로>

<Files wsgi.py>

Require all granted

</Files>

</Directory>


WSGIDaemonProcess 프로젝트명 python-home=/home/가상환경경로/env python-path=/home/프로젝트경로

WSGIProcessGroup rest

WSGIScriptAlias / /home/wsgi.py가 있는 경로/wsgi.py


나는 virtualenv환경으로 작업하기 때문에 위 정보를 추가적으로 넣어줬다.

최종적으로 입력된 정보는 다음과 같다.


저장하고 나온다음에

 sudo service apache2 restart로 아파치를 재시작해준다.

그리고 들어가보면 정상적으로 돌아간다.


참고 : https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-apache-and-mod_wsgi-on-debian-8