![見出し画像](https://assets.st-note.com/production/uploads/images/112119226/rectangle_large_type_2_d8880bf3b020ead200a6b00fad50d917.png?width=1200)
Azure AppServiceでFastAPIで作ったWebAPI、Webアプリをデプロイする①
プログラミング学習の一環としてFastAPIでWebAPIを作成し、
Azure AppServiceでデプロイをしているのでそのデプロイ手順を
書いていきます。
DjangoやFlaskでは下記のように公式チュートリアルがありますが、
FastAPIをデプロイする際にはもうひと手間発生します。
FastAPIで開発する際に、サーバー起動方法としてuvicornを使いますが、
Azure AppServiceでも同じようにuvicornを使って起動する事が出来ます。
GitHubにローカルで開発したWebAPIをコミット
GitHub Actionsを使ったデプロイを行うため、
GitHubのリモートレポジトリにコミットします。
サンプルWebAPIを用意していますので、
とりあえず試してみたい方はご利用下さい。
スタートアップファイルの設定
レポジトリにAppServiceで起動させるためのスタートアップファイルを
追加コミットします。
スタートアップファイルで記述するコードは
python -m uvicorn main:app --host 0.0.0.0
のみで、テキストファイル(.txt)で大丈夫です。
サンプルアプリでは一番下に保管されています。
デプロイを行う
続いて、Azure Portalでデプロイを行っていきます。
まずは、PortalからWeb Appを選択。
![](https://assets.st-note.com/img/1690726244026-VClTKw48gW.png)
App Serviceの画面に遷移した後、「Webアプリ」を選びます。
![](https://assets.st-note.com/img/1690726392885-qygy8kzw4k.png)
作成画面に遷移後、リソースとコストを管理するサブスクリプションを
選択します。
![](https://assets.st-note.com/img/1690738959351-J04MPHBfut.png?width=1200)
インスタンスの詳細を設定していきます。ポイントは、
・ランタイムスタックはローカル開発時のPythonと同じバージョンに
します。
・オペレーティングシステムはLinuxです。Windowsではありません。
・価格プランはBasic以上にします。
この価格プラン以上にしないと次に設定するGitHubActionsを
利用出来ません。
![](https://assets.st-note.com/img/1690726718588-8BuseLlnKS.png?width=1200)
GitHubActionsの設定を行います
継続的デプロイを有効化した後、組織に自分のユーザーアカウント、
リポジトリにデプロイするWebAPIのレポジトリ、ブランチはmainを
指定します。
とりあえず必要な設定はここまでで、「確認および作成」をクリックすると
デプロイがスタートします。
![](https://assets.st-note.com/img/1690727671499-LuVGBVbKcR.png?width=1200)
![](https://assets.st-note.com/img/1690738391029-JcEFReU265.png?width=1200)
![](https://assets.st-note.com/img/1690739130227-zTejzQrgDg.png?width=1200)
![](https://assets.st-note.com/img/1690739173163-X9DpmVFvVr.png?width=1200)
リソースに移動すると、WebAppの管理画面に遷移します。
![](https://assets.st-note.com/img/1690739208810-56IUAmCTR3.png?width=1200)
次に、サンプルではデータベースのマイグレーションを行います。
管理画面上の「SSH」からmigrate_db.pyを実行します。
![](https://assets.st-note.com/img/1690729231461-Hjbv43CfEU.png?width=1200)
SSHはLinuxのため、migrate_db.py実行時は
「python3 migrate_db.py」
コマンドで行います。
![](https://assets.st-note.com/img/1690729359383-Az9TJn4hlz.png?width=1200)
ここまで来ればFlaskは「既定のドメイン」からWebアプリに
アクセス出来ますが、FastAPIではもう一つ作業が必要になります。
![](https://assets.st-note.com/img/1690729602539-A4jEXp8tAJ.png?width=1200)
スタートアップファイルをWebAppに反映させる
先ほどGitHubにコミットしたスタートアップファイルを
WebAppに反映させる作業を行っていきます。
管理画面から「構成」を選択し、「全般設定」をクリックします。
![](https://assets.st-note.com/img/1690730680470-Ljd0J2dCbQ.png?width=1200)
スタートアップコマンドにスタートアップファイル名を記入し、
保存します。
![](https://assets.st-note.com/img/1690730896257-AF7TiUeCfT.png?width=1200)
上記の作業が済んだら、既定のドメインからアクセスしてみましょう!
![](https://assets.st-note.com/img/1690731236053-RojshBlE5l.png?width=1200)
WebAppの削除
作業は以上となりますが、WebAppの削除手順も書いていきます.
管理画面から削除をクリックします。
![](https://assets.st-note.com/img/1690739380952-Ho6JiYDSc6.png?width=1200)
また、リソースグループ「apptest」も削除します。
![](https://assets.st-note.com/img/1690731778108-FtBm2plG41.png?width=1200)
クリックして画面遷移した後、「リソースグループの削除」を
クリックします。
![](https://assets.st-note.com/img/1690731979993-hmmNthGrmf.png?width=1200)
これでWebAppの削除が完了しました。
以上で今回の記事は終わりとなりますが、実はFastAPIの起動は
gunicornを使う事が推奨されています。
次回はFastAPIをgunicornで動かす方法を書いていきたいと思います。
※サンプルWebAPIでの注意事項
この記事ではサンプルWebAPIでマイグレーションをしていますが、
これはSQLite3データベースを生成する形で行っています。
この方法はAzure WebAppでの正規のデータベース運用方法ではないため、
ブラウザ上でのJWT認証が正しく動作しないのでご注意下さい。
この記事が気に入ったらサポートをしてみませんか?