2011-10-28 163 views
3

對於這樣一個簡單的問題,我非常抱歉 - 我是WSGI開發新手,我很感激您能承受的任何耐心。部署一個Django應用程序

我做了一個Django應用程序;它在開發模式下效果很好。我運行:

python manage.py runserver 

然後直接我的瀏覽器到127.0.0.1:8000,瞧,有我的應用程序。

從這裏我絕對不能弄清楚如何在生產模式下運行我的應用程序。我已閱讀了多個頁面like thisand this和其他幾個StackOverflow。但我不知道甚至可以指導我的瀏覽器查看我的頁面是否正常工作。

我已經安裝了apache2mod_python等,但我認爲這個問題是我的誤解是在這樣一個更基本的層面。當我過去完成CGI程序時,我用一個調用cgi-bin/file.cgi的窗體將我的瀏覽器指向webroot/file.html,該窗體生成html輸出。我不知道我應該導航到.wsgi頁等

在那我應該來導航到一個.wsgi file,我也試着使包含文件的假設:

import os 
import sys 

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' 

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

path = '/home/orserang/nonparametric-protein/src/www/mysite$' 
if path not in sys.path: 
     sys.path.append(path) 

,並添加

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

apache2/httpd.conf文件,這樣它的內容是:

<Location "/mysite/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings 
    PythonOption django.root /mysite 
    PythonDebug On 
    PythonPath "['/home/orserang/nonparametric-protein/src/www/mysite'] + ['/home/orserang/nonparametric-protein/src/'] + sys.path" 
    WSGIScriptAlias /mysite /home/orserang/nonparametric-protein/src/www/mysite/django.wsgi 
</Location> 

但是,當我重新啓動apache,它說:

語法上/etc/apache2/httpd.conf的8行錯誤:
WSGIScriptAlias不在這裏

允許鑑於我甚至不知道其中我應該指向我的瀏覽器去Django wsgi頁面,我覺得有一件容易的事,我做得很不對。

也許Django WSGI應用程序需要在後臺運行,它將監聽請求(而不是通過apache)?

與部署文檔相比,僅在視圖和數據庫上的在線Django文檔相當豐富;因此,我最好的猜測是,這是一件很簡單的事情。

非常感謝您的幫助!

+1

部署到現場服務器(根據您的服務器)絕非易事,但我不清楚你在問什麼。你是在尋找一步一步的部署指南,還是有一個特定的領域,你掛斷了? –

+0

@DanielNill我充實了這個問題;我甚至不知道在哪裏指向我的瀏覽器(我的Django項目沒有單獨的文件,將'cgi'啓動其他文件)。當我試圖按照文檔指示創建'.wsgi'文件時,'apache'啓動失敗。 – user

回答

1

Django Book 2.0對此有一個概述。這不是通常與Django文檔:

Chapter 12: Deploying Django

查看「使用Django在Apache和mod_python」一節。

+0

我犯了很多錯誤 - 但我認爲最大的不是實際上在服務器上創建了一個名稱爲Django的應用程序(我認爲只要它有一些字符串指向正確的位置,它就會工作,但我相信那裏是需要知道Django應用程序在哪裏的註冊表)。感謝您的耐心和幫助! – user

1

你在混合使用mod_python和mod_wsgi部署方法。擺脫Location指令中的所有內容,但WSGIScriptAlias行除外。

+2

添加擺脫位置指令以及。 WSGIScriptAlias不應位於位置或目錄指令中。他們應該擁有自己的WSGIScriptAlias產品線。 –

1

我寫了部署在Apache用於Linux的Django項目shell腳本,

https://github.com/mukulu/shell-scripts/blob/master/deploy-django.sh

你只需要配置幾個變量的代碼第一線, ,它會找出休息。

它幾乎檢查並安裝django的依賴關係,編寫部署項目並重新啓動服務器的apache配置。

我打算給它的蟒蛇重新寫(我寫的匆忙) 隨意重新使用。

變量是:

SITE_PREFIX="/djangoproject" 

MEDIA_URL="/media" 

ADMIN_MEDIA_PREFIX="/static/admin/" 

MEDIA_ROOT="" 

DJANGO_VERSION="1.3.1" 

APACHE2_CONFIG="/etc/apache2/conf.d"  #Apache configurations directory in yoru system. 
+0

+1聽起來不錯。也許這對社區wiki有好處? – user