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