【发布时间】:2018-09-05 18:51:31
【问题描述】:
我对 django 很陌生,我必须在 ubuntu 16.04 中将项目部署到生产模式。我已经用 apache2 安装了 wsgi,并包含了 django 项目和 python 站点包的系统路径。
我的 sites-enabled/000-default.config 是
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName myproject.com
ServerAlias www.myproject.com
Alias /static /var/www/html/TEST/myproject/static
<Directory /var/www/html/TEST/myproject/static>
Require all granted
</Directory>
<Directory /var/www/html/TEST/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess myproject python-home=/var/www/html/TEST/newenv python-path=/var/www/html/TEST/myproject:/var/www/html/TEST/newenv/lib/python3.5/site-packages
WSGIProcessGroup myproject
WSGIScriptAlias / /var/www/html/TEST/myproject/myproject/wsgi.py
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
还有我的wsgi文件
import os , sys
sys.path.append('/var/www/html/TEST/myproject/')
sys.path.append('/var/www/html/TEST/newenv/lib/python3.5/dist-packages/')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
当我运行链接时,我收到内部服务器错误(505)
我已经检查了错误日志中的错误,它显示来自
django.core.wsgi 导入 get_wsgi_application [wsgi:error] ImportError: No module named django.core.wsgi
有人可以帮我解决这个问题吗?我已经用谷歌搜索并检查了所有其他选项和解决方案。提前致谢
【问题讨论】:
-
Django 包安装在哪里?进系统Python,还是虚拟环境?如果你运行
import django; print(django.__file__),你会从命令行python得到什么? mod_wsgi 是为哪个版本的 Python 编译的? modwsgi.readthedocs.io/en/develop/user-guides/… -
你也不应该命名 Django 项目目录,所以它的名称中有一个点。也就是说,不要使用
myproject.com。在尝试导入 Django 设置文件和项目代码时,这将导致模块导入出现问题。 -
如果您使用真实值,这个问题就不会那么混乱了。您的
wsgi文件中的myproject.com.settings与wsgi 文件mysite/wsgi.py的位置不匹配。它们通常应该匹配,因为默认情况下设置和 wsgi 文件位于同一目录中。如果目录真的是mysite,那么'mysite.settings'就可以了。如果它包含一个点(例如myproject.com),那么正如 Graham 所说,这将导致问题。 -
你在使用 virtualenv 吗?
-
@Alasdair,这是我的网站,我使用了虚拟值而不是原始名称
标签: django apache2 virtualenv python-3.5 mod-wsgi