さくらの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
## 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の設定

まだ良くわかってないので、この通りに設定した。
開けたポートは

  • 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する方法

# 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はここからコピーしてくる。

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

# alternatives --config java

で切り替えができる。

Tomcat8のインストール

CentOS/RedHat に Tomcat 7 をインストールする手順

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の起動スクリプト作成+サービス登録
↑のサイトを参考に、サービスの登録をする

/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で操作できる