2015년 12월 15일 화요일

아파치 WSGI 모듈(mod_wsgi)을 통한 Flask 연동

아파치(apache)의 WSGI 모듈(mod_wsgi)을 통해서 Flask를 연동하는 예제이다.

본문은 다음의 가이드에 대한 요약 및 보충 내용을 다룬다.
http://flask-docs-kr.readthedocs.org/ko/latest/deploying/mod_wsgi.html

설치

1. 아파치를 설치한다.

 --with-python=<path/python>
 --with-apxs=<path/apxs>
* apxs(APache eXtenSion tool) : 확장 모듈을 설치를 위한 도구

2. WSGI 모듈(mod_wsgi)를 설치한다.

pip install mod_wsgi

* 빌드를 위해 apxs가 있어야 한다.

3. 아파치 설정 파일(httpd.conf)에 모듈(mod_wsgi)를 추가한다.
LoadModule wsgi_module modules/mod_wsgi.so
 * mod_wsgi.so는 pip로 설치된 폴더에 원본이 있다. (링크 걸면된다.)

설정

1. 가상 호스트 연결을 통한 mod_wsgi 사용 예제

NameVirtualHost *

<VirtualHost api4u.info>
    ServerName adi4u.info

    WSGIDaemonProcess api4u user=user1 group=group1 threads=5
    WSGIScriptAlias / /var/www/api4u/api4u.wsgi

    <Directory /var/www/api4u>
        WSGIProcessGroup api4u
        WSGIApplicationGroup %{GLOBAL}
        WSGIScriptReloading On
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

2. WSGIDaemonProcess를 위한 계정을 만든다.

groupadd group1 ; useradd -g group1 user1

* 해당 계정을 통해서 프로젝트를 생성 및 수행한다.

3. 사용할(생성한) 계정으로 가상환경을 만든다.

virtualenv -p python3.5 Pyzone

3. 가상 환경을 위한 .wsgi 예제 (/var/www/api4u/api4u.wsgi)

import sys 
sys.path.insert(0, '/var/www/api4u')

activate_this = '/home/user1/Pyzone/bin/activate_this.py'
# execfile(activate_this, dict(__file__=activate_this))
exec(open(activate_this).read(), dict(__file__=activate_this)) 

from api4u import app as application

* python 3.5에서는 execfile() 함수가 없음으로 exec() 함수를 사용한다.

0 개의 댓글:

댓글 쓰기