【发布时间】:2017-02-18 06:58:00
【问题描述】:
我似乎无法找到一个好的答案。作为 WSGIDaemon 运行时,谁需要拥有 virtualenv?我假设我的操作系统(Ubuntu 16)www-data,但我想确定。根据这篇文章的答案尝试一些新的东西来让这个东西工作......
django apache configuration with WSGIDaemonProcess not working
django 项目、virtualenv 文件夹或两者都需要归 apache 组所有吗?在不指定端口的情况下为 django 项目提供服务需要哪些所有权?为什么我会得到以下信息?
根本问题:
Call to 'site.addsitedir()' failed for '(null)'
当我启动 apache 时,我得到了这个错误。我遵循了几个不同的指南,包括: 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
我的 django 项目路径是/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>
[...]
【问题讨论】:
标签: python django apache ubuntu mod-wsgi