Azure Web AppsでBottleアプリを作成

Azure App ServiceはAzureのPaaS環境。
その中でもWebサービス基盤を提供するWeb Appsは、VMまでは必要ないけれど、簡単にCMSを立ち上げたり、自前のWebアプリを構築したりといった場合に便利です。
何といっても、最小構成なら無料で構築できるプランがあります。
# もちろんAzureからのデータ送信は課金されます。

ここでは、App Serviceを使ってBottle(Python製Webアプリフレームワーク)の環境を立ち上げてみます。
といっても、Market PlaceでBottle用イメージが提供されているので、それを使ってデプロイする(クラウド上に展開し、アプリの実行環境を構築すること)だけです。

環境を作成した後は、自作のコードをアップロードして稼働させることができます。

Azureは独自のデプロイエンジン(Kudu)を持っており、Visual Studioとの連携などでリッチな開発ができますが、ここで記載するように、ローカルのGitレポジトリからプッシュするだけならGitの使い方さえ押さえておけば大丈夫です。

流れとしては、App Serviceの作成 → Git経由でソースをプッシュ、となります。

Azure App Serviceの作成

AzureのMarket PlaceからBottleのイメージを選んでApp Serviceの作成を行います。
名称やサービスプラン、作成先のリージョンなどのオプションは適宜設定して下さい。
もちろん構成によりますが、作成作業は数分で完了するでしょう。「通知」画面でタスクの進行状況が確認できます。

以下は作成されたApp Service画面での作業になります。

デプロイ用アカウントの設定

コードやログをファイル転送する際など、アクセス制御がかかっている作業では、「デプロイ資格情報」のページで設定したアカウントを使うことになります。
同じAzureサブスクリプションで使い回せるので、済んでいなければここで設定しておきましょう。

デプロイオプションの設定

Azure App Serviceにデプロイされたソースコードを編集するには、FTPやOneDriveなどでファイルを転送する必要があります。画面を見るに、「ソース管理」と呼ばれているようですね。
ここではGitを経由してローカルのレポジトリと同期させることにしました。

App Serviceを最初にデプロイした直後は公式のGitHubからプルしたソースコードで稼働していますので、
GitHubからの切断、さらにローカルレポジトリからプッシュするための設定が必要になります。

「デプロイオプション」画面から「切断」を選択します。

同じく「セットアップ」からローカルGitレポジトリと連携させる設定を行います。

「概要」ページに表示されているアドレスがリモートのGitレポジトリのURLになります。
おそらく以下のような形式になっているはずです。

ローカルGitレポジトリの作成

現在デプロイされているコード一式を取得するために、上記のレポジトリURLからクローンしてローカルレポジトリを作成します。

クローンされたレポジトリのディレクトリを覗くと、Bottleアプリケーションのテンプレ一式が格納されていることが分かります。

クローンするかわりに、ローカルレポジトリを一から作成するやり方でも構いません。
この場合、ソース管理から切断する前に「概要」ページに表示されていたアドレス(下記)が公式に提供されているGitHubのレポジトリなので、ここからソースをダウンロードしてローカルレポジトリを初期化すると便利です。
リモートレポジトリとして、上述のレポジトリURLを追加しましょう。

(公式レポジトリ) https://github.com/azureappserviceoss/BottleAppAzure

ローカルGitレポジトリからのプッシュ

あとは通常の開発と同じです。(参考:BottleでWeb API作成
初期のテンプレはWebアプリのサンプルになっているので、静的コンテンツやテンプレートエンジン用のディレクトリがありますが、不要なら削除しても構いません。

コーディングができたら、masterブランチにコミットしてプッシュします。再起動は必要ありません。

デプロイの状況は「デプロイオプション」のページから確認することができます。