알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)
Django 와 apache2 연동 본문
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 |