我正在尝试使用以下Apache配置为django项目提供服务:
Apache virtualhost配置:
<VirtualHost *>
ServerName servername
[...]
<Directory "/path/to/project/project">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess project python-path=/path/to/project:/path/to/Envs/venv/lib/python3.5/site-packages
WSGIScriptAlias / /path/to/project/project/wsgi.py
</VirtualHost>
我也有以下wsgi.py:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example.settings")
application = get_wsgi_application()
服务STATIC文件和MEDIA文件没有问题。
我还检查了权限,并尝试递归使用755,然后递归使用777到我的virtualenv的site-package目录。没用
但是,当尝试进入我的网站的根目录时,我得到以下信息:
from django.core.wsgi import get_wsgi_application
ImportError: No module named 'django'
我猜测这是与Python路径相关的问题,因为django已安装在我的virtualenv中。但是我在WSGIDaemonProcess
的python-path
属性中添加了相关的python路径,所以我不明白为什么它不起作用。
我还猜想可以通过使用site
模块将相关目录添加到wsgi.py中的Python路径中,但是我想了解为什么我尝试的Apache配置还不够。我错过了什么?
您缺少上的WSGIProcessGroup
指令或等效选项WSGIScriptAlias
,因此您的应用程序实际上未在设置了虚拟环境的那个守护进程组中运行。
如果这是您在守护进程组中运行的唯一应用程序,我还建议确保将应用程序组设置为“%{GLOBAL}”。
因此使用:
WSGIScriptAlias / /path/to/project/project/wsgi.py \
process-group=project application-group=%{GLOBAL}
更好地python-home
用于虚拟环境。
WSGIDaemonProcess project python-path=/path/to/project \
python-home=/path/to/Envs/venv
看:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句