Django + Apache 연동하기
참고 URL
웹서버와의 연동 필요성:
- Django 의 runserver 기능은 개발의 편의를 위해 테스트 목적으로 제공되는 기능이다
- Django 측에서도 실제 서비스 환경에서는 runserver 기능을 이용하는 것을 권장하지 않는다
- 안정성과 성능 측면을 고려하지 않은 기능이기 때문이다
- multi threading 처리도 불가하다
- audit 기능과 같은 보안에 관련된 기본 설정도 불가하다
테스트 환경
- centos 7.5
- python2.7.10
- Django 1.11.15
- apache 2.4
apache 설치
- apache 2.4 다운로드 페이지 접속
- 다운로드 목록
- Httpd 2.4.35
- Apache APR(Apache Portable Runtime) 1.6.5
- Apache APR Util 1.6.1 (https://apr.apache.org/download.cgi)
- PCRE(Perl Compatible Regular Expressions) 8.39 (ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/)
- 다운로드 압축 해제
$ tar xvfz httpd-2.4.35.tar.gz $ tar xvfz apr-1.6.5.tar.gz $ tar xvfz apr-util-1.6.1.tar.gz $ tar xvfz pcre-8.38.tar.gz
- 컴파일 전 디렉토리 구조 정리
{{ apache_home }}/httpd-2.4.35 ㄴ srclib ㄴ apr # apr-1.6.5 압축 해제한 것을 옮긴다 ㄴ apr-util # apr-util-1.6.1 압축 해제한 것을 옮긴다
- 컴파일
$ make && make install
- 컴파일 후 apache 디렉토리 구조
{{ apache_home }}/httpd-2.4.35 # 컴파일 실행했던 디렉토리 {{ apache_home }}/apache2 # 컴파일에 의해 생성된 디렉토리 ㄴ bin ㄴ conf ㄴ ...
- 설정 변경
$ vi {{ apache_home }}/conf/httpd.conf # ServerName 127.0.0.1 # Listen 8080 << 80 은 root 에게 부여되는 port 라 8080 으로 변경함
- 실행
$ {{ apache_home }}/apache2/bin/apachectl start (graceful) # graceful 은 stop & start
연동하기
- mod_wsgi 패키지 설치
- 웹서버에서 받은 요청을 django 같은 python application 으로 전달해주는 interface 역할을 하는 패키지
$ sudo yum search mod_wsgi $ yum install mod_wsgi # search 목록에서 python 버전에 맞는 것을 설치한다
- 웹서버에서 받은 요청을 django 같은 python application 으로 전달해주는 interface 역할을 하는 패키지
아파치 설정 추가하기
$ vi {{ apache_home }}/conf/httpd.conf # 접근 권한 추가 <Directory /> Require all granted </Directory> # django 프로젝트 연결 <VirtualHost *:8080> Alias /static/ {{ django_project_path }}/static/ <Directory {{ django_project_path }}/static> Order allow,deny Allow from all </Directory> WSGIScriptAlias / {{ django_project_path }}/{{django_project_app}}/wsgi.py <Directory {{ django_project_path }}/{{django_project_app}}> <Files wsgi.py> Order allow,deny Allow from all </Files> </Directory> </VirtualHost> # wsgi 패키지 로드 LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so
django 프로젝트에 wsgi.py 파일 추가
$ vi {{ django_project_path }}/{{django_project_app}}/wsgi.py 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", "django_project_app.settings") application = get_wsgi_application()
- mod_wsgi 패키지 설치
'개발 > python' 카테고리의 다른 글
pyenv 를 통한 python 환경 관리 (0) | 2019.04.03 |
---|---|
headlness chrome 를 활용한 robotframework 사용하기 (0) | 2018.11.01 |
Robot framework 을 사용한 web page 테스트 (0) | 2018.09.24 |
Robot framework + Seleium -- (1) (0) | 2018.09.09 |
python - opencv 를 이용한 이미지 처리 (0) | 2018.08.25 |