ubuntuにnginx + apache2 + wildflyの環境構築手順

> dockerでインストールする方法を書いたのでこっちのほうがよいかもしれません。
> http://qiita.com/sat8bit/items/1a85a9d950b2ae96c294

# 概要

ひとつのサーバ内でドメインによって内部的にapache叩いたりwildfly叩いたりする環境を構築する作業メモ。
今回はSite domain(apache2)とAPI domain(wildfly)に分けて構築してみる。

Column        | Value
--------------|-----------
OS            | Ubuntu 12.04 LTS
Site domain   | www.test.app.domain
API domain    | api.test.app.domain

# apache2

Column      | Value
------------|-----------
DocumentRoot|/usr/local/share/www.test.app.domain/www/

## インストール

```
sudo apt-get install apache2
```

## 設定

とりあえずlocalhostからのみ8080で繋げるように設定。

```diff:/etc/apache2/ports.conf
@@ -6,7 +6,7 @@
 # README.Debian.gz
 
 NameVirtualHost *:80
-Listen 80
+Listen localhost:8080
 
 <IfModule mod_ssl.c>
     # If you add NameVirtualHost *:443 here, you will also have to change```
```

アプリケーション用にVirtualHostをきる設定ファイルを作成する。

```apache:/etc/apache2/sites-available/www.test.app.domain.conf
<VirtualHost localhost:8080>
        DocumentRoot /usr/local/share/www.test.app.domain/www/
        DirectoryIndex index.html
        Options -Indexes FollowSymLinks
        ServerName localhost
</VirtualHost>
```

設定の有効化。

```
sudo ln -s /etc/apache2/sites-availble/www.test.app.domain.conf /etc/apache2/sites-enabled/
```

再起動。

```bash
sudo service apache2 restart
```

# wildfly

## インストール

wildflyのために、まずはjavaをインストール。

```bash
# リポジトリ追加コマンドの導入
sudo apt-get install python-software-properties

# 14.04では違うパッケージらしい
# http://qiita.com/Hiroshi_Obata/items/8fa13972f7922ad3252f


# add-apt-repositoryが使えるようになったのでリポジトリ追加
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

# java8をインストール
sudo apt-get install oracle-java8-installer

# 一応入っていることを確認。
java -version
```

wildflyをダウンロードし、諸々実行。

```bash
# ダウンロード
wget http://download.jboss.org/wildfly/9.0.1.Final/wildfly-9.0.1.Final.zip

# ファイルの移動
sudo mv wildfly-9.0.1.Final.zip /opt/

# 解凍
sudo unzip /opt/wildfly-9.0.1.Final.zip

# ユーザの追加
sudo useradd -m -s /usr/sbin/nologin wildfly 

# ownerの変更
sudo chown -R wildfly:wildfly /opt/wildfly-9.0.1.Final

# シンボリックリンクを貼ってそれっぽくする
sudo ln /opt/wildfly-9.0.1.Final /opt/wildfly
```

設置は終わり。起動するためにいくつか必要な設定と書換があるので実施する。

## 設定

ポート番号の設定。

```diff:/opt/wildfly-9.0.1.Final/standalone/configuration/standalone.xml
@@ -396,7 +396,7 @@
         <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
         <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
         <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
-        <socket-binding name="http" port="${jboss.http.port:8080}"/>
+        <socket-binding name="http" port="${jboss.http.port:8081}"/>
         <socket-binding name="https" port="${jboss.https.port:8443}"/>
         <socket-binding name="txn-recovery-environment" port="4712"/>
         <socket-binding name="txn-status-manager" port="4713"/>
```

初期化設定。必要な箇所を適宜修正する。

```diff:/opt/wildfly-9.0.1.Final/bin/init.d/wildfly.conf
 # default location: /etc/default/wildfly
 
 ## Location of JDK
