さくらのVPSを使ってみた


月額685円でVPSが使えるので、試しに申し込んでみた。
初回支払は2ヶ月分+初期費用で2450円。一回飲みに行くより安い。

スペックは

* メモリ 512MB
* ストレージ SSD20GB
* CPU 仮想1Core
* ネームサーバ 5ゾーン
* リージョン 石狩

値段相応という感じではあるけど、そもそもたいして使うわけではないので、これで十分。

申し込みをするとすぐにVPSへのrootパスワードがもらえる。
早速Webサーバを作ってみる。

#CentOSのインストール

これはさくらの会員メニューから、サーバ設定＞OSインストールで簡単にできる。
CentOSは6とバージョンは少し古いが、サーバ構築は苦手なので、できるだけマニュアルがあるものを選ぶ。

#ユーザ設定など

##一般ユーザを追加

```
# useradd hoge
# passwd hoge
```

##一般ユーザにsudo権限を与える

ユーザをwheelグループに所属させる

```
# usermod -G wheel hoge
```

wheelグループにsudo権限を与える

```
# visudo
```

```/etc/sudoers
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL			←この行をアンコメント
```

一度再起動すると反映されるよう。

##SSHの接続を公開鍵認証に変える

**クライアント側に公開鍵/秘密鍵のペアがあることを前提にしているので、なければ作ること**

サーバ側（接続ユーザでログイン）

```
$ cd
$ mkdir .ssh
$ vi .ssh/authorized_keys
```

編集状態にしておいて、クライアント側で

```
$ cat ~/.ssh/id_rsa.pub
```

表示される内容をコピペする。
もちろんファイルを転送してもいい。

サーバ側で保存して、ユーザをrootに切り替える

```
#vi /etc/ssh/sshd_config
```

```
・・・略・・・ 
#PermitRootLogin yes
→PermitRootLogin no
 
・・・略・・・

PasswordAuthentication yes
→PasswordAuthentication no

・・・略・・・
```

```
# /etc/rc.d/init.d/sshd reload
```

リロードすると設定が反映されるので、クライアント側から接続テストをしてみる。

##ipteblesの設定
まだ良くわかってないので、[この](https://help.sakura.ad.jp/app/answers/detail/a_id/2423/related/1)通りに設定した。
開けたポートは

* 80
* 443
* 8080
* 22

#Apache HTTP SERVER のインストール

```
# yum install httpd
# service httpd start
# chkconfig httpd on		// 自動起動もついでに
```

#JDKのインストール

Javaはなんとなく8を入れたかったので、OracleのJavaを使うことにした。
この辺りはずっとrootでの作業。

まずはwgetをインストール

```
# yum install wget
```

次にOracleJDK8のrpmファイルをダウンロードする。
ダウンロード時に認証が必要なので、↓↓のやり方でwgetする。
[Linuxでjdkをwgetする方法](http://qiita.com/hajimeni/items/67d9e9b0d169bf68d1c9)

```
# cd
# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.rpm ←ダウンロードURL
# yum localinstall jdk-8u91-linux-x64.rpm
```

ダウンロードURLは[ここ](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)からコピーしてくる。

他のJDKなどが同居している場合は、

```
# alternatives --config java
```

で切り替えができる。

#Tomcat8のインストール
[CentOS/RedHat に Tomcat 7 をインストールする手順](http://weblabo.oscasierra.net/installing-tomcat7-on-redhat/)

Tomcatを実行する専用ユーザを作成

```
# useradd -s /sbin/nologin tomcat
```

Tomcatを入手。
今回は8をインストールすることにした。

```
# cd
# wget http://ftp.tsukuba.wide.ad.jp/software/apache/tomcat/tomcat-8/v8.0.36/bin/apache-tomcat-8.0.36.tar.gz
# tar -xzvf ~/apache-tomcat-8.0.36.tar.gz
# mkdir /opt/apache-tomcat
# mv ~/apache-tomcat-8.0.36 /opt/apache-tomcat
# chown -R tomcat:tomcat /opt/apache-tomcat
```

```
# vi /etc/profile
```

以下を追記

```:/etc/profile
・・・略・・・
JRE_HOME=/usr/java/jdk1.8.0_91
CATALINA_HOME=/opt/apache-tomcat/apache-tomcat-8.0.36
export JRE_HOME CATALINA_HOME
```

起動するには

```
$ sudo -u tomcat /opt/apache-tomcat/apache-tomcat-8.0.36/bin/startup.sh
```

ipaddr:8080にアクセスして、Tomcatの初期ページが表示されたらインストール終了

[Linux：tomcatの起動スクリプト作成＋サービス登録](http://www.hiihah.info/index.php?Linux%EF%BC%9Atomcat%E3%81%AE%E8%B5%B7%E5%8B%95%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E4%BD%9C%E6%88%90%EF%BC%8B%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E7%99%BB%E9%8C%B2)
↑のサイトを参考に、サービスの登録をする

```:/etc/init.d/tomcat
#!/bin/bash
# Startup script for the Tomcat Servlet Container
#
# chkconfig: 2345 35 65

export LANG=ja_JP.UTF-8

TOMCAT_HOME=/opt/apache-tomcat/apache-tomcat-8.0.36
LOCKFILE=/var/lock/subsys/tomcat

# source function library
. /etc/rc.d/init.d/functions

start(){
    if [ ! -f ${LOCKFILE} ]; then
        echo "Starting tomcat"
        #sudo -u tomcat ${TOMCAT_HOME}/bin/startup.sh
        ${TOMCAT_HOME}/bin/startup.sh
        sleep 1
        PID=`ps -ef | grep catalina.home=${TOMCAT_HOME} | grep -v grep | awk '{print $2}'`
        echo ${PID} > ${LOCKFILE}


        tail -f ${TOMCAT_HOME}/logs/catalina.out | while read LINE
        do
          PID=`ps -ef | grep -v grep | egrep -e '.*tail.*catalina.out$' | awk '{print $2}'`
          if [ 1 -ne `echo $LINE | egrep -e '^.*: Server startup in [0-9]* ms$' | wc -l` ];
            then
            echo -n "."
          else
            echo 
            echo $LINE 
            kill ${PID}
          fi
        done
    else
        echo "tomcat is already running"
    fi
}

stop(){
    if [ -f ${LOCKFILE} ]; then
        echo "Shutting down tomcat"
        #sudo -u tomcat ${TOMCAT_HOME}/bin/shutdown.sh
        ${TOMCAT_HOME}/bin/shutdown.sh
        while [ 1 -eq `ps -ef | grep ${TOMCAT_HOME} | grep -v grep | wc -l` ]
        do
          echo -n "."
          sleep 1
        done
        echo 
        echo "Shutted down tomcat"
        rm -f ${LOCKFILE}
    else
        echo "tomcat is not running"
    fi
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        #${TOMCAT_HOME}/bin/catalina.sh version
        if [ -f ${LOCKFILE} ]
        then
          echo "tomcat(pid:"`cat ${LOCKFILE}`") is running."
        else
          echo "tomcat is not running."
        fi  
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
esac

exit 0
```

```
# chmod 755 /etc/init.d/tomcat
# chkconfig --add tomcat
```

登録できているか確認

```
# chkconfig --list tomcat
tomcat         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
```

これで```service tomcat XXX```で操作できる