使用Azure應用託管平臺服務,能夠爲運維人員省去大量的基礎服務器的管理工做,而且能夠和Azure DevOps, GitHub, BitBucket, Docker Hub, Azure Container Registry等配合使用實現持續集成和持續部署。現階段Global Azure也推出了Azure App Service on Linux 服務,用戶能夠託管他們的應用在Linux環境下,目前支持大多數開發語言和版本,對Python的支持處於public preview階段,接下來咱們作一個Django項目的操做演示,探索下這項服務的使用。python
1,首先咱們在本地建立一個Django項目hello,確認運行沒問題;linux
django-admin startproject hello
cd hello
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
2,而後在項目所在的文件夾下運行:web
pip freeze > requirements.txt
這一步是爲了生成本項目所依賴的環境清單,例如docker
由於應用是以Docker container的方式跑在後臺的,因此後面部署至Azure的時候容器會自動運行pip install -r requirements.txt來安裝這個應用的依賴項。django
3,上傳至web app,運行命令:瀏覽器
az webapp up -n ruchanappdemo
運行完的截圖以下:服務器
簡單描述一下這個過程,az webapp up這個命令會自動執行如下幾步:app
(1),建立一個默認的資源組appsvc_rg_Linux_centralus;框架
(2),建立一個默認的app plan appsvc_asp_Linux_centralus;運維
(3),建立一個app,名稱爲ruchanappdemo;
(4),將項目打包,從如今的目錄下部署到建立的web 服務上。
看下這條命令的參數:
目前要求的參數裏,支持了指定的訂閱,產品組正在把--resource-group 和--plan加進去,方便用戶指定特定的資源組和應用服務計劃。
上傳完成後,瀏覽器輸入https://ruchanappdemo.azurewebsites.net 發現報錯了,正常,,由於咱們須要把ALLOWED_HOSTS修改下:
ALLOWED_HOSTS = ['ruchanappdemo0.azurewebsites.net']
修改完了從新運行更新:
az webapp up -n ruchanappdemo -l centralus #-l 表明location
最後檢查結果,能夠了。
幾點補充說明的:
1,修改web app 的python版本:
az webapp config set --resource-group <resource-group-name> --name <app-name> --linux-fx-version "PYTHON|3.7"
2,應用的後臺默認用guicorn作WSGI和http服務器,支持guicorn的自定義配置,例如:
gunicorn --bind=0.0.0.0 --timeout 600 --chdir website hello:myapp
若是要用non-Gunicorn 服務器,也能夠用命令更改:
python3.7 -m aiohttp.web -H localhost -P 8080 package.module:init_func
3,每個應用部署過程,都會先自動檢查有沒有Django文件,下來檢查有沒有Flask,若是兩個框架都沒找到,就運行一個默認的app出來。若是你想運行一個自定義的docker image,能夠參考:https://docs.microsoft.com/en-us/azure/app-service/containers/tutorial-custom-docker-image
4,其餘一些好比爲應用加自定義域名,查看容器裏的日誌等,能夠參考:https://docs.microsoft.com/en-us/azure/app-service/containers/how-to-configure-python#customize-startup-command.
最後附上一些其餘的參考連接:
https://docs.microsoft.com/en-us/azure/app-service/containers/quickstart-python;
https://docs.microsoft.com/en-us/azure/app-service/containers/how-to-configure-python;
https://docs.microsoft.com/zh-cn/azure/app-service/manage-custom-dns-buy-domain.