Struts2/TomcatなWebアプリケーションをローカルGit経由でAzure Websitesにデプロイするまで

Azure Websites上にStruts2/Tomcatなアプリケーションをデプロイするまでの手順をまとめてみます。

# 開発環境セットアップ
何はともあれ、最初にStruts2/TomcatなWebアプリケーションを作るために必要な環境をセットアップしましょう。
Struts2で作るんだったらホントはmavenとか使ったほうが良いと思うけど、とりあえずってことで使わない方向でまとめます。

最初にインストールしたものは↓の通りです。
* Java SE 7
* Eclipse IDE for Java EE Developers

注意として、Azure Websites上で利用できるJavaが7なので、8で作ったらうまく動きませんでした。Eclipse上でビルド設定とか変更すればうまくいきそうな気もするけど...（知っている人いたら教えて下さい）

# プロジェクトの作成

JavaとEclipseのインストールが済んだら、EclipseからWEBプロジェクトを作成しましょう。
Eclipseを開いて、[File]-[New]-[Project...]からWebカテゴリ内の[Dynamic Web Project]を選択します。

![image](https://qiita-image-store.s3.amazonaws.com/0/63849/c744c311-6b15-2725-e42b-bb0207216f68.png)

すると、プロジェクトの詳細設定窓が開くので、ここでプロジェクト名とか細かい設定を指定します。ここではプロジェクト名をHogeとしました。

![image](https://qiita-image-store.s3.amazonaws.com/0/63849/9808aa75-d81c-8849-bc6e-679f79586d88.png)

次に、Target Runtimeの項目から動作させるTomcatのバージョンなどといった動作環境の設定が必要になります。[New Runtime...]から[New Server Runtime Environment]の画面を開いて、[Apache Tomcat v7.0]を選択してください。
※）これもAzure Websitesで使えるTomcatのバージョンがv7.0のためです。違っても動くかもしれないけど合わせた方が無難かなと。

![image](https://qiita-image-store.s3.amazonaws.com/0/63849/eecf9cf5-f1c3-9cd2-77f6-35c43011d3dd.png)

そうすると、Tomcat 7のインストールディレクトリが聞かれるので、既にインストール済みであればここでそのインストールディレクトリを選んでください。
自分はインストールしてなかったので、この画面の[Download and Install...]からインストールしました。

また、ここでの注意として画面真ん中あたりにある[JRE]の部分は、Java 7を指定しておきましょう。セレクトボックスに出てこない場合は、右側の[Installed JREs...]から追加すると出てきます。

![image](https://qiita-image-store.s3.amazonaws.com/0/63849/d938c4ae-4dab-473a-6245-e968e8dff413.png)

以上で動作環境の設定は完了です。
[New Server Runtime Environment]窓を閉じるとプロジェクト詳細の[Target Runtime]が[Apache Tomcat v7.0]に変わっているはずです。
ここまでできたら[Finish]でプロジェクトの作成は完了です。

![image](https://qiita-image-store.s3.amazonaws.com/0/63849/649f73c5-6911-3bfa-d3b4-8fd0499d060f.png)

# Struts2のセットアップ

プロジェクトが作成できたら、次はこのプロジェクト上でStruts2のコードが動作するように設定しましょう。
ここでは前述の通り、mavenとかは使わず必要なjarを直接ダウンロードしてます。

まず、Struts公式のダウンロードページ https://struts.apache.org/download.cgi から下記のファイルをダウンロードしました。
※）他に色々あるけどjarが欲しかっただけなのでこれを選びました。

* struts-2.3.20-lib.zip

ダウンロードしたzipを解凍して、中身の[lib]フォルダの中から必要なものとして、下記のファイルを作成したプロジェクト内のWEB-INF/libの中にコピーします。
※）ホントはもっと少なくても大丈夫かもしれません。

* asm-5.0.2.jar
* commons-fileupload-1.3.1.jar
* commons-io-2.2.jar
* commons-lang3-3.2.jar
* commons-logging-1.1.3.jar
* freemarker-2.3.19.jar
* javassist-3.11.0.GA.jar
* ognl-3.0.6.jar
* struts2-codebehind-plugin-2.3.20.jar
* struts2-core-2.3.20.jar
* xwork-core-2.3.20.jar

上記のファイルをコピーし終わったら、下記の内容でWEB-INFフォルダ内にweb.xmlファイルを設置しましょう。

```lang:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="Struts2" version="2.4">
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    <init-param>
      <param-name>actionPackages</param-name>
      <param-value>hogepackage</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
```

以上で、TomcatとStruts2の連携設定は終了です。

# WEBアプリの実装

ここは各自で適当にやりましょう（丸投げ。。。）

# Azure Websitesの作成とデプロイ

それではいよいよAzure Websites側の準備に入りましょう。
まずはAzureポータルにログインして、下記のSSのように設定を選んで作りましょう。

![image](https://qiita-image-store.s3.amazonaws.com/0/63849/8ecedabb-d8fd-8d96-7372-c34876fff9af.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/63849/e38bafe2-c4ec-8180-f6f2-c0ab083ff880.png)

Websitesができたら、[デプロイ]タブを選んで、[リポジトリ]項目内の[GITのURL]をコピーして、
各々好きなやり方でGitリポジトリをローカルのファイルシステム上にリポジトリをクローンします。（自分はCygwin gitを使ってコマンドラインから git clone しました）

![image](https://qiita-image-store.s3.amazonaws.com/0/63849/b30627bc-13f2-c8cd-5939-ebb405e1aa30.png)

クローンすると、リポジトリ内にwebappsディレクトリがあるはずです。
そのwebappsディレクトリ内にwarファイルを置いて、リモートサーバ上に変更をプッシュ（git push）すると設置したwarファイルが自動的に展開されてWEBサーバ上で動作するようになります。

以上の手順でStruts2/TomcatなWEBアプリをAzure Websites上で動作させることが出来ました。
ここまで読んで頂いた人ありがとうございます。参考になれば幸いです。