作りたいもの
KintoneとかSansanやらの導入でWebAPI経由でデータを整理して表示する的なウェブアプリ(ウェブページ)が欲しくなることが増えてきました。
まずはMicrosoftのアカウントなどを利用してAzure上でアプリを限定公開する仕組みのお勉強。
実施事項 お品書き
Azureでウェブアプリを作ったことないので、そこから体験。
- WebAPPのチュートリアルに従いFlaskアプリのデプロイ
- WebAPPに認証の仕組みを導入
こんなフォルダ構成で進めようと思います
webapptest
├─env (pythonのvirtual env)
└─python-docs-hello-world (デプロイするウェブアプリ)
環境情報
- Python3.7 [Anaconda/ Miniconda]
- GitHub for Windows
- Azure CLI
ローカルでFlask
まずはFlaskアプリをちょいちょいと起動して確認。
mkdir webapptest
cd .\webapptest\
git clone https://github.com/Azure-Samples/python-docs-hello-world
python -m venv env
.\env\Script\activate
pip install -r .\python-docs-hello-world\requirements.txt
Set-Item Env:FLASK_APP ".\python-docs-hello-world\application.py"
flask run
これで、localhost:5000に、"Hello World"が出るはず。 Ctrl+Cでサーバを止めます。
Azure WebAppのデプロイ
動作確認したアプリをazure側に…. 東日本にアプリ立てます。
az webapp upはリソースグループからサービスプラン、アプリ環境立ち上げ、deployするファイルのzip化とDeployまで1コマンドでやってくれます。
アップロードされたものの中身はサーバ側の"site\wwwroot"にそのまま展開されます。azure portalでほって行くとsshが用意されているので、それを使って確認できます。
cd .\python-docs-hello-world\
az login
az group create -n devtest -l japaneast
az webapp up -n pid123 -l japaneast -p webappfree -g devtest --sku free
これでhttp://<app-name>.azurewebsites.net にデプロイされているはず(ここではpid123が<app-name>)
ちなみに…
az webapp upにwebappのテナント作るまでを手でやるとしたら下記相当なんですが、powershellだと"python|3.6"の|が何故かパイプと認識されるみたいで""""とするなどカッコをカッコで囲う必要があります。
az appservice plan create -g devtest -n webappfree -l japaneast --sku FREE
az webapp create -g devtest -n pid123 -p webappfree -r '"python|3.6"'
zipでアップロードしてデプロイする場合は、アップロードする内容をdeploy.zipに固めて…下記っぽい。未だうまく行っていないので原因究明中。
az webapp deployment source config-zip -g devtest -n pid123 --src deploy.zip
認証の設定
Azure-Portalでwebappのページへ行きます。設定ページでAuthentificationの項目へ飛び、認証を有効にすると設定できます。
アカウント毎にアクセス制御をしたい場合は、Azure Active Directoryを選択し、許可のルールを設定するみたいです。
No comments:
Post a Comment