標籤:python sae sina app web app
早就聽說了Python的大名,隨著的程式設計語言的理解加深,越發覺得動態語言的威力--真大呀。
趁這段時間不忙,我也用Python寫了一個應用,並且將其部署到Sina App Engine (SAE)。SAE確實是一個好地方,它支援Python,對於開發人員,其使用費用幾乎為0。
更重要的是,如果我的這個app不會半路夭折,等它長大後,這個平台也能給予足夠的支援。
雖然,整個過程都很簡單,但是對於一個新手,特別是從傳統C#, Asp.net, IIS陣營過來的開發人員來說,什麼都是第一次接觸。希望我的這篇文章能夠成為你Python學習道路上的一盞小燈。
大綱
- Python安裝
- Pip安裝
- Flask安裝
- 建立一個帶頁面的Flask Web App
- 部署到SAE上
Python安裝
Python目前有兩個主要版本,2.7.x和3.x。但目前Flask對Python 3.x的支援還有些問題待解決,因此推薦使用Python 2.x。
你可以開啟以下連結下載Python 2.7.8
https://www.python.org/download/releases/2.7.8/
更多
如果你已經安裝了Python 3.x,也沒有必要將其卸載掉。你只需要在Python 2.7.x安裝完成後,修改系統的環境變數,將Path裡的Python 3.x的目錄替換為Python 2.7.x的目錄。這樣做的目的是在命令列模式下,直接調用Python 2.7。
Pip安裝
Pip是Python世界中用於安裝的工具。很多架構都支援Pip的安裝,Flask也不例外。
你可以開啟以下連結下載get-pip.py。
https://bootstrap.pypa.io/get-pip.py
建議將get-pip.py儲存在Python的根目錄下。
用管理員權限啟動command表單
運行
python get-pip.py --allow-external install
安裝完成後,它會在Python的安裝根目錄建立Scripts目錄。
建議將Scripts目錄頁添加到系統內容變數Path中,這樣方便下面的安裝過程中直接在command視窗裡輸入命令。
(注意:修改了系統內容變數Path後,最好登出一次,否則系統可能暫時找不到你輸入的命令)
Flask安裝
開啟command表單,運行pip install Flask,即完成了Flask的安裝。現在體會到了Pip的強大了吧。
由於整個安裝過程要從網上下載,所以以下介面可能要持續一段時間,如果你的網速不快,還得耐心等待。
更多
有的時候,由於網路原因,可能導致安裝失敗。如果遇到失敗的情況,多試幾次。
建立一個帶頁面的Flask Web App
在這一節中,會應用到Flask的route功能和JinJia2的Template功能。
route功能就是將請求的url映射到對應的處理方法上,這同Asp.net MVC中的route是同一個概念。
JinJia2的Template功能正如其名稱所指,是一個強大的html模板,可以將其類比為Asp.net MVC中的cshtml。
詳細內容,請參考以下連結:
http://flask.pocoo.org/docs/quickstart/#a-minimal-application
http://jinja.pocoo.org/docs/templates/
建立目錄c::\MyWebApp。
建立c:\MyWebApp\myApp.py。
myApp.py
from flask import Flask, render_templateapp = Flask(__name__)app.debug = True@app.route('/')def index():return render_template('index.html')if __name__ == '__main__': app.run()
在上面的代碼中,為index方法添加了@app.route(‘/‘)屬性,即當訪問網站根目錄時,會調用index函數。
@app.route('/')def index():
index函數返回render_template(‘index.html‘)的結果。這裡index.html作為模板頁返回給了用戶端。
return render_template('index.html')
建立目錄c:\MyWebApp\templates\。
建立c:\MyWebApp\templates\index.html。
建立c:\MyWebApp\static\。
將jquery-1.9.1.min.js存放在static目錄下。
我這裡沒有應用Jinjia2的模板特性,只是一個非常普通的html代碼。
index.html
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <script src="/static/jquery-1.9.1.min.js"></script></head><body> <p>你好, Python Flask Web App</p></body></html>
注意,index.html存放在templates目錄下, 在index.html中,引用的jquery存放在static目錄下。
在Flask中,templates目錄用於放模板,static目錄用於放靜態資源,如css, js, 表徵圖等檔案。
運行
用Python IDE開啟myApp.py,按F5,網站就跑起來了,很方便吧。
上
然後開啟瀏覽器,輸入網站地址,例如上面的http://127.0.0.1:5000/,就可以看到Python的Flask架構為我們返回的網頁了。
部署到SAE上
如果你有新浪微博,可以通過微博號直接登陸。
http://sae.sina.com.cn/
在‘我的應用程式‘上點擊‘建立新應用‘
輸入次層網域。
選擇Python作為開發語言。
建立完成後,通過SVN上傳代碼。
例如,你的次層網域為myApp,那麼SVN的地址為 https://svn.sinaapp.com/myApp。
別慌,這裡有坑!
官方有詳細文檔,我這裡需要補充的是:SAE本身允許最多10個應用版本,每一個版本對應於SVN根目錄下的目錄,目錄的名稱從1到10,我們這裡這些目錄稱為應用目錄。另外,SVN根目錄下除了包含應用目錄外,不應該包含其它東西。這個設計對於同時發布多個產品分支來說,太給力了。
因此,如果當前應用是你的第一個版本,操作步驟如下:
- 在本地建立一個目錄,執行SVN的Check Out。
- 在那個目錄下建立名稱為1的目錄,這個目錄就是應用目錄。
- 將之前的代碼都拷貝到這個為1的目錄下。
- 執行SVN的Add和Commit操作。
然後,進入SAE的代碼管理,你就會發現類似於下面的應用版本列表。
官方文檔連結
http://sae.sina.com.cn/doc/tutorial/code-deploy.html
將本地檔案上傳到SAE的應用目錄下後,還需要在應用目錄的根目錄下建立一個index.wsgi檔案,這個檔案是SAE上應用的入口,其代碼如下:
index.wsgi
import saefrom myapp import appapplication = sae.create_wsgi_app(app)
現在,大功告成,馬上就可以訪問你的網站了。
以次層網域為myApp為例,如果你要訪問當前的預設應用目錄,訪問地址為:
http://myApp.sinaapp.com
如果你要訪問某一個應用目錄,例如,第二個應用目錄,訪問地址為:
http://2.myApp.sinaapp.com
希望以後能夠在Python的學習道路上多交流。如果能夠推薦一下Python的工作機會,將不勝感激。