Apache-2.2

django mod_wsgi的ubuntu linode伺服器404錯誤

  • July 4, 2013

我已經用 apache2 和 mod_wsgi 配置了一個 linode 伺服器。

  1. 伺服器正在執行
  2. wsgi 正在執行
  3. postgre 正在執行並且 syncdb 成功

我無法完成的實際上是為應用程序提供服務..

我的文件結構:

.
├── logfile
└── srv
   ├── logfile
   └── www
       └── quickerhub.com
           ├── admin
           │   ├── css
           │   │   ├── base.css
           │   │   ├── changelists.css
           │   │   ├── dashboard.css
           │   │   ├── forms.css
           │   │   ├── ie.css
           │   │   ├── login.css
           │   │   ├── rtl.css
           │   │   └── widgets.css
           │   ├── img
           │   │   ├── changelist-bg.gif
           │   │   ├── changelist-bg_rtl.gif
           │   │   ├── chooser-bg.gif
           │   │   ├── chooser_stacked-bg.gif
           │   │   ├── default-bg.gif
           │   │   ├── default-bg-reverse.gif
           │   │   ├── deleted-overlay.gif
           │   │   ├── gis
           │   │   │   ├── move_vertex_off.png
           │   │   │   └── move_vertex_on.png
           │   │   ├── icon_addlink.gif
           │   │   ├── icon_alert.gif
           │   │   ├── icon_calendar.gif
           │   │   ├── icon_changelink.gif
           │   │   ├── icon_clock.gif
           │   │   ├── icon_deletelink.gif
           │   │   ├── icon_error.gif
           │   │   ├── icon-no.gif
           │   │   ├── icon_searchbox.png
           │   │   ├── icon_success.gif
           │   │   ├── icon-unknown.gif
           │   │   ├── icon-yes.gif
           │   │   ├── inline-delete-8bit.png
           │   │   ├── inline-delete.png
           │   │   ├── inline-restore-8bit.png
           │   │   ├── inline-restore.png
           │   │   ├── inline-splitter-bg.gif
           │   │   ├── nav-bg.gif
           │   │   ├── nav-bg-grabber.gif
           │   │   ├── nav-bg-reverse.gif
           │   │   ├── nav-bg-selected.gif
           │   │   ├── selector-icons.gif
           │   │   ├── selector-search.gif
           │   │   ├── sorting-icons.gif
           │   │   ├── tool-left.gif
           │   │   ├── tool-left_over.gif
           │   │   ├── tool-right.gif
           │   │   ├── tool-right_over.gif
           │   │   ├── tooltag-add.gif
           │   │   ├── tooltag-add_over.gif
           │   │   ├── tooltag-arrowright.gif
           │   │   └── tooltag-arrowright_over.gif
           │   └── js
           │       ├── actions.js
           │       ├── actions.min.js
           │       ├── admin
           │       │   ├── DateTimeShortcuts.js
           │       │   ├── ordering.js
           │       │   └── RelatedObjectLookups.js
           │       ├── calendar.js
           │       ├── collapse.js
           │       ├── collapse.min.js
           │       ├── core.js
           │       ├── getElementsBySelector.js
           │       ├── inlines.js
           │       ├── inlines.min.js
           │       ├── jquery.init.js
           │       ├── jquery.js
           │       ├── jquery.min.js
           │       ├── LICENSE-JQUERY.txt
           │       ├── prepopulate.js
           │       ├── prepopulate.min.js
           │       ├── SelectBox.js
           │       ├── SelectFilter2.js
           │       ├── timeparse.js
           │       └── urlify.js
           ├── interest
           │   ├── django.wsgi
           │   ├── __init__.py
           │   ├── __init__.pyc
           │   ├── settings.py
           │   ├── settings.pyc
           │   ├── urls.py
           │   └── wsgi.py
           ├── js
           │   └── jquery-1.10.1.min.js
           ├── logfile
           ├── manage.py
           ├── README
           ├── reoccurring
           │   ├── admin.py
           │   ├── forms.py
           │   ├── __init__.py
           │   ├── __init__.pyc
           │   ├── models.py
           │   ├── models.pyc
           │   ├── usagelib.py
           │   └── views.py
           ├── schedule
           │   ├── admin.py
           │   ├── __init__.py
           │   ├── __init__.pyc
           │   ├── models.py
           │   ├── models.pyc
           │   ├── tests.py
           │   ├── usagelib.py
           │   └── views.py
           ├── src
           │   ├── facebooksdk
           │   │   ├── examples
           │   │   │   ├── appengine
           │   │   │   │   ├── app.yaml
           │   │   │   │   ├── example.html
           │   │   │   │   └── example.py
           │   │   │   ├── newsfeed
           │   │   │   │   ├── app.yaml
           │   │   │   │   ├── facebookclient.py
           │   │   │   │   ├── static
           │   │   │   │   │   ├── base.css
           │   │   │   │   │   ├── favicon.ico
           │   │   │   │   │   └── robots.txt
           │   │   │   │   └── templates
           │   │   │   │       ├── base.html
           │   │   │   │       ├── home.html
           │   │   │   │       └── index.html
           │   │   │   ├── oauth
           │   │   │   │   ├── app.yaml
           │   │   │   │   ├── facebookoauth.py
           │   │   │   │   └── oauth.html
           │   │   │   └── tornado
           │   │   │       ├── example.html
           │   │   │       ├── example.py
           │   │   │       └── schema.sql
           │   │   ├── facebook.py
           │   │   ├── facebook_sdk.egg-info
           │   │   │   ├── dependency_links.txt
           │   │   │   ├── PKG-INFO
           │   │   │   ├── SOURCES.txt
           │   │   │   └── top_level.txt
           │   │   ├── MANIFEST.in
           │   │   ├── README.rst
           │   │   └── setup.py
           │   └── pip-delete-this-directory.txt
           ├── static
           │   └── js
           │       └── jquery-1.10.1.min.js
           ├── templates
           │   ├── 404.html
           │   ├── 500.html
           │   ├── Base.html
           │   ├── Home.html
           │   ├── Reoccurring.html
           │   └── Usersettings.html
           └── usersetting
               ├── admin.py
               ├── __init__.py
               ├── __init__.pyc
               ├── models.py
               ├── models.pyc
               └── views.py

