Django 项目不适用于 Apache 和 mod-wsgi
Posted
技术标签:
【中文标题】Django 项目不适用于 Apache 和 mod-wsgi【英文标题】:Django project not working with Apache and mod-wsgi 【发布时间】:2015-10-21 14:21:15 【问题描述】:我在 DigitalOcean 上创建了一个 droplet(云服务器),并使用 no-ip.com 我给了它主机名 - project.ddns.net。通过 ssh(ing) 进入我安装了 pip 和 virtualenv 的 droplet。
在 /var/www/ 我创建了一个 virtualenv 并从我的项目的 github 克隆了存储库。目录结构是 -
project_revamped (root of the project)
->requirements
->base.txt
->dev.txt
->project (django project)
->static
->media
->apps (folder which contains apps)
->manage.py
->project
->urls.py
->settings
->base.py
->dev.py
我安装了 apache2 和 mod_wsgi 使用 -
sudo apt-get install apache2
sudo apt-get install libapache2-mod-wsgi
然后我安装了 mysql,创建了一个数据库并安装了所有要求
pip install -r base.txt
我在路径上创建了一个 virtualhost project.conf -
/etc/apache2/sites-available/project.conf
文件的内容是这样的——
<VirtualHost *:80>
ServerAdmin example@gmail.com
ServerName project.ddns.net
ServerName www.project.ddns.net
WSGIScriptAlias / /var/www/project_revamped/project/project/wsgi.py
<Directory /var/www/project_revamped/project/project>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
然后我给出了这个命令来激活这个 conf 文件 -
a2ensite project.conf
我的django项目中wsgi.py的内容是-
import os
import sys
import site
#Add the site-packages of the chosen virtualenv to work with
site.addsitedir('/var/www/.virtualenvs/projectenv/local/lib/python2.7/site-packages')
#Add the app's directory to the python path
sys.path.append('/var/www/project_revamped/project')
sys.path.append('/var/www/project_revamped/project/project')
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings.dev'
#Activate your virtualenv
activate_env = os.path.expanduser('/var/www/.virtualenvs/projectenv/bin/activate_this.py' )
execfile(activate_env, dict(__file__=activate_env))
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
更改文件后,我终于给出了命令 -
service apache2 reload
service apache2 restart
但是,在正确完成这些事情之后,相应的 ip 说服务器存在问题并发送 500 错误。我想问题出在我的配置中,因为 apache 服务器响应正常。在我包含 django 项目后问题开始。
有人可以帮我配置一下吗?在过去的 2 天里,我陷入了困境,互联网上的每一篇不同的文章都讲述了不同的故事。
【问题讨论】:
请阅读the documentation。 @BurhanKhalid 我阅读了文档,但后来我在网上找到了很棒的教程,所以我跟着它。问题出在教程的视频中它可以工作,但在我的情况下它不起作用跨度> 如果您遵循文档,则不会有任何问题,因为它已经过社区测试和验证;从而获得更好的支持。 @BurhanKhalid 我也浏览了官方文档,但它仍然显示 500 错误。从我的角度来看,文档并没有涵盖细节。 【参考方案1】:看看the official documentation。我认为您缺少WSGIPythonPath
-directive。
正如@BurhanKhalid 所说,此链接教程已完成并经过测试,应该几乎完全符合您的设置。
【讨论】:
看看我在遵循 Django 文档后添加的这篇文章 -- ***.com/questions/31722465/…以上是关于Django 项目不适用于 Apache 和 mod-wsgi的主要内容,如果未能解决你的问题,请参考以下文章
Apache2 Vhost 不适用于 Symfony 2.8