알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)

Django 와 apache2 연동 본문

Web /Django

Django 와 apache2 연동

백곳 2017. 8. 5. 09:09

Django 와 apache2 연동 


앞서 기본 프로젝트 만들기 에서 배운것 처럼 django에


$ python manage.py runserver 0.0.0.0:8000


으로 웹 페이지를 서비스 할수 있지만 성능의 문제와 추천하지 않는 방법 입니다. 


그래서 웹서버 프로그램을 연동 시켜 하는것이 일반적 입니다. 


웹서버 종류로는 여러가지가 있지만 본편적으로 많이 쓰고 자료도 많고 무료 소프트웨어인 apache2에 연동 하고자 합니다. 





apache2 설치


$ sudo apt-get install apache2

위의 명렁어로 apache2를 설치해 줍니다. 


설치가 완료 되면 

다음과 같이 default page가 뜨게 됩니다. 


이제 Django 와 apache2 를 연동 하겠습니다. 



Django + apache2


우선 mod-wsgi 가 필요합니다. 


또한 사용하는 python 버전이 3 버전이므로 


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


위와 같이 설치 해줍니다. 


여기서 nano는 텍스트 에디터 프로그램 입니다.


$ sudo nano /etc/apache2/sites-available/000-default.conf


해당 내용에 다음을 추가 합니다.



<VirtualHost *:8888>

       ServerName django1

<Directory /home/bhkim/mysite/mysite>

         <Files wsgi.py>

                Require all granted

         </Files>

</Directory>

        WSGIDaemonProcess django1 python-path=/home/bhkim/anaconda3/envs/djangotest/lib/python3.5/site-packages

        WSGIProcessGroup django1

        WSGIScriptAlias / /home/bhkim/mysite/mysite/wsgi.py process-group=django1


</VirtualHost>


여기 파라메터 들을 하나 하나 따라가 보겠습니다.


ServerName django1

WSGIDaemonProcess django1 

WSGIProcessGroup django1

process-group=django1


이렇게 django1이 많이 나옵니다. 

여기서 django1 은 도메인 네임입니다.


도메인이란 url에 문자열을 입력 하면 IP로 바꿔지는 기능을합니다.


하지만 도메인은 도메인 서버에 입력되어야 하지만 현재 도메인 서버가 없기 때문에 


도메인을 로컬로 사용 할수 있도록 설정 해주어야 합니다. 


$ sudo nano /etc/hosts



저는 다음과 같이 입력을 하였습니다, 


127.0.0.1       django1


그래서 

ServerName django1

WSGIDaemonProcess django1 

WSGIProcessGroup django1

process-group=django1


입력을 했던 것입니다.


WSGIDaemonProcess django1 python-path=/home/bhkim/anaconda3/envs/djangotest/lib/python3.5/site-packages


 여기에서 WSGIDaemonProcess   은 데몬으로 실행 하겟다는 것이고  


python-path=/home/bhkim/anaconda3/envs/djangotest/lib/python3.5/site-packages 


는 anaconda python 가상환경을 쓰기 때문에 가상환경의 site-packages를 실행 해줘야 합니다. 


나머지는 따라 설정은 /home/bhkim/mysite/mysite 을 자신이 설치한 경로 로 바꾸시면 됩니다. 


이렇게 하고 나서도 접속은 안됩니다, 


추가로 포트 8888을 apache2 설정에서 허용을 해줘야 합니다. 


$ sudo nano /etc/apache2/ports.conf


을 열어 


Listen 8888

을 추가해 줍니다. 


그리고 아파치 서비스를 재시작 해줍니다. 


$sudo service apache2 restart



이정도 설정 했으면 되겟지 하는 마음으로 웹페이지에서 접속을 하면 


에러가 납니다. 그래도 일단은 파이썬을 실행을 시켯지만 설정에 에러가 있다는 것입니다. 


$sudo nano /home/bhkim/mysite/mysite/wsgi.py 


에디터로 해당 파일을 수정해줘야 합니다 이유는 저희가 가상환경을 쓰기 때문에 몇가지 설정을 더해줘야 합니다.


"""
WSGI config for mysite project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/
"""

import os,sys
path = os.path.abspath(__file__+'/../..')
if path not in sys.path:
    sys.path.append(path)

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

application = get_wsgi_application()

import os,sys

path = os.path.abspath(__file__+'/../..')

if path not in sys.path:

    sys.path.append(path)


다음과 같이 설정해줍니다,


그리고  apache2 서비스를 재시작 해줍니다. 


$sudo service apache2 restart


이제 다시 웹페이즈를 다시 접속해 봅니다. 


드디어 apach2에 python 이 올라 갔습니다. 

'Web > Django' 카테고리의 다른 글

Django 데이터 베이스 설정  (0) 2017.08.05
Django start app 만들기  (0) 2017.08.05
Django 기본 프로젝트 만들기  (3) 2017.08.04
Django 설치하기(2)  (0) 2017.08.04
Django 설치 하기 (1)  (0) 2017.08.03
Comments