使用apache2 + mod_wsgi提供django应用程序

时间:2013-07-03 15:33:00

标签: python django apache mod-wsgi virtualhost

我已经使用apache2和mod_wsgi ..

配置了一个linode服务器
  1. 服务器正在运行
  2. wsgi正在运行
  3. postgre正在运行,syncdb成功
  4. 我在整理过程中遇到的问题实际上是在为应用程序提供服务..

    我的文件结构:

    .
    ├── 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:

    我的网站启用/ quickerhub.com:

    WSGIPythonPath /srv/www/quickerhub.com
    <VirtualHost *:80>
        ServerName quickerhub.com
    
        Alias /static/ /srv/www/quickerhub.com/interest/static/
        WSGIScriptAlias / /srv/www/quickerhub.com/interest/django.wsgi
    
        <Directory />
            AllowOverride None
            Options -Indexes
        </Directory>
    
    
    </VirtualHost>
    

    我觉得一切都指向正确的东西......

    编辑:

    现在只是找不到404文件

    请帮忙! 谢谢!

2 个答案:

答案 0 :(得分:1)

我只是使用WSGI在Linode上设置我的网站www.noobniche.com。不幸的是,我不在家比较我的设置,如果你今晚仍然遇到问题我可以调查一下。从我的内存来看,我必须通过添加到启用站点和站点可用来启用。

结构看起来应该与此类似;

webapps(root directory)
    nichesite
        static
        django_project_name
            --> myproject.wsgi
            --> settings.py
            --> urls.py
            --> views.py
        manage.py

似乎您的.wsgi文件位于您的根目录中,当它位于您的django项目文件夹中时。

答案 1 :(得分:0)

所以看起来好像WSGIScriptAlias的设置有冲突 - 一个在httpd.conf中,指向wsgi文件的正确路径,一个在启用网站的文件中,指向错误的路径(/var/而不是/srv/)。

您应该删除httpd.conf中的那个并将其移至sites-enabled / quickerhub.com,以使其版本正确指向/srv/