WSGI(Web Server Gateway Interface)란?
=> 서버와 웹 애플리케이션의 인터페이스를 위한 파이선 프레임워크다.
즉, 웹서버(Apache)와 Flask 어플리케이션을 연동해주기 위한 프레임워크이다.
- 다운을 받고
$ wget https://github.com/GrahamDumpleton/mod_wsgi/archive/3.5.tar.gz
- 압축을 푼 다음
$ tar -zxvf 3.5.tar.gz
- 폴더에 들어가서
$ cd mod_wsgi-3.5
- 아파치의 빌드툴인 apxs의 경로를 설정해주고
- 필자와 같이 기본 python 버전을 사용하지 않을꺼라면 꼭 python경로를 설정해줘야 한다! (중요)
$ ./configure --with-apxs=/~~~/apps/apache/bin/apxs --with-python=/usr/bin/python3.6
- make 파일을 만들고
$ make
- 설치~
$ make install
이렇게 설치를 하면 자동으로 아파치 하위 /modules 폴더안에 mod_wsgi.so 파일이 생긴다.
Apache httpd.conf 설정Aapche에 mod_wsgi 모듈이 생겼고, 이를 적용하기 위해서 httd.conf 아파치 기본설정 파일을 수정해야 한다.자세한 내용은 공식 홈페이지를 참고하는걸 추천한다. |
- 모듈을 사용하겠다고 정의
LoadModule wsgi_module modules/mod_wsgi.so
- mod_wsgi로 실행한 WSGI 파이썬 어플리케이션을 특정 URL( / )로 설정하기 위해 다음과 같이 등록해준다.
WSGIScriptAlias / /~~~/python_app/hello_world.wsgi
- 등록된 파이썬 어플리케이션을 데몬 프로세스로 실행하기위해 다음과 같이 설정해준다.
WSGIDaemonProcess hello_world(어플리케이션 명) user=계정명 group=계정명 threads=5(스레드 개수)
<Directory /~~~/python_app>
WSGIApplicationGroup %{GLOBAL} # 해당 어플리케이션을 처리하는 프로세스에서 첫번째로 생성된 파이썬 인터프리터를 사용
Order deny,allow
Allow from all
</Directory>
module 적용 확인
[root@DNS_TEST src]# httpd -D DUMP_MODULES | grep wsgi
proxy_uwsgi_module (shared)
wsgi_module (shared)
[root@DNS_TEST src]#
# 출처 : https://modwsgi.readthedocs.io/en/master/user-guides/installation-issues.html
mod_wsgi를 설치 하려면 헤더 파일을 포함하여 전체 Python 배포를 설치해야 합니다. 바이너리 Python 패키지가 런타임 패키지와 개발자 패키지로 분할되는 Linux 배포판에서는 개발자 패키지가 기본적으로 설치되지 않는 경우가 많습니다. 즉, mod_wsgi를 설치 하는데 필요한 헤더 파일이 누락됩니다.
개발자 패키지가 설치되지 않은 경우 표시되는 오류 메시지의 예는 다음과 같습니다.
문제를 해결하려면 설치한 Python 런타임 패키지에 해당하는 Python용 개발자 패키지를 설치합니다. 개발자 패키지의 이름은 Linux 배포판마다 다를 수 있습니다. 일반적으로 패키지 이름에 추가된 Python 런타임 패키지와 동일한 이름을 갖습니다 -dev. 설치할 패키지의 실제 이름을 결정하려면 패키징 시스템에서 사용 가능한 패키지 목록을 조회해야 합니다.
ex)
yum install python-devel