2015年11月13日 星期五

Python學習筆記(三) - 部署到Microsoft Azure

今天上了Microsoft Azure課程後,一直想做一件事,就是把已經寫好的demo  site部署到azure上,在多次嘗試後,終於成功。當然必要條件是要先有一個Microsoft Azure的帳戶…
今天再為demo專案加入一個新的功能,就是輸入地址,轉換為經緯度的功能;透過google map api提供的功能,讓我們很輕鬆的完成這個功能。



程式碼如下:
def address_to_location(request):
    assert isinstance(request, HttpRequest)

    address = request.GET['address']
    encodeAddress = urllib.parse.urlencode({'address': address})
    url = "https://maps.googleapis.com/maps/api/geocode/json?%s" % encodeAddress
    try:
        req = Request(url)
        response = urllib.request.urlopen(req).readall().decode('utf-8')
        jsongeocode = json.loads(response)
        if  jsongeocode['status'] == "OK":
            longitude, latitude = jsongeocode['results'][0]['geometry']['location'].values()
        else:
            return HttpResponse(json.dumps({"status": "Fail"}),
            content_type="application/json")
    except urllib.error.HTTPError as e:
        print(e.code)
        print(e.read().decode("utf-8-sig"))  
    return HttpResponse(json.dumps({"status": "OK", "lat": latitude, "lng": longitude}),
            content_type="application/json")
在本機完成這個功能後,接下來就是把整個專案部署到Azure上了,在部署過程中,參考了以下的文章,但看了一下整篇文章,都不是我想要的結果。
1.在 Azure 中使用 Django 建立 Web 應用程式
2.部署 Python 網站應用程式

甚至想放棄Azure,想說改部署到 Heroku上,於是也看了這篇文章「Django Girls 學習指南 - Deploy」,但看著看著,好像突然懂了一些東西,就是不管部署到哪裡,都是要建立virtual environment,於是在VS 2015上,把Python environment重新設定,改為virtual environment...如下所示。
1.在Python Environments,點選右鍵,然後選擇Add Virtual Environment...

2.這時候,會彈出一個視窗,會依您的系統當初安裝的Python版本,給予選擇,雖然Azure上不支援上傳64bits的virtual environment,但按下Add後,Visual studio會自動安裝同版本的32bits環境,做到這邊,已經完成80%,接下來只要將專案檔發行到Azure就完成了。

3.在專案當點滑鼠右鍵,選擇 Publish
4.接下來,選擇Microsoft Azure Web App,再按以下步驟完成即可。
5.登入Microsoft Azure帳戶,新增Web Apps


6.選擇 Web Deploy後,接下來就是一直點選下一步即可完成,如以下圖片所示。



7.完成後的畫面







沒有留言: