2016-07-09 8 views
2

ОБНОВЛЕНО QuestionДжанго апач конфигурации с WSGIDaemonProcess не работает

[Mon Jul 18 09:20:10.517873 2016] [:error] [pid 30316:tid 139756302964480] [remote 122.164.94.99:48261] Traceback (most recent call last): 
[Mon Jul 18 09:20:10.518005 2016] [:error] [pid 30316:tid 139756302964480] [remote 122.164.94.99:48261] File "/var/www/rent/Rent/wsgi.py", line 20, in <module> 
[Mon Jul 18 09:20:10.518141 2016] [:error] [pid 30316:tid 139756302964480] [remote 122.164.94.99:48261]  from django.core.wsgi import get_wsgi_application 
[Mon Jul 18 09:20:10.518236 2016] [:error] [pid 30316:tid 139756302964480] [remote 122.164.94.99:48261] ImportError: No module named django.core.wsgi 

Мой VirtualHost

<VirtualHost *:80> 
    ServerName ip_address 
    ServerAdmin [email protected] 

    Alias /static/ /var/www/rent/static/ 

    Alias /media/ /var/www/rent/media/ 

    WSGIScriptAlias/ /var/www/rent/Rent/wsgi.py 

    WSGIDaemonProcess Rent python-path=/var/www/rent:/root/.virtualenvs/rent/lib/python2.7/site-packages 

    WSGIProcessGroup Rent 

    <Directory /var/www/rent/static> 
     Options -Indexes 
     Order deny,allow 
     Allow from all 
    </Directory> 

    <Directory /var/www/rent/media> 
     Options -Indexes 
     Order deny,allow 
     Allow from all 
    </Directory> 

    LogLevel warn 

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 
+0

Как это «работает не так, как ожидалось»? Можете ли вы включить в свой вопрос несколько журналов и сообщений об ошибках? –

+0

@GarrettHyde Независимо от модулей, которые я установил в virtualenv, он отображается как модуль не найден – overflow

+0

@GarrettHyde Добавлено журнал – overflow

ответ

5
WSGIDaemonProcess Rent python-path=/var/www/rent:/root/.virtualenvs/rent/lib/python2.7/site-packages 

Это наиболее вероятной причиной этой проблемы. Вы создали виртуальную машину внутри домашней папки суперпользователя. Но эта папка вряд ли будет доступна для apache. По умолчанию домашняя папка пользователя недоступна для любого другого пользователя.

Веб-сервер и процесс WSGI будут работать как пользователь, не имеющий привилегий, который обычно называется nobody, httpd, apache или что-то подобное. Хотя вы можете исправить эту проблему, изменив разрешения на/root /, это большой нет. Было бы менее опасно, если бы это был обычный пользователь, но все же это не очень хорошая идея.

Лучшее решение - разместить виртуальный компьютер в месте, доступном непривилегированному пользователю. /usr/local/virtualenv - хорошее место.

Пожалуйста, обратите внимание, что перемещение /root/.virtualenvs/ к /usr/local/virtualenv вам придется обновить его следующим образом

source /root/.virtualenvs/rent/bin/activate 
pip freeze > /tmp/requirements.txt 
cd /usr/local/ 
virtualenv virtualenv 
source virtualenv/bin/activate 
pip install -r /tmp/requirements.txt 

затем отредактировать файл httpd.conf, чтобы отразить новый путь.

+0

Использование '' python-path'' для настройки виртуальной среды Python с помощью режима демона mod_wsgi не рекомендуется. Вместо этого используйте '' python-home'', как описано в http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html –

+0

спасибо @GrahamDumpleton посмотрит это и обновит ответ – e4c5

+0

Я был сошел с ума, у меня была такая же проблема, и я проверял пути тысячи раз, вот решение! ти – Francesco