【Azure】Azure Web AppsでFlaskの実行してみた【Azure Web Apps】

はじめに

こんにちは、がんがんです。
イベント関係でWebサイトを作ったり、何か出来ないかなと日々考えおります。

今回は普段使っているPythonを用いてAzure Web Appsの実験を行ったときの備忘録です。

目的

  • Flaskの復習
  • Azure Web Appsを使ってみる
  • Web AppsでFlaskを実行してみる

環境

Windows環境で行いました。Git for Windowsはインストール済み。

参考記事

microsoftou.com

公式サンプルをクローンする

まずは公式のリポジトリをクローンします。

git clone https://github.com/microsoftou/flask-on-azure-webapps flask

次に仮想環境を構築し、必要なパッケージをインストールします。インストールは以下のコマンドです。
テキストに書いてあるFlaskのバージョンをインストールしてくるコマンドです。

pip install -r .\requirements.txt

最後にFlaskを実行し、無事に画面が表示されたら準備完了です。
f:id:gangannikki:20190713233809j:plain

Web Appsの作成

次にWeb Appsを作成していきます。今回は参考記事を参照してCloud Shellで行います。

まずは以下のコマンドでデプロイ用のアカウントを作成します。エラーが表示されずID等が出力されればOKです。

az webapp deployment user set --user-name <ユーザー名> --password <パスワード>


次に実際にWebAppsのプランを作成します。リソースは既存のものでも大丈夫です。
(今回Bashで作成していたのに、リソースはPowerShellのものを指名していてはじめ失敗しましたが)

az appservice plan create --name <プランの名前> --resource-group <リソースグループ名> --sku FREE


最後にWeb Appsの作成を行います。それぞれのパラメータは以下の通りです。

az webapp create --resource-group <リソース名> --plan <プラン名> --name <Webアプリ名> --runtime "python|3.6" --deployment-local-git
  • リソース名:既存のものでも新規でも大丈夫です
  • プラン名:先ほど作成したプラン名
  • Webアプリ名:URLのホスト名として使用される名前
  • runtime:今回はPython3.6で実行するために指定しています。参考サイトでは3.4を指定してました


エラーなく実行されていれば、以下にアクセスした際に問題なく表示されると思います。

https://<Webアプリ名>.azurewebsites.net/

f:id:gangannikki:20190713173000j:plain

Flaskアプリをデプロイする

最後にGitを用いてデプロイを行います。まずはリモートリポジトリを作成します。
デプロイユーザー名、Webアプリ名はどちらも上記で作成したものです。

git remote add azure https://<デプロイユーザー名>@<Webアプリ名>.scm.azurewebsites.net:443/<Webアプリ名>.git

git remoteで一覧を表示すると確かに増えているのが確認できます。git remote -vでそれぞれの詳細まで見れます。


次にリモートリポジトリをデプロイします。

git push azure master

デプロイ時にポップアップが表示されることがあります(初回デプロイ時だけだと思います)。その時はデプロイ用のユーザー名、パスワードを入力すれば良いみたいでした。
Webブラウザに表示されていればOKです。
f:id:gangannikki:20190713233809j:plain

Webアプリの更新

ページが完成したので、更新させてみようと思います。今回は参考記事を参考にして以下のようにmain.pyを変更します。

変更前

f:id:gangannikki:20190713233607j:plain
変更前

変更後

f:id:gangannikki:20190713233540j:plain
変更後

変更したら以下のコマンドを入力してリモートリポジトリへpushします。

git add -A
git commit -m "Commit Comment"
git push azure master

実際にWebサイトを見てみると変更されていることがわかります。
f:id:gangannikki:20190713234026j:plain

今回困った点

1.Pythonのバージョンが3.4で指定できなかったこと

参考記事ではPythonのバージョンを3.4に指定していました。これはおそらく公式リポジトリのバージョンが3.4と2.7だからと考えられます。
しかし、3.4を指定しようとするとエラーが起きました。web3.4.configweb3.6.configに変更して、3.4に関する記述を3.6に変更すれば解決するかなという浅はかな考えもむなしく、エラーに終わりました。


解決方法は以下のサイトを参考にしてPythonのバージョンを3.6に設定しました。
設定後は無事に動作しました。
microsoftou.com

2.ページが表示されないエラー

完成したかなと思って確認すると以下のような画面が表示されていました。
f:id:gangannikki:20190713233520j:plain

こちらの記事では新規作成したら直ったようです。
今回の場合は、WebAppを再起動したら大丈夫でした。

まとめ

今回はAzure Web Apps上でPythonのFlaskアプリを動かしてみました。
Gitコマンドでデプロイできることもあり、意外と簡単に出来るのだなという印象です。
今回のを用いてWeb系の勉強を続けていきます。