CentOS7.2+tomcat8.5で初期ページの表示まで

環境を構築する前に前提として`Windows`環境での話。
>- Vagrant
- VirtualBox
- Cygwin

がインストールされていること、とします。
※`下記コマンドは全てcygwinのターミナルで作業します`

自分のローカル環境にVirtualBox+Vagrantで仮想環境を構築し
tomcatの初期ページを表示するまでの手順を書いておきます。

## Vagrant側の準備
### CentOS7.2のBoxファイルを入手
https://www.vagrantbox.es/
`CentOS 7.2 x64 (Minimal, Puppet 4.2.3, Guest Additions 4.3.30)`を選びます。

Boxファイルの追加例

```bash
$ vagrant box add CentOS7.2 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box
```

### ローカル環境に作業用ディレクトリ（フォルダ）作成
ローカル環境で開発を進めて

例）ユーザ直下に`Work`ディレクトリを作成

```bash
$ mkdir -p /cygdrive/c/Users/user/Work/
```
pathとしてはこんな`/cygdrive/c/Users/user/Work/`
ここで様々なプロジェクトを今後開発していくとしましょう。
そして今回は、`tomcat`ディレクトリを作ります。

```bash
$ cd /cygdrive/c/Users/user/Work/
$ mkdir tomcat
```

`tomcat`ディレクトリに移動しておく。

```bash
$ cd /tomcat/
$ pwd
/cygdrive/c/Users/user/Work/tomcat
```

###Vagrantの初期化とVagrantfileの確認

さっき追加した`CentOS7.2`(Boxファイル)を確認

```bash
$ vagrant box list
CentOS7.2         (virtualbox, 0)
```
Boxファイルは追加していくことで使える環境を増やしていけます。
では使う環境を選んで初期化しましょう。今回は`CentOS7.2`です。

```
$ vagrant init CentOS7.2
```

初期化すると`Vagrantfile`が出来上がります。
そこで今回は中身を以下のように修正しましょう。後ほどブラウザで確認できるように。


```
$ vi Vagrantfile
```

25行目あたりを以下のように

```ruby:Vagrantfile
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
config.vm.network "forwarded_port", guest: 8080, host: 8080
```

保存は「Esc」キーを押してから「:wq」保存して、ファイルを閉じます。
（viのキーバインド）

## ようやく起動
vagrantで仮想環境を立ち上げます。

```bash
$ vagrant up
```

## CenOS7.2にログイン

```bash
$ vagrant ssh
Last login: Fri May 18 03:05:16 2018 from 10.0.2.2
[vagrant@localhost ~]$
```

ここから先は仮想環境(CenOS7.2)内での作業。

### unzipをインストール
ファイル解凍のために必要。

```bash
[vagrant@localhost ~]$ sudo yum -y install unzip
```

### javaをインストール
いま必要ないけど今後使うので。

```bash
[vagrant@localhost ~]$ sudo yum -y install java-1.8.0-openjdk
```
インストール確認

```bash
[vagrant@localhost ~]$ java -version
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)
```

### tomcatのインストールと設定

#### tomcat用のユーザ追加
```bash
[vagrant@localhost ~]$ sudo useradd -s /sbin/nologin tomcat
```

#### tomcatのダウンロード
```bash
[vagrant@localhost ~]$ wget http://ftp.tsukuba.wide.ad.jp/software/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.zip
```
zipを解凍しておきます。

```bash
[vagrant@localhost ~]$ unzip apache-tomcat-8.5.31.zip
```

#### tomcatの設置
```bash
[vagrant@localhost ~]$ sudo mv apache-tomcat-8.5.31 /usr/local/tomcat
[vagrant@localhost ~]$ sudo chown -R tomcat:tomcat /usr/local/tomcat
```

#### tomcat用のsystemd unitファイルを作成
```bash
[vagrant@localhost ~]$ sudoedit /etc/systemd/system/tomcat.service
```

中身は以下のように

```ruby:tomcat.service
[Unit]
Description=Apache Tomcat 8
After=syslog.target network.target

[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/usr/local/tomcat/tomcat.pid
RemainAfterExit=yes

ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReStart=/usr/local/tomcat/bin/shutdown.sh;/usr/local/tomcat/bin/startup.sh

[Install]
WantedBy=multi-user.target
```

保存は「Esc」キーを押してから「:wq」保存して、ファイルを閉じます。
（viのキーバインド）

serviceファイルの権限変更

```bash
[vagrant@localhost ~]$ sudo chmod 755 /etc/systemd/system/tomcat.service
```
自動起動を有効にしておく

```bash
[vagrant@localhost ~]$ sudo systemctl enable tomcat
```

#### tomcat起動のために必要なファイルの権限変更
これ必要でした。

```bash
[vagrant@localhost ~]$ sudo chmod 775 /usr/local/tomcat/bin/startup.sh
[vagrant@localhost ~]$ sudo chmod 775 /usr/local/tomcat/bin/catalina.sh
```

### tomcatの起動
ようやくtomcatを起動します。

```bash
[vagrant@localhost ~]$ sudo systemctl start tomcat
```

### ブラウザで確認
`http://localhost:8080/`

![キャプチャ.JPG](https://qiita-image-store.s3.amazonaws.com/0/65492/4e02a831-4782-2d97-b8a4-54e1a3099985.jpeg)

#### アクセスできない場合
firewallを停止させてみる。

```bash
[vagrant@localhost ~]$ sudo systemctl stop firewalld
```



## 参考
CentOS7にTomcat8をインストールして自動起動設定
https://qiita.com/nyao/items/8ad51a56638e646b2ec1