さくら VPS (CentOS 6.3) / OSgrid 0.7.5 にしました。

従来専用サーバ CentOS 5で運用してきた OSgrid 0.7.4 2012/3/12版をさくら VPS (CentOS 6.3 MEM1G) で、 OSgrid 0.7.5 (Dev) 224efe7: 2012-09-11にしました。
(専用サーバは、今月ぐらいで解約かな。vpsで十分だし安価だし。また、さくらvpsは、ISOイメージでなんでも自由にインストールできるという裏ワザもあります。このサービスは最近できたようです。)

簡単に移行できるものと思ったのですが、以外と苦戦しました。さくら VPS は、OSは自分で再インストールできるので、Ubuntu 12でmonoは、apt-get install mono-completeでさくっとmono 2.10.8がインストールでき、そのままOSgridのバイナリーイメージをセットすると簡単に動くのですが、CentOS 6.3 (5.xも同様)では当初どのバージョンのmonoをコンパイルして入れてもOSgrid 0.7.4 2012/4/23~0.7.5 は動きませんでした。

*3月頃はまだ、Novellからmono 2.10.2のバイナリーがyumでインストールできていたのですが、monoはNovellから離れて今は、Xamarinが管理しており既に、現在Novellが利用できなくなっています。

monoが公式サポートしているLinuxに、CentOSはありません><
Ubuntuはあるのですが、私は、ずっとRedHat系だったのでapt-get系のシステム構成に違和感があり個人的には好きになれない。

で、どうしてもCentOSでやりたいので、いろいろ調べた結果、
http://opensimulator.org/wiki/%E8%A8%AD%E5%AE%9A
に記載されている、「Mono に関する注意」にありました。

簡単なことで、環境変数
MONO_THREADS_PER_CPU=125
をセットして、
/usr/bin/screen -S OpenSim -d -m /usr/local/bin/mono /projects/opensim/OpenSim.exe
で動いた。
前までは、MONO_THREADS_PER_CPUセットしなくても良かったんですが。。。
また、オブジェクトが多い場合にスタックも多くするようにとあったので、
ulimit -s 262144
をセットした。

最終的に自動起動スクリプトは以下を作成、
osgrid

#!/bin/bash
#
# osgrid

# Source function library.
. /etc/init.d/functions

prog=opensim
lockfile=/var/lock/subsys/$prog
PROGNAME=OpenSim
OSGRID=/projects/opensim
MONO=/usr/local/bin/mono
export MONO_THREADS_PER_CPU=125
ulimit -s 262144

start() {
cd $OSGRID
echo -n $”Starting $prog: “
/usr/bin/screen -S $PROGNAME -d -m $MONO $OSGRID/OpenSim.exe
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $lockfile
sleep 3
return $RETVAL
}

stop() {
echo -n $”Stopping $prog: “
/usr/bin/screen -S $PROGNAME -p 0 -X stuff $’quitn’ 1> /dev/null 2>&1
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f $lockfile
return $RETVAL
}

# See how we were called.
case “$1” in
start)
start
;;
stop)
stop
;;
*)
echo $”Usage: $0 {start|stop}”
exit 2
esac

viewerのOSgridのバージョン表示

ソースコードを漁ると、
opensim-224efe7/OpenSim/Framework/Servers/BaseOpenSimServer.cs
中のprotected void EnhanceVersionInformation()
で、.versionファイルがあるとそれを追記するようなので、
OpenSim.exeがあるディレクトリーに.versionファイルに好きに記載するとOK
.version

CentOS 6.3 / OSgrid 0.7.5 (Dev) 224efe7: 2012-09-11

monoのインストールメモ:

yum install make glib2-devel libpng-devel libjpeg-devel giflib-devel libtiff-devel libX11-devel gcc-c++ fontconfig-devel bison gettext bzip2 libtool automake autoconf wget

wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2
tar xjvf libgdiplus-2.10.tar.bz2
cd libgdiplus-2.10
./configure
make
make install

/etc/ld.so.conf.d/libgdiplus.conf
==
/usr/local/lib
==
/sbin/ldconfig

wget http://download.mono-project.com/sources/mono/mono-2.10.8.tar.bz2
tar xjvf mono-2.10.8.tar.bz2
cd mono-2.10.8
./configure –with-large-heap=yes –with-moonlight=no
make
make install

OpenSimをコンパイルしたいなら。。
wget http://download.mono-project.com/sources/nant/nant-0.90-src.tar.gz
tar zxvf nant-0.90-src.tar.gz
cd nant-0.90
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
make
make install