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的主要内容,如果未能解决你的问题,请参考以下文章

Django CMS 不适用于 uWSGI

Apache2 Vhost 不适用于 Symfony 2.8

数据库中的待办事项列表项更新不适用于 Django

Apache.org上的问题并不适用于Apache Cordova的创建问题选项卡

.htaccess 文件不适用于我的项目

Visual Studio 2015 不适用于 Apache Cordova 工具