2013-05-22 4 views
1

아파치와 mod_wsgi를 사용하여 동일한 서버에서 작동하는 몇 가지 작은 django 프로젝트가 있습니다. 아파치의 conf 파일에 대한 virtualenvironment 및 설정 설정으로 또 다른 하나 개의 프로젝트를 설치 :오류 500 및 다른 웹 사이트의 내용

<VirtualHost XXX.XXX.XXX.XXX:81 > 
    ServerName mywebsite.com 
    CustomLog /var/www/httpd-logs/mywebsite.com.access.log combined 
    DocumentRoot /var/www/empirik/data/www/mywebsite.com 
    ErrorLog /var/www/httpd-logs/mywebsite.com.error.log 
    ServerAlias www.mywebsite.com 
    SuexecUserGroup empirik empirik 

    WSGIScriptAlias//var/www/empirik/data/www/mywebsite.com/myproject/wsgi.py 
    WSGIDaemonProcess mywebsite.com python-path=/var/www/empirik/data/www/mywebsite.com/env/lib/python2.7/site-packages 

    <Directory /var/www/empirik/data/www/mywebsite.com/myproject> 
     Order deny,allow 
     Allow from All 
    </Directory> 

    <Directory /var/www/empirik/data/www/mywebsite.com/myproject/static> 
     Order deny,allow 
     Allow from all 
    </Directory> 
</VirtualHost> 

나는 웹 사이트 서버가 500 오류 또는 약 50 %의 시간에 다른 웹 사이트의 내용을 반환하고 이상한 오류에가로드 할 때

[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234] mod_wsgi (pid=32361): Exception occurred processing WSGI script '/var/www/empirik/data/www/mywebsite.com/myproject/wsgi.py'. 
[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234] Traceback (most recent call last): 
[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234] File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 219, in __call__ 
[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234]  self.load_middleware() 
[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234] File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 39, in load_middleware 
[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234]  for middleware_path in settings.MIDDLEWARE_CLASSES: 
[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234] File "/usr/local/lib/python2.7/site-packages/django/utils/functional.py", line 184, in inner 
[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234]  self._setup() 
[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234] File "/usr/local/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup 
[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234]  self._wrapped = Settings(settings_module) 
[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234] File "/usr/local/lib/python2.7/site-packages/django/conf/__init__.py", line 95, in __init__ 
[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234]  raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
[Wed May 22 10:18:47 2013] [error] [client 66.249.78.234] ImportError: Could not import settings 'anotherproject.settings' (Is it on sys.path?): No module named anotherproject.settings 

또 다른 질문은 여전히하지 VIRTUALENV에서 기본 시스템 Python을 사용하지만 이유 : 그것은 다른 웹 사이트의 프로젝트 설정을로드하려고하기 때문에 아파치는 내가 이해할 수없는 로그 파일을? 도와주세요!

답변

1

모든 가상 호스트에 대해 WSGIPythonHome이 전역 적으로 설정되어 있기 때문에 동일한 Apache에서 다른 python 실행 파일을 사용할 수 없습니다 (docs 참조). WSGIPythonHome이 설정되어 있지 않으면 mod_wsgi는 시스템 파이썬을 사용합니다.

wsgi.py을 올바르게 설정하지 않은 것 같습니다. wsgi.py의 목표는 sys.path를 올바르게 조작하여 프로젝트에 필요한 모든 것을 사용할 수있게하는 것입니다. 다음은 동일한 문제가있을 때 나를 도운 것입니다 : apache server not using proper virtualenv with WSGI setting.

희망이 있습니다.

+0

WSGIPythonHome에 대한 정보를 제공해 주셔서 감사합니다. 나는 그것에 대해 몰랐다. wsgi 파일의 경로가 옳았 기 때문에 몇 가지 사항을 변경했는데 이제는 문제가 발생할 수 있다는 것을 모를지라도 모든 것이 올바르게 작동하는 것처럼 보입니다. –

1

귀하의 구성이 누락 : 그없이

WSGIProcessGroup mywebsite.com 

, 당신의 WSGI 응용 프로그램도 데몬 프로세스 그룹에 위임하지 않을. 당신은 확인할 수 있습니다

당신은 데몬 모드가 있으면

  • http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation#Embedded_Or_Daemon_Mode 제대로 사용하는 당신은 mod_wsgi에 3.4를 사용하는 것처럼 너무 오래, 당신은 사용하여 특정 데몬 프로세스 그룹에 대한 파이썬 홈을 설정할 수 있습니다

    WSGIDaemonProcess mywebsite.com python-home=/var/www/empirik/data/www/mywebsite.com/env 
    

    그런 식으로 파이썬 가상 환경의 루트를 가리키면 선택됩니다.

    파이썬 경로 옵션을 Django 프로젝트의 상위 디렉토리에 지정해야 설정 모듈과 문제가있는 설정 모듈을 찾을 수 있습니다. 따라서 가능성이 당신이 원하는 :

    WSGIDaemonProcess mywebsite.com \ 
        python-home=/var/www/empirik/data/www/mywebsite.com/env \ 
        python-path=/var/www/empirik/data/www/mywebsite.com 
    

    이제 설정 데몬 프로세스 그룹에 해당 사이트를 실행하는 경우 :

    WSGIApplicationGroup %{GLOBAL} 
    

    하위 통역에서 작동하지 않습니다 C 확장 모듈에 문제를 방지 할 수 있습니다.

    <Directory /var/www/empirik/data/www/mywebsite.com/myproject> 
        Order deny,allow 
        Allow from All 
    </Directory> 
    

    사용한다 :

    는 대신, 더 안전합니다

    <Directory /var/www/empirik/data/www/mywebsite.com/myproject> 
    <Files wsgi.py> 
        Order deny,allow 
        Allow from All 
    </Files> 
    </Directory> 
    

    아파치 구성, 코드와 설정 파일을 다운로드하는 사람의 적은 위험을 망치면 그 방법.

    는 그리고 당신은 여기서

    <Directory /var/www/empirik/data/www/mywebsite.com/myproject/static> 
        Order deny,allow 
        Allow from all 
    </Directory> 
    
    당신이 누락 된 것으로 나타납니다

    가 대응하는 :

    Alias /media /var/www/empirik/data/www/mywebsite.com/myproject/static 
    

    정적 미디어 디렉토리 별칭이없는 경우, 아파치가 제공되지 않습니다 거기에 파일. 당신은 데몬 모드를 강제로 원하는 포함 된 모드를 피하기 위해 원하기 때문에

    마지막으로 설정합니다

    WSGIRestrictedEmbedded On 
    

    당신은 당신을있는대로 구성 및 실수로 포함 된 모드로 실행하는 일을 망치면 그 방법 오류가 발생합니다.

관련 문제