【发布时间】:2016-10-14 11:29:41
【问题描述】:
我在运行 django 和 apache2/mod_wsgi 时遇到问题。这是我目前的设置:
Ubuntu: 16.0
Apache: 2.4.18
Python: 3.5
Django: 1.10
我在我的 django 项目中为用户“carma”安装了一个 virtualenv。结构是:
/home/carma/mycarma
|- manage.py
static
mycarma
|__init__.py
|settings.py
|urls.py
|wsgi.py
mycarmanev
bin
include
lib
这是/etc/apache2/sites-available/000-default.conf的内容
<VirtualHost *:80>
Alias /static /home/carma/mycarma/static
<Directory /home/carma/mycarma/static>
Require all granted
</Directory>
<Directory /home/carma/mycarma/mycarma>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess mycarma python-path=/home/carma/mycarma/ python-home=/home/carma/mycarma/mycarmavirtuale$
WSGIProcessGroup mycarma
WSGIScriptAlias / /home/carma/mycarma/mycarma/wsgi.py
这是wsgi.py
的内容import os,sys
from django.core.wsgi import get_wsgi_application
DJANGO_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..')
sys.path.append(DJANGO_PATH)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mycarma.settings")
application = get_wsgi_application()
而且我已经授予权限:
sudo chown -R www-data:www-data /home/carma/mycarma/mycarmaenv
sudo chown -R www-data:www-data /home/carma/mycarma
当我尝试访问服务器的 url 时出现问题,检查 apache 日志,这是问题所在:
[wsgi:error] [pid 25183] mod_wsgi (pid=25183): Target WSGI script '/home/carma/mycarma/mycarma/wsgi.py' cannot be loaded as Python module.
[wsgi:error] [pid 25183] mod_wsgi (pid=25183): Exception occurred processing WSGI script '/home/carma/mycarma/mycarma/wsgi.py'.
[wsgi:error] [pid 25183] Traceback (most recent call last):
[wsgi:error] [pid 25183] File "/home/carma/mycarma/mycarma/wsgi.py", line 12, in <module>
[wsgi:error] [pid 25183] from django.core.wsgi import get_wsgi_application
[wsgi:error] [pid 25183] ImportError: No module named 'django'
我已经阅读了所有可能的讨论,还发现了this thread,它们暴露了完全相同的问题,但对我没有任何帮助。
感谢任何帮助!
【问题讨论】:
-
您是否使用
pip freeze命令检查了django 是否正确安装...... -
为什么版本的 Python 编译 mod_wsgi。它可能不是 Python 3.5,因此它忽略了您的 Python 虚拟环境。
ldd在mod_wsgi.so文件中得到什么。见modwsgi.readthedocs.io/en/develop/user-guides/… -
你的环境是
mycarmanev或mycarmavirtuanev? -
错过了。是的,
python-home的路径应该是sys.prefix用于虚拟环境的路径。它似乎与您的布局不匹配。 -
@itzmeontv:是的,virtualenv 不同
标签: python django apache mod-wsgi