我的 django.wsgi:

import os
import sys

sys.path.append('/srv/www/quickerhub.com/')

os.environ['PYTHON_EGG_CACHE'] = '/srv/www/quickerhub.com.python-egg'
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

我的 httpd.conf:

WSGIScriptAlias / /www/quickerhub.com/interest/django.wsgi

<Directory /srv/www/quickerhub.com>
Order allow,deny
Allow from all
</Directory> 

我的網站啟用/quickerhub.com:

WSGIPythonPath /srv/www/quickerhub.com
<VirtualHost *:80>
   ServerName quickerhub.com
   ServerAlias testing.quickerhub.com

   Alias /static/ /srv/www/quickerhub.com/interest/static/
   # Alias /sitemap.xml /srv/www/quickerhub.com/interest/static/sitemap.xml
   WSGIScriptAlias / /srv/www/quickerhub.com/interest/django.wsgi

   <Directory />
       AllowOverride None
       Options -Indexes
   </Directory>

   <Directory /srv/www/quickerhub.com/.git/>
       Deny From All
   </Directory>

</VirtualHost>

請幫忙!謝謝!

該目錄/srv/www不存在或 Apache 無法讀取。檢查它的存在和權限(它應該是世界可讀/可執行的)。

sudo chmod a+rx /srv/www

您必須重新檢查三件事

  1. 檢查 httpd.conf 文件中的 mod_wsgi 路徑。使用 find 命令獲取 django.wsgi 的絕對路徑

WSGIScriptAlias / /path/to/mysite/apache/django.wsgi

  1. 檢查 /srv/www/quickerhub.com 的所有權和權限
  2. 在 httpd.conf 中添加以下給定語法並重新啟動 apache
<Directory /srv/www/quickerhub.com>
Order allow,deny
Allow from all
</Directory>

引用自:https://serverfault.com/questions/520628