2013-11-27 283 views
3

我是python的新手,但我有php的基本知識。在我開發的android和java應用程序中,我一直使用php腳本與在線mysql數據庫進行交互。但現在我想遷移到Python,我有一個問題;如何在web服務器上運行python腳本(例如localhost)

如何在Web服務器上運行python腳本?在我使用php的經驗中,我一直在Linux環境下的「/ var/www」文件夾下保存我的文件。然後我稍後使用URL調用該文件的路徑。我在哪裏保存我的Python腳本?

我一直在瀏覽官方的python文檔,但我找不到太多幫助。

+2

這可以幫助: [http://stackoverflow.com/questions/530787/simple-http-web-server][1] [1]:http://stackoverflow.com/questions/530787/simple-http-web-server –

+0

但是,python內置的http服務器對於任何你可能認爲是「生產」的東西都不是最好的。建議你使用諸如Apache和Nginx之類的東西,比如WSGI。 –

+1

可能的重複[如何安裝與Wampserver的Python](http://stackoverflow.com/questions/8266153/how-to-install-python-with-wampserver) –

回答

1

使用像CherryPy,Django,Webapp2之類的Web應用程序框架或許多其他框架之一。對於生產設置,您需要配置Web服務器以使其工作。

或者用Python編寫CGI程序。

3

您可以使用Flask運行webapps。

下面的簡單Flask應用程序將幫助您開始。

from flask import Flask, jsonify 

app = Flask(__name__) 

@app.route('/sampleurl' methods = ['GET']) 
def samplefunction(): 
    #access your DB get your results here 
    data = {"data":"Processed Data"} 
    return jsonify(data) 

if __name__ == '__main__': 
    port = 8000 #the custom port you want 
    app.run(host='0.0.0.0', port=port) 

現在,當你打http://your.systems.ip:8000/sampleurl你會得到你的移動應用使用JSON響應。

從你可以做數據庫讀取或文件讀取功能等內

您還可以添加參數如下:

@app.route('/sampleurl' methods = ['GET']) 
def samplefunction(): 
    required_params = ['name', 'age'] 
    missing_params = [key for key in required_params if key not in request.args.keys()] 

    if len(missing_params)==0: 
     data = { 
       "name": request.argv['name'], 
       "age": request.argv['age'] 
       } 

     return jsonify(data) 
    else: 
     resp = { 
       "status":"failure", 
       "error" : "missing parameters", 
       "message" : "Provide %s in request" %(missing_params) 
       } 
     return jsonify(resp) 

要運行這個保存瓶的應用程序在一個文件例如myapp.py

然後從終端來看python myapp.py

它將開始在端口8000的服務器(或由您指定)。不建議生產水平使用

瓶的內置服務器。在您對應用感到滿意之後,您可能需要查看Nginx + Gunicorn + Flask系統。

有關燒瓶的詳細說明,你可以看看這個answer。這是關於在樹莓派上建立一個網絡服務器,但它應該可以在任何Linux發行版上運行。

希望有所幫助。

0

python中的大多數web開發都是使用web框架進行的。這比在服務器上有簡單的腳本不同,因爲該框架擁有了更多的功能,如處理URL路由,HTML templatingORM,用戶會話管理,CSRF保護,以及大量的其他功能。這使得開發網站變得更容易,特別是因爲它以OOP方式促進組件重用。

最流行的Python的Web框架是Django。這是一個全功能的,tighly耦合的框架,有很多可用文檔。如果你喜歡的東西更加模塊化,更容易定製,我個人建議Flask。還有lots of other choices available。這就是說,如果你真的想要在服務器上運行一個簡單的Python腳本,你可以使用apache + cgi來檢查this question的簡單例子。

1

在Apache的最簡單的方法是編寫Python作爲CGI這裏有一個例子:

首先爲正在服務的Python Web文件夾一個.htaccess:

AddHandler cgi-script .py 
Options +ExecCGI 

然後寫蟒蛇,其中包括一些一些CGI庫和輸出頭以及內容:

#!/usr/bin/python 

import cgi 
import cgitb 
cgitb.enable() 

# HEADERS 
print "Content-Type:text/html; charset=UTF-8" 
print # blank line required at end of headers 

# CONTENT 
print "<html><body>" 
print "Content" 
print "</body></html>" 

確保文件被Apache chown apache. filename資並且執行位設置爲chmod +x filename

通過此方法實際使用Web框架(在其他答案中提到)有許多顯着的優點,但在本地主機Web服務器環境中爲其他目的而設置,您只需運行一個或兩個Python腳本,效果很好。

注意我並沒有在這個腳本中實際使用導入的cgi庫,但希望能夠引導您使用適當的資源。

相關問題