-# JAVA_HOME="/usr/lib/jvm/default-java"
+JAVA_HOME="/usr/lib/jvm/java-8-oracle/"
 
 ## Location of WildFly
-# JBOSS_HOME="/opt/wildfly"
+JBOSS_HOME="/opt/wildfly/"
 
 ## The username who should own the process.
-# JBOSS_USER=wildfly
+JBOSS_USER=wildfly
 
 ## The mode WildFly should start, standalone or domain
-# JBOSS_MODE=standalone
+JBOSS_MODE=standalone
 
 ## Configuration for standalone mode
-# JBOSS_CONFIG=standalone.xml
+JBOSS_CONFIG=standalone.xml
 
 ## Configuration for domain mode
 # JBOSS_DOMAIN_CONFIG=domain.xml
 # JBOSS_HOST_CONFIG=host-master.xml
 
 ## The amount of time to wait for startup
-# STARTUP_WAIT=60
+STARTUP_WAIT=60
 
 ## The amount of time to wait for shutdown
-# SHUTDOWN_WAIT=60
+SHUTDOWN_WAIT=60
 
 ## Location to keep the console log
-# JBOSS_CONSOLE_LOG="/var/log/wildfly/console.log"
+JBOSS_CONSOLE_LOG="/var/log/wildfly/console.log"
 
 ## Additionals args to include in startup
-# JBOSS_OPTS="--admin-only -b 172.0.0.1"
+#JBOSS_OPTS="-b 172.0.0.1"
```

init.d用の設定ファイルを書き換え。
**3を4にしているのは、pidofprocコマンドの返り値がズレてるっぽかったので修正したら動いた。**
**14.04で構築する場合数字の方の更新はいらない。**

```diff:/opt/wildfly-9.0.1.Final/bin/init.d/wildfly-init-debian.sh
@@ -18,7 +18,8 @@
 
 NAME=wildfly
 DESC="WildFly Application Server"
-DEFAULT="/etc/default/$NAME"
+DEFAULT="/opt/wildfly/bin/init.d/wildfly.conf"
 
 # Check privileges
 if [ `id -u` -ne 0 ]; then
@@ -157,7 +158,7 @@
        log_daemon_msg "Starting $DESC" "$NAME"
        check_status
        status_start=$?
-       if [ $status_start -eq 3 ]; then
+       if [ $status_start -eq 4 ]; then
                mkdir -p $(dirname "$JBOSS_PIDFILE")
                mkdir -p $(dirname "$JBOSS_CONSOLE_LOG")
                chown $JBOSS_USER $(dirname "$JBOSS_PIDFILE") || true
```

init.d用のファイルを設置して更新。

```bash
# ファイルの移動
sudo cp /opt/wildfly-9.0.1.Final/bin/init.d/wildfly-init-debian.sh /etc/init.d/wildfly

# initの更新
sudo update-rc.d wildfly defaults
```

これでたぶん起動する。

```
sudo service wildfly start
```

# nginx

## インストール

```
sudo apt-get install nginx
```

## 設定

proxyさせる用の設定ファイルを書く。ファイル名がドメインである必要はない。

```nginx:/etc/nginx/sites-available/www.test.app.domain.conf 
server {
    server_name www.test.app.domain;
    location / {
        proxy_pass http://localhost:8080;
    }
}
```

```nginx:/etc/nginx/sites-available/api.test.app.domain.conf 
server {
    server_name api.test.app.domain;
    location / {
        proxy_pass http://localhost:8081;
    }
}
```


設定の有効化。

```
sudo ln -s /etc/nginx/sites-availble/www.test.app.domain.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-availble/api.test.app.domain.conf /etc/nginx/sites-enabled/
```

再起動。

```
sudo service nginx restart
```

# 参考

http://askubuntu.com/questions/38021/how-to-add-a-ppa-on-a-server
http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/
http://qiita.com/tsubu-mustard/items/7277d202a0a303413c92
http://blog.akagi.jp/archives/3883.html