【发布时间】:2013-11-15 22:41:46
【问题描述】:
我正在尝试在 AWS 上部署我的 Django 项目并让 Apache 为我的网页提供服务。我可以使用 runserver 部署网页,但我希望它成为生产服务器——因此我想使用 Apache。我收到了500 Internal Server error,但不知道为什么。
在我的项目文件夹中,我有一个django.wsgi 文件:
import os
import sys
sys.path.append('home/ubuntu/venv/hde_nate')
os.environ['DJANGO_SETTINGS_MODULE']='web.settings'
import django.core.handlers.wsgi
application=django.core.handlers.wsgi.WSGIHandler()
我的 /etc/apache2/httpd.conf:
<Directory /home/ubuntu/venv/hde_nate/web>
Order allow, deny
Allow from all
</Directory>
WSGIScriptAlias / /home/ubuntu/venv/hde_nate/web/django.wsgi
alias /static /home/ubuntu/venv/hde_nate/web
我有一个 /etc/apache2/mods-enabled/django.conf,但不确定这个文件是否必要:
WSGIScriptAlias / /home/ubuntu/venv/hde_nate/web/django.wsgi
alias /static /home/ubuntu/venv/hde_nate/web
为了安装 apache,我在我的 linux 机器上使用了这些命令:
sudo apt-get install apache2
sudo apt-get install python-setuptools libapache2-mod-wsgi
settings.py
DEBUG = FALSE
TEMPLATE_DEBUG = FALSE
编辑: 我的错误日志:
[notice] caught SIGTERM, shutting down
[notice] Apache/2.2.22 (Ubuntu) mod_wsgi/3.3 Python/2.7.3 configured -- resuming normal operations
【问题讨论】:
-
就像@LukasGraf 说的,看看 /var/log/apache2;但是,我敢打赌你没有激活 wsgi 文件中的虚拟环境: execfile(activate_this, dict(__file__=path/to/virtualenv/bin/activate_this.py))
-
这是日志文件的内容。 James_R,我不理解您发布的命令。我把它放在我的 wsgi 文件的末尾吗?我在 django 文档中阅读了以下内容: WSGIPythonPath /path/to/mysite.com:/path/to/your/venv/lib/python2.X/site-packages 在我的 httpd.conf 中。参考:docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi
-
您能告诉我们您使用的是哪个版本的 Apache 以及安装的服务器吗?
-
Apache 2.2,服务器是 Ubuntu 12 LTS。希望能回答这个问题。
-
除非您没有在示例中显示它,否则我看不到您在哪里授予 Apache 对 django.wsgi 目录的访问权限,即命令允许,拒绝。您还需要检查您的日志以告诉我们实际错误是什么。如果是 django 错误,只需设置 debug = True 即可看到错误。否则查看你的错误日志,如果没有设置一个添加 ErrorLog /yourpatch/logs/error.log 到你的 httpd.conf