Scipy를 설치 한 후 응답하지 않는 아파치 + mod_wsgi 서버가 장고 기반 사이트 (django 1.5.1, python

현재 Apache 2.2.15 및 mod_wsgi 3.2와 함께 Centos 6.4 서버를 실행하고 있습니다. 서버가 장고 기반 사이트 (django 1.5.1, python 2.6.6)를 호스팅하고 있습니다. pip를 통해 scipy 0.12.0을 설치할 때까지 모든 것이 잘 작동했습니다. 이제 django 앱을로드하려고하면 서버가 응답하지 않고 생성 된 자식 httpd 프로세스가 중단 된 것처럼 보입니다. 내 로그 (/ var / logs / httpd / error_log, 내 vhost error.log 및 시스템 로그)를 살펴보면 오류가 발생하지 않습니다.

django manage.py 쉘을 통해 모델 등을로드하면 모든 것이 잘 작동하므로 mod_wsgi 문제라고 생각하게됩니다.

이 문제를 해결하는 방법에 대한 생각이 있습니까?



답변

C 확장 모듈을 사용하는 Python 용 일부 타사 패키지 (scipy 및 numpy 포함)는 Python 기본 인터프리터에서만 작동하며 기본적으로 기본 인터프리터에서는 mod_wsgi로 사용할 수 없습니다. 스레드 교착 상태, 잘못된 동작 또는 프로세스 충돌이 발생할 수 있습니다. 이에 대한 자세한 내용은 다음과 같습니다.

http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API

임시 해결책은 다음을 사용하여 WSGI 응용 프로그램을 프로세스의 기본 해석기에서 강제로 실행하는 것입니다.

WSGIApplicationGroup %{GLOBAL}

동일한 서버에서 여러 WSGI 응용 프로그램을 실행하는 경우 일부 프레임 워크에서는 여러 인터프리터에서 여러 인스턴스를 실행할 수 없으므로 데몬 모드를 사용하여 조사를 시작하려고합니다. Django의 경우입니다. 따라서 데몬 모드를 사용하여 각각 자체 프로세스에 있도록하고 각 데몬 모드 프로세스 그룹의 기본 인터프리터에서 각각 실행되도록하십시오.


답변

WSGI를 구성하는 방식에 맞는 다른 솔루션은 다음과 같이 변경되었습니다 WSGIScriptAlias.

WSGIDaemonProcess website user=user group=group python-path=/path/to/venv/website:/path/to/venv/lib/python2.7/site-packages
WSGIScriptAlias /website /path/to/venv/website/wsgi.py process-group=website application-group=%{GLOBAL}

<Location /website>
        WSGIProcessGroup website
</Location>

<Directory /path/to/venv/website>
        WSGIScriptReloading On
        <Files wsgi.py>
                Allow from all
                Require all granted
        </Files>
</Directory>

속성에 주목

process-group=website application-group=%{GLOBAL}

보통 필요하지 않은


답변