我一直在努力在最近几天使用Bitnami Djangostack在Amazon EC2上部署Django应用程序。当我访问我的主页时(例如http://example.com),我会看到默认的bitnami页面(/opt/bitnami/apache2/htdocs/index.html),但是,当我打开http://example.com/portnoy时,出现'内部服务器错误'。但是众所周知,如果mod_wsgi设置正确,则忽略来自httpd.conf的DocumentRoot值,因此,在访问http://example.com时应该看到我的Django应用程序。本质上,主要的错误是 - 'Target WSGI脚本不能作为Python模块加载'。两个问题:1)任何想法如何解决这些mod_wsgi错误(Apache日志如下)? 2)如何禁用默认/opt/bitnami/apache2/htdocs/index.html页面并在访问http://example.com时从django应用程序显示我的主页?先谢谢你!使用Bitnami Djangostack在EC2上部署Django:无法加载WSGI脚本
细节
在我的EC2实例I“m跑64位的Ubuntu 12.04与DjangoStack 1.4-1我的Django项目就设在这里 - 的/ opt/bitnami /应用/ Django的/ django_projects /波特诺 。
[email protected]:/opt/bitnami/apps/django/django_projects/portnoy# ls
manage.py README.md settings.py site_media users Procfile sandbox static test.py topics urls.py views.py __init__.pyc templates testviews.py
Apache的错误日志(/选择/ bitnami/apache2的/日志/ error_log中):
[Wed Jul 04 02:29:00 2012] [error] [client 140.180.6.212] File does not exist: /opt/bitnami/apache2/htdocs/favicon.ico
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] mod_wsgi (pid=3990): Target WSGI script '/opt/bitnami/apps/django/scripts/django.wsgi' cannot be loaded as Python module.
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] mod_wsgi (pid=3990): Exception occurred processing WSGI script '/opt/bitnami/apps/django/scripts/django.wsgi'.
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] Traceback (most recent call last):
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] File "/opt/bitnami/apps/django/scripts/django.wsgi", line 8, in <module>
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] import django.core.handlers.wsgi
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] File "/opt/bitnami/apps/django/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 8, in <module>
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] from django import http
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] File "/opt/bitnami/apps/django/lib/python2.7/site-packages/django/http/__init__.py", line 119, in <module>
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] from django.http.multipartparser import MultiPartParser
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] File "/opt/bitnami/apps/django/lib/python2.7/site-packages/django/http/multipartparser.py", line 13, in <module>
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] from django.utils.text import unescape_entities
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] File "/opt/bitnami/apps/django/lib/python2.7/site-packages/django/utils/text.py", line 4, in <module>
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] from gzip import GzipFile
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] File "/opt/bitnami/python/lib/python2.7/gzip.py", line 10, in <module>
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] import io
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] File "/opt/bitnami/python/lib/python2.7/io.py", line 60, in <module>
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] import _io
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] ImportError: /opt/bitnami/python/lib/python2.7/lib-dynload/_io.so: undefined symbol: PyUnicodeUCS2_AsEncodedString
[Wed Jul 04 02:29:15 2012] [error] [client 140.180.6.212] File does not exist: /opt/bitnami/apache2/htdocs/favicon.ico
[Wed Jul 04 02:44:00 2012] [error] [client 140.180.6.212] File does not exist: /opt/bitnami/apache2/htdocs/favicon.ico
让我快速介绍一下文件的内容,以使案例更加具体。
这是我的/ etc/apache2的/网站可用/默认文件
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
Alias /site_media/ /opt/bitnami/apps/django/django_projects/portnoy/site_media/
Alias /static/ /opt/bitnami/apps/django/lib/python2.7/site-packages/django/contrib/admin/static/
Alias /robots.txt /opt/bitnami/apps/django/django_projects/portnoy/site_media/robots.txt
Alias /favicon.ico /opt/bitnami/apps/django/django_projects/portnoy/site_media/favicon.ico
CustomLog "|/usr/sbin/rotatelogs /opt/bitnami/apps/django/django_projects/logs/access.log.%Y%m%d-%H%M%S 5M" combined
ErrorLog "|/usr/sbin/rotatelogs /opt/bitnami/apps/django/django_projects/logs/error.log.%Y%m%d-%H%M%S 5M"
LogLevel warn
WSGIProcessGroup example.com
WSGIScriptAlias//opt/bitnami/apps/django/scripts/django.wsgi
<Directory /opt/bitnami/apps/django/django_projects/portnoy/site_media>
Order deny,allow
Allow from all
Options -Indexes FollowSymLinks
</Directory>
<Directory /opt/bitnami/apps/django/django_projects/portnoy/conf/apache>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
这是我/opt/bitnami/apps/django/scripts/django.wsgi文件
import os, sys
sys.path.append('/opt/bitnami/apps/django/lib/python2.7/site-packages/')
sys.path.append('/opt/bitnami/apps/django/django_projects')
sys.path.append('/opt/bitnami/apps/django/django_projects/portnoy')
os.environ['DJANGO_SETTINGS_MODULE'] = 'portnoy.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
以下为/opt/bitnami/apache2/conf/httpd.conf文件中的相关部分:
ServerRoot "/opt/bitnami/apache2"
Listen 80
ServerName example.com
DocumentRoot "/opt/bitnami/apache2/htdocs"
LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonHome /opt/bitnami/python
Include "/opt/bitnami/apache2/conf/ssi.conf"
Include "/opt/bitnami/apps/django/conf/django.conf"
Include "/opt/bitnami/apache2/conf/bitnami/httpd.conf"
注意:在本文中,我使用example.com来指代我实际拥有的域。
非常感谢,格雷厄姆! – Arman