近日,筆者利用空閒時間寫了一個簡單的在線預定系統,使用的工具包括Python 3.5.1 和 Django 1.9.5 。早就有據說Django響亮的口號,「The web framework for perfectionists with deadlines」。此次本身親自嘗試了事後,發現果真名不虛傳,清晰簡潔的支持文檔,方便的API接口,都無一例外的吸引了我。html
既然是一個在線系統,那麼確定繞不開服務器部署的問題。我選擇了方便的新浪雲做爲後端服務器。本來覺得會比較順利,沒想到裏面細節設置仍是比較多的。在這裏,筆者記錄下這些細節設置,也算是一個比較基礎的新浪雲入門設置教程了吧!python
首先,保證你的系統在本地(127.0.0.1:[default port | 8000])測試無誤。git
關於筆者的系統的一些基本信息:web
後端:Python 3.5.1docker
框架:Django 1.9.5數據庫
數據庫:SQLitedjango
在部署以前我曾經擔憂過,新浪雲支不支持Python 3.5呢?支不支持Django 1.9?好像新浪雲的雲應用手冊上面寫了僅支持Python 2.7,那是否是意味着沒法部署呢?其實並不是這樣的,咱們使用的是新浪雲的容器(container)的功能,至關因而一個存放區域,能夠存聽任何形式的應用程序。這一點後面會講到。後端
確認了你的系統信息以後,就要開始準備一些配置文件了,咱們須要準備如下文件:安全
runtime.txt服務器
requirements.txt
Procfile
(請保證命名一致)
官方參考文檔: Python應用部署
若是你想要指定你想要使用的Python版本,你能夠經過在你的應用的根目錄下建立一個 runtime.txt 文件,在裏面寫上你要使用的Python版本。內容格式以下:
python-3.5.1
容器雲在構建應用的時候自動執行特定的命令來安裝全部的第三方依賴包,因此你須要在 requirements.txt 文件中指定你有哪些依賴。內容格式以下:
django==1.9.5
這個有個小問題,若是我有若干個第三方依賴庫,應該如何定義?行尾需不須要分號?這個語法在文檔裏沒有說明,筆者也沒有嘗試。若是有了解的請留言,謝謝!
關於requirements.txt格式問題,請看評論。 23/5/2016
官方參考文檔: Procfile
這個文件將告訴雲端服務器,如何運行你的系統。內容格式以下:
web: python manage.py runserver 0.0.0.0:5050
注意:Django服務器默認監聽的端口是127.0.0.1:8000,這會致使新浪雲應用程序的運行實例收不到任何請求,因此,在雲端開啓服務器的時候,你必須顯式地告訴服務器,監聽在0.0.0.0這個接口上,默認端口設置爲5050。這一點很關鍵!
最後,咱們會用到git命令行進行代碼的上傳,請確保你的機器上安裝有git命令行工具。
首先,在本地運行你的Python服務器。多是由於以後在上傳代碼和配置雲端,服務器生成鏡像的時候,遠程服務器和本地服務器須要有連接。若是不在本地啓動,會提示錯誤,生成鏡像失敗。開啓一個終端,進入應用程序根目錄,而後執行:
python manage.py runserver 0.0.0.0:5050
而後,開啓另外一個終端,進入應用根程序目錄,依次執行如下代碼:
git remote add sae [新浪雲給你生成的git倉庫連接] git add . git commit -am "make it better" git push sae master:1
這樣以後,咱們就已經
建立了一個遠程倉庫,之後的每一次push都會自動的存放到這個倉庫中;
檢測了代碼是否發生變化;
開始上傳代碼;
不出意外的話,這個時候須要你輸入 安全郵箱 和 安全密碼 了,不要輸錯了。
上傳成功以後,稍等片刻,你就能夠登陸你的新浪雲管理帳號,前往 應用 - 容器管理 中,查看 狀態 了。理論上來講應該是「運行」字樣。
這裏有一個小插曲,在走通了以前的全部步驟,而且沒有報錯的狀況,我等待了超過1小時,發現本身的兩個實例的 狀態 依舊是「處理中」。這非常奇怪。沒轍了,只可以提交工單,聯繫客服。後來才知道,原來正好那段時間他們在作系統升級。因此,有的時候,該調戲客服的時候,仍是要大膽行動的。
Weiming
2016.4.21