二度寝を楽しもうかと思っていたら、Twitter で @ が飛んできて起きることにしました。こんなの飛んで来たら爆睡してても起きるしかない感じです。
AzureでPHPとNode.jsがLinuxで動くPaaSをPreview始めました。まだリージョン狭めです。ついに、ですな。 https://t.co/FKwjdPMy4F
— 吉田パクえ (@yuya_lush) October 4, 2016
よーーーやくアナウンスできました。だいぶ前から作ってましたが言えませんでした @kanreisa @kosmosebi @shibayan
— 帝国兵 (@superriver) October 4, 2016
帝国兵さんから @ が飛んでくるということはブログに書けと同義なので、Introduction を読みつつ App Service on Linux を試してみました。と言ってもいつも通り環境とかランタイム周り中心です。
普通にアプリを作って遊びたい人は公式のドキュメントを読んだ方が良いと思います。
まだポータルの Web + mobile には表示されていなかったので、今のところは検索する必要があるみたいです。作成に必要な情報はこれまで通りですが、Runtime Stack が追加されています。
今のところ Node.js と PHP だけが利用可能になっていますが、今後追加されていくみたいです。
@shibayan Ruby欲しいのはわかってますのでもうちょっと待ってくださいねー
— 帝国兵 (@superriver) October 4, 2016
ドキュメントには West US / West Europe / Southeast Asia で利用可能とありましたが、自分のアカウントでは West US しか選べなかったです。ちなみに占有インスタンスのみです。
F1 と D1 は今後も提供されない気がしますし、スケールアップも難しい感ありそうです。ぶちぞうさん曰く VMSS が使われるようになったのではということでした。
Linux の App Service Plan は一目で Linux と分かるようにアイコンが変わっています。
デフォルトドキュメントはまだ未設置のようで、Apache と Ubuntu で動いているのが確認できるようになっていました。正式版までには消されるでしょう。
基本的には Windows 版の Web Apps とほとんど変わっていないように見えます。アプリケーションの設定からはランタイムの設定が行えますが、プレビューなので項目は少ないです。
ARR Affinity の設定があるので、フロントエンドは Windows と共有のようです。
少し驚いたのが、普通に Kudu が Linux 版でも用意されていたことです。
冷静に考えると Web Apps の最重要コンポーネントなので、Kudu がないと Web Apps と言えないですが、普通に Linux で動いています。思い返せば、ちょいちょい Kudu に Mono 向けコード入っていましたね。
機能はまだいろいろと少ないです。Process Explorer ぐらいは何時かは実装されそうです。
最低限、デプロイに必要な機能が実装されているという印象です。API も変わっていません。
みんな気になる環境情報ですが、この Kudu は Mono で実行されていることがすぐにわかります。何気に Mono で動いてる商用サービスは珍しいのではないでしょうか。
例によって Kudu を使って、色々と確認してみた感じでは Linux 版の Web Apps は Windows 版と同じディレクトリ構成で、同じように /home 以下はファイルサーバーにマウントされているということです。
mount コマンドを叩くとファイルサーバーが参照されていることがすぐにわかります。
アプリケーションのデプロイですが、当然ながら MSDeploy は使えないので基本的には LocalGit か GitHub 連携を使うことになると思います。FTP は流石に捨てましょう。
Git を使ってデプロイすると、これまで通りデプロイスクリプトが KuduScript によって生成されて、実際のデプロイが行われていることがログから確認できます。
なので、カスタムデプロイスクリプトを作成して処理を変えることも、これまで通り出来そうです。当然ですがデプロイスクリプトは bash で書く必要があります。
Node.js については少し面倒なので、公式ドキュメントを紹介だけしておきます。
Kudu 関連ツールは元々 Node.js で書かれていたり、デプロイスクリプトも bash が使えるようになっていたりと、解釈によっては Linux での動作を考えていたと取れなくもないですね。
個人的には Docker で分離された環境が欲しいと思いました。当然考えられてそうですが。