Я не могу найти хороший ответ на этот вопрос. Кому нужно владение virtualenv при запуске его как WSGIDaemon? Я предполагаю на своей ОС (Ubuntu 16) www-data, но я хочу быть уверен. Попытка некоторых новых вещей, чтобы получить эту вещь, работающие на основе от ответа с этим поста ...Ошибка apache mod_wsgi с django in virtualenv
django apache configuration with WSGIDaemonProcess not working
ли проект Джанго папки virtualenv или оба должен принадлежать группе апача? Какие владельцы должны быть на месте, чтобы служить проекту джанго, не указав порт? Почему я получаю следующее?
Корень проблемы:
Call to 'site.addsitedir()' failed for '(null)'
Когда я начинаю апача, я получаю эту ошибку. Я следил за несколькими разными гидами, в том числе: http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html и https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/modwsgi/ но у него был нулевой успех.
Мой виртуальный путь среда /usr/local/virtualenvs/servicesite
Мой путь Джанго проект /home/addohm/projects/rtservice/servicesite
это где manage.py проживает, который оставляет /home/addohm/projects/rtservice/servicesite/servicesite
как место моего wsgi.py.
wsgi.py:
SERVICESITE = ['/usr/local/virtualenvs/servicesite/lib/python3.5/site-packages']
import os
import sys
import site
prev_sys_path = list(sys.path)
for directory in SERVICESITE
site.addsitedir(directory)
new_sys_path = []
for item in list(sys.path):
if item not in prev_sys_path:
new_sys_path.append(item)
sys.path.remove(item)
sys.path[:0] = new_sys_path
""" **Doesn't seem to work, throwing error in apache logs**
site.addsitedir('/usr/local/virtualenvs/servicesite/lib/python3.5/site-packages')
"""
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "servicesite.settings")
application = get_wsgi_application()
DJANGO_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..')
sys.path.append(DJANGO_PATH)
apache2.conf
[...]
WSGIDaemonProcess servicesite python-path=/home/addohm/projects/rtservice/servicesite:/usr/local/virtualenvs/servicesite/lib/python3.5/site-packages
WSGIProcessGroup servicesite
WSGIScriptAlias//home/addohm/projects/rtservice/servicesite/servicesite/wsgi.py
Alias /static/ /home/addohm/projects/rtservice/servicesite/static/
<Directory /home/addohm/projects/rtservice/servicesite/static/>
Require all granted
</Directory>
<Directory /home/addohm/projects/rtservice/servicesite/servicesite>
<Files wsgy.py>
Require all granted
</Files>
</Directory>
[...]
Этот код кажется исправить корень проблемы я видел. Мне просто нужно выяснить мои разрешения сейчас. Я добавил каталог проекта django в группу: www-data, но этого, возможно, не было достаточно. Продолжение следует. Надо забрать жену из аэропорта! Большое спасибо за Вашу помощь. Я с нетерпением жду этого, благодаря вашей помощи :) – Flibertyjibbet
@GrahamDempleton вы бы рекомендовали вместо этого сохранить все файлы проекта Django в папке '/ var/www/projects' и оставить папки virtualenv в '/ usr/местные/virtualenvs? – Flibertyjibbet
@GrahamDempleton В вашей первой/второй точке, если я правильно вас понимаю, мне в основном нужно убедиться, что моя виртуальная среда была создана в той же среде python, в которой я установил mod_wsgi? Как я могу убедиться, что все правильно выровнено? – Flibertyjibbet