Windows Azure websites で Tomcat を無償で運用する

2016/10/12追記

下記件、ドキュメント外の仕様についても扱ってましたが、2016/10/12時点では、記載されている挙動とは違った動作になるそうです。
(Tomcatにライブラリを追加したい場合のlibのフォルダの位置とか)

また、勝手にシャットダウンされる旨記載されていますが、有償でシャットダウンしないオプションも現時点では用意されています。

つまり、以下の記事は古いことが判っているので信頼しないでくださいということです。

2016/10/12追記ここまで

            • -

ということで、社内の某氏に焚きつけられたのでWindows Azure Websitesを扱ってみました。

概要はこちらをご参照ください。
Windows Azure の Webサイトで Tomcat, Jetty の稼働をサポート!!!

上の記事ではとりあえず使ってみたというのが大きかったけれども、それより一歩踏み込んでみようかと。

トピック毎雑感

Kudu

Kuduという良く判らない言葉が出てますが、こちらでログを参照したり、ファイルの構成を確認したり簡単なコマンドを入力できる。
いわゆるコンソール。
Windows azureの管理コンソールからだとなぜかKuduへのリンクは張られておらず、知らないと辛いことになる。
以下のURLからアクセスできる。
https://<サイト名>.scm.azurewebsites.net/

WebMatrix

FTP?なんかいろいろできるみたいだけれども、FTPとしてしか使わない。
azureのアカウント作った時にアプリのインストールを薦められるので、とりあえず入れておくとよい。
WebMatrixでアクセスした場合のrootディレクトリは"D:\home\site\wwwroot"となる。
その上にはアクセスすることができない。なので、Kuduの使用は必須となる。

入れなくてもFTPやgitでつなぐことができますが、慣れるまでは。

Tomcatの再起動

Tomcat単体での再起動はできない。やる場合にはWebサイトごと再起動する必要がある。管理コンソールの下の方に再起動のコマンドがあります。

Tomcatの起動オプション

あまりきちんと設定されていないっぽいので、きちんと設定して上がる必要がある。(メモリサイズとか)
管理コンソールから"構成"を選び、"アプリケーション設定"から環境変数を追加できる。
たとえば、メモリサイズを構成するには"CATALINA_OPTS"に"-XX:MaxPermSize=192m -Xmx512m"を登録する。(メモリ1G割り当ての場合の参考値)

Tomcatへのライブラリの追加

Tomcatは"D:\Program Files (x86)\apache-tomcat-7.0.50"にインストールされているが、このフォルダに利用者は変更を加えることができない。
普通は%CATALINA_HOME%\libにライブラリを入れることでコンテナにjarを追加するが、azure websiteでは"D:\home\site\wwwroot\lib"に入れることで認識してくれるようである。*1
なお、このディレクトリは最初は存在しないため、作成してあげる必要がある。
jdbcドライバ等を追加する場合はお気を付けください。

アプリケーションのデプロイ

warを"D:\home\site\wwwroot\webapps"に配置することでデプロイができる。
どうも毎回warを展開し直すらしい?

ログ

"D:\home\LogFiles"に出力される。Kubuからアクセスすることが可能。

長時間放置時の挙動

どうも長時間放置するとTomcat自体をシャットダウンさせるらしい。改めてアクセスしたときにログに起動ログが出力されていた。
Tomcatは起動にそれなりに時間がかかる*2ため、性能が必要な場合は使えない。そもそも無償でそんな要件を満たそうとするなと言う感じではある。

長時間アクセス

長時間のリクエストは強制的に切られるらしい。
しょうがないね。

DB

SQL Serverが無償で使えるけれども、20Mしか使用できない。使いたいならH2DataBase等を同梱してしまうのがよい気がする。

Java


32bitバージョンのようです。からい。
64bitプロセスを選択してもjavaのバージョンは32bitのまま・・・・・・
D:\home>echo %JAVA_HOME%
D:\Program Files (x86)\Java\jdk1.7.0_51

D:\home>"%JAVA_HOME%\bin\java.exe" -version
java version "1.7.0_51"

Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode)

総評

まだまだこなれていない感じがある。
とりあえず扱えるようにしましたという感じ。
Java 7 相当で運用できるというのは今の段階ではなかなか良い。
ただ、Java APサーバ特有の問題、たとえば起動が遅いとかはそれなりに対応が必要かなぁ。
また、ドキュメント類が不十分だったりするのも結構つらい。私が見つけてないだけかもしれないけど。

もうちょっとこなれればGoogle Apps Engineよりも融通が効く手軽に使えるJava EE*3環境になりそうなので、楽しみです。

*1:ドキュメントに記載が見つからない

*2:といっても、1〜2秒

*3:JSP/Servletのみですが