さくらの VPS で遊ぶ (Redmine + Subversion 編)

さくらインターネットさんが低価格 VPS をはじめたということで、さらに2週間のお試し期間もあるということで、どういった感じか見るために早速登録してみることにしました。

VPS のポイントは何はなくてもそのメモリ。 さくらさんのは 512M ということで、まずは確実にちょっと厳しいことが予想される、Java + Serlvet + PostreSQL アプリからやってみました。 まぁ実験と言うことで。 🙂

ターゲットは最近おなじみ Redmine と Subversion サーバです。

さくらのVPS|VPS(仮想専用サーバ)はさくらインターネット

さくらのVPSは、仮想化技術を用いて1台の物理サーバ上に複数の仮想サーバを構築し、お客様だけの仮想専用サーバとしてご利用いただけるサービスです。専用サーバの自由度と共用サーバの低価格、そして仮想サーバならではの機能を合わせ持ったホスティングサービス、さくらのVPSをぜひご利用ください。

仮想化 VPS ということで、OS (標準で CentOS 5.5 64bit版)の root のパスワードがもらえます。 root があればどんなアプリ動作環境でもライブラリでも、好きに入れることができるのが最大の嬉しいところ。 ここでは、一般のいわゆるレンタルサーバではサポートされていない、Java + サーブレットの環境をつくってアプリを配置してみました。

ちなみに、コントロールパネルより root のパスワード通知のメールが少し遅れてきて、初期パスワードをどこだどこだと最初に探したのはここだけの秘密です。。

さて、さくらさん VPS で面白いなと思ったのが、コンソールログインがブラウザ上からできること。 JavaScript で実装されている?! top コマンドとかもちゃんとでてすごいですね。

redmine31

これのおかげで、まちがって SSH のサービスおとしちゃったとか、iptables ミスってネットワークログインできなくなっちゃったとかも回復することができます。 他には、OS の起動停止やリソースの閲覧が可能です。 残念ながら仮想マシンのスナップショットバックアップはとれませんが、これは低価格ゆえ仕方がないところでしょう。

では Java + Tomcat6 + PostgreSQL + mod_dav_svn(Subversionサーバ) をインストールしてみます。 まずは気になる初期状態のメモリは以下のような感じでした。 (起動して yum update しただけの状態)

# free
             total       used       free     shared    buffers     cached
Mem:        510532     433784      76748          0      53672     340188
-/+ buffers/cache:      39924     470608
Swap:      2048276          0    2048276

起動サービスはたいぶ初期状態でしぼってあり、バッファ、キャッシュを除いて 470M ほど Free な感じです。

これに mod_dav_svn をインストール。 rpmforge から yum install mod_dav_svn しています。 で、Apache とともに起動。

# free
             total       used       free     shared    buffers     cached
Mem:        510532     442624      67908          0      53804     341040
-/+ buffers/cache:      47780     462752
Swap:      2048276          0    2048276

まぁ起動させただけなので、、460M ほど Free。

次に Redmine で使う PostgreSQL をインストール。 yum install postgresql-server の感じで。

# /etc/init.d/postgresql start
Initializing database:                                     [  OK  ]
Starting postgresql service:                               [  OK  ]
[root@www1431u opt]# free
             total       used       free     shared    buffers     cached
Mem:        510532     483876      26656          0      11332     416120
-/+ buffers/cache:      56424     454108
Swap:      2048276         80    2048196

まぁこちらも起動しただけなので、450M。

で、Tomcat6 をインストール。 jsvc を使ってデーモン起動しています。

まず、jsvc (commons-daemon-1.0.2-native-src) をコンパイルするために、JDK の64bit 版を (jdk-6u21-linux-x64-rpm.bin)をインストールしています。 でもって、起動シェルを以下の感じで。

# cat /etc/rc3.d/S80tomcat6 
#!/bin/sh
#
# chkconfig: - 80 20
# description: jsvc
 
# Source function library.
. /etc/init.d/functions
 
JAVA_HOME=/usr/java/default
CATALINA_HOME=/opt/tomcat6
TOMCAT_USER=tomcat
TMP_DIR=/tmp
CATALINA_OPTS="-Xmx256M -Xms128M"
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar
PIDFILE=/var/run/tomcat.pid
LOCKFILE=/var/lock/subsys/tomcat
DAEMON=$CATALINA_HOME/bin/jsvc
 
start(){
    #
    # Start Tomcat
    #
 
    echo -n "Starting tomcat6: "
    $DAEMON \
    -pidfile $PIDFILE \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Djava.io.tmpdir=$TMP_DIR \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
 
    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of jsvc.
    #-debug \
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
        echo_success
        touch $LOCKFILE
    else
        echo_failure
    fi
    echo
}
 
stop(){
    #
    # Stop Tomcat
    #
    echo -n "Shutting down tomcat6: "
    $DAEMON \
    -stop \
    -pidfile $PIDFILE \
    org.apache.catalina.startup.Bootstrap
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
        echo_success
        rm -f $PIDFILE $LOCKFILE
    else
        echo_failure
    fi
    echo
}
 
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        status $DAEMON
        RETVAL=$?
        ;;
    *)
        echo $"Usage: jsvc {start|stop|restart|status}"
        exit 1
        ;;
esac

CATALINA_OPTS="-Xmx256M -Xms128M" として最大 256M を JavaVM に割り当てみました。 あと、mod_proxy_ajp で Apache を経由させています。

ではいってみましょう。

[tegaki]きゅるるるるるる…、ぼぼん![/tegaki]

redmine30

動きました!

気になるメモリは、、

[root@www1431u logs]# free
             total       used       free     shared    buffers     cached
Mem:        510532     504736       5796          0       3528      33020
-/+ buffers/cache:     468188      42344
Swap:      2048276     382568    1665708

42M。(笑)

この状態でブラウザ操作レベルで、多重アクセスの負荷をかけてみましたがさすがに5多重くらいにすると OutOfMemoru Exception で落ちてしまうようです。

Subverion へ大量ファイル(WordPress のファイル)のコミットもしてみました。 こちらはうまくいきましたが、バックで Redmine を操作するとやはり厳しい模様。 また、tag と trunk など大量の差分比較も難しそうです。(broken pipe してた)

てなわけで、やる前から厳しいなとは思っていたのですが、Java のアプリは 512M だとなかなか厳しそうです。 Redmine に関しては(未検証ですが)素直に Passenger(mod_rails) を使えばうまくいくような気もしますが、ここは実験ということで。 🙂

Tomcat に関しては標準で入っている manager アプリとかおとして、768M メモリだったらいけそうなので、実におしい。。 デプロイ田中もにっこり。

それにしても VPS は手軽面白いですね。 実践的に Linux で遊べるという部分で 1台もっていると何かと嬉しいかもしれません。

てなわけで、次は WordPress を入れてみたいと思います。 お楽しみに。 😀

さくらの VPS で遊ぶ (Redmine + Subversion 編)」への1件のフィードバック

  1. ピンバック: さくらVPSに lighttpd + PHP 5.3 + MySQL 5.1 をインストール : dogmap.jp

コメントを残す