ミルク蒼屋のチラシ

Colloid(コロイド)が何か色々と残したりするブログです

お金をかけずにAzure App ServiceへBlazorアプリをデプロイしたい

巷で話題の.NET Core 3.0
そんな.NET Coreでできることの1つにBlazorがある
ローカルではここ↓からDLして実行できるけど

dotnet.microsoft.com

Azure上で動かすにはどうすりゃええんやと思った備忘録です
使用サービスはApp Serviceです。Dockerになると有料*1になるので今回は扱わないです。
また趣味なのでプランはFreeプランです。
当記事はCore3がリリースされたりBlazorがGAしたら不要になることを祈る

やーっていくぞ!

手順を3行で

  1. Blazorアプリをデバック実行できるようにしておく
  2. App Serviceでデプロイ先のサービスを作る
  3. デプロイ

以上。私は2番目でちと積んだのでそこを残していくぜ

前提というか今回の環境やら条件やら

  • Visual Studio 2019 Community Preview
  • .NET Core SDK 3.0.100-preview5-011568の64bit版
  • Azure App Service Freeプラン(開発用なので)

Blazorアプリをデバック実行できるようにしておく

これを見てやればいける↓

docs.microsoft.com

1つ注意点としては、勘違いしてビット環境が36と64しくじったらプロジェクト作成したらビルドエラーで死ぬところ。
エラー文もいまいちイケてないので、勘違いしてしまうと積む可能性があるので注意
ちなみに私はやらかしてこんなエラーでたので、同じようなエラー出してしまった人は環境とインストーラーをみてみるといいかも

エラー        rzc generate exited with code -2147450730.  

そんな感じで無事に実行したら、Azureのポータルにログインしておく

App Serviceでデプロイ先のサービスを作る

まずは呼吸をするようにApp Serviceを作成
f:id:Colloid:20190519174302p:plain 今回合同誌関係のサービス作りの為、命名が合同誌関係なのは気にするな!
で、赤線で強調してる項目について

ランタイムスタック

ここ、デプロイするアプリのランタイムは何なん?ということなのですが(恐らく)
今日時点ではAzure App ServiceはまだCore2.2しか対応してないという(当たり前)
現在、BlazorはCore 3で動くので…
ここをどうにか3.0プレビューにしたいよね*2。というのが1つの目的です

その他の項目の確認

  • 場所は今住んでる場所で決めていいんじゃないかな。データセンターの場所らしい
  • SKU とサイズは容量と課金。お金かけたくないのでFree F1プランを選択。あざとい仕様なので、いろんな項目変えると課金プランに変わる可能性出るので注意。

そんなサービスを作成していくぞ!
[確認と作成]をポチって確認後に作成だ!

App ServiceにCore 3.0を入れる

ぶっちゃけここ↓に載ってるけど、順を追って解説するずぇ

docs.microsoft.com

f:id:Colloid:20190519181032p:plain 先程作成したApp Serviceを選択して、各項目メニューを下スクロールすると[開発ツール]ー[拡張機能]があるので選択
そすると拡張機能がなにもないので、そこにCore 3.0を入れる。なので画像の赤矢印の先にある追加を選択
f:id:Colloid:20190519181803p:plain 拡張機能の追加でASP.NET Core 3.0 (x86) Runtimeを選択して、規約に同意して追加する

…ん?なぜ32bit版を選ぶのかって?

Freeプランが32bitになるからさ!

本当に32bitなのか見てみよう
作ったサービスの詳細は先程のサービス毎のメニューから確認できる
[設定]-[構成]のGeneral settingからサービスの仕様のようなのが確認できたり設定できる f:id:Colloid:20190519182327p:plain マウスオーバーするとわかるけど、Freeプランは32ビット固定になる。ここでまたビットの差分みたいなのが出て503エラーとか泣くしかないので注意しような
これでApp Service側の準備は完了のはずだ!

デプロイ

ここからはVisual Studio2019での作業だ
デプロイしたBlazorのソリューションを開いて、ソリューションエクスプローラーからプロジェクトを右クリックして発行
または
上のメニューから[ビルド]ー[○○の発行]を選択して発行画面を開く

発行画面を出して、開始ボタンを押下すると、発行先画面が出てくる。そこでApp Serviceからの既存のものを選択して右下の発行ボタンを押下(まだ発行されないよ!)
次画面でさっきつくったサービスを選択して、右下のOKボタンを押下する!

そうすると、警告が出てくる
f:id:Colloid:20190519183857j:plain
そう、発行になるのだ…orz
警告画面はど正論してくるけど、ガン無視して続行をポチる。 そう俺たちはさっき3.0入れたやん。そう信じて。
ガン無視してデプロイした結果、エラーで死ぬ。恐らく503エラーとかで死ぬ。 しょうがない。だってビット差分でエラーが出てるもの。

なのでデプロイ設定を変更します
f:id:Colloid:20190519184447p:plain
デプロイ後の発行画面はこのようになってるはず
ここから編集のリンクをポチる

f:id:Colloid:20190519184753p:plain
さっきの発行したときの接続設定が出てくるので、[設定]を選択
そうすると、ターゲットランタイムのデフォルト値がポータルとなってるのでそこをwin-x86に変えてあげる
ここで差分が出来てエラーで死んでいたのですね
変更して、保存して、再発行してあげましょう。

すると無事にデプロイされ、画面が出てきます。お疲れ様でした

だいたいbit周りの設定差分でコケる

開発は64bitでフリープランでは32bitになる*3ので要注意
ココらへん、ちょっと気付きにくい点なので残しました
これでお金をかけずにAzure上でBlazorが試せるので、Blazor手軽に試したいなぁという方は是非Azureの無料枠で楽しんでほしい…!

*1:初回1ヶ月は無料らしい

*2:でも選択肢に増やすという方法ではない

*3:64にしたいなら課金だなぁ