2011-06-11 65 views
3

我是一名前PHP開發人員,我努力克服了我可以編寫一個nginx配置腳本,創建目錄,啓動nginx + PHP-FPM,上傳我的代碼並讓它運行的思想。我想要開始使用Python來體驗它,並開始創建Web應用程序,但是我如何才能完成所有工作,我有點失落。如何部署用Python編寫的Web應用程序?

雖然有些人的建議總是會使用像Django這樣的框架,但我想看看這一切是如何從底層開始的。

我遇到了Python web服務器的比較,看來gevent就是我正在尋找的東西。但它們如何融合在一起?我是否還需要nginx(除了靜態內容)作爲反向代理,還是我需要做一些不同的事情?我面臨着「初學者失明」的問題,我正在努力研究如何融合在一起。

回答

2

我自己是一名初學Python開發者,所以我也有同樣的問題。也許更高級的用戶可以填寫細節。這是我迄今爲止所做的:

最簡單的入門方法是簡單地製作一個可執行的python腳本(.py)並將其放入您的cgi-bin中。然後您可以通過yourhost.com/cgi-bin/your_script.py訪問它。很容易做到,易於使用的表單處理和東西。

某些服務器會要求您重新啓動服務器,才能「看到」新的.py腳本,這對於快速開發可能相當惱人。這是很多人使用WSGI等中間件的原因之一。以下是我如何修改我的Apache配置以啓用WSGI:

LoadModule wsgi_module libexec/apache2/mod_wsgi.so 

<VirtualHost *:80> 

WSGIScriptAlias /myapp /Library/WebServer/wsgi-scripts/views.wsgi 

<Directory /Library/WebServer/wsgi-scripts> 
Order allow,deny 
Allow from all 
</Directory> 

</VirtualHost> 

views.wsgi只是一個Python腳本。現在,如果我去localhost/myapp /任何東西,它會重定向到views.wsgi。不要把這個文件放在根目錄下,否則你將無法引用靜態文件。

一個簡單的應用程序可能僅僅是這樣的:

def application(environ, start_response): 
    start_response('200 OK', [('content-type', 'text/html')]) 
    return ['Hello world!'] 

ENVIRON包含用戶嘗試訪問路徑信息,這樣的想法是,你可以建立一個網址列表,並告訴你的程序可以根據請求的URL調用函數。事情是這樣的:

path  = environ.get('PATH_INFO','') 
if path.startswith('/helloworld'): 
    # call your function that returns HTML code 

我沒有處理多用框架(如Django的),但我認爲的一個優勢存在,他們可以很容易地填寫使用任何變量HTML模板傳遞從你的腳本。 Django的模板引擎允許包含變量以及邏輯(如果,等等)與HTML混合。當函數被調用時,它返回的任何內容都會被髮送到客戶端。

我仍然很新的這一切,所以請糾正我,如果有任何錯誤在這裏...

0

Python與PHP有一點不同。 關於Python的好處是,在一個標準中定義了一個通用接口,可以讓一個人在一邊使用各種Python應用程序,另一邊使用不同的Web服務器。它被稱爲WSGI,你可以閱讀更多關於它here

here是一個很好的文章,通過ngnix部署Django應用程序。

+0

這並沒有真正回答我的問題,而我不生產基地您現在想要使用或任何其他框架Django。 – Matty 2011-06-12 00:10:40

+1

這個答案可能與你的問題有關,比你想象的要多,Django放在一邊。 – JasonFruit 2011-06-12 01:10:36

0

你需要一些軟件,將執行你的pyton代碼..

你可以嘗試100%的蟒蛇堆棧tornado

或者你也可以使用Apache,Nginx的或lighttpd的(我認爲所有的C語言編寫的),然後使用一些MOD(mod_wsgi的,fgci或uWsgi)以使這個網絡服務器使用wsgi接口來運行你的代碼。這第二個選項是像+ some_mod做什麼阿帕奇運行你的PHP代碼..

我在Apache + mod_wsgi的運行和Nginx的+ uWsgi