さくらのVPSでOpenSimを動かしてみたので、まずは、その初期設定について記述します。
提供されるOSの状況は以下URIから確認できます。
http://support.sakura.ad.jp/manual/vps/ossetup.html
内容
- VPSの初期設定
- 一般ユーザ作成
- sshd_configの設定
- ロケールの変更
- 自動起動の設定
- パッケージのアップデート
- OpenSimの設定(スタンドアローン)
- monoのインストール
- OpenSimの起動
- OpenSimの設定(OSgrid)
- mysqlのインストール
- DBの作成
- 実行ファイルのダウンロード
- OSgridに接続するための設定
- OSgridに接続
nameとか設定して飛べるようにすればいいのだけれどもしてないです。
VPSの初期設定
まず、sshdの設定です。
提供されたアカウントで2つターミナルを開き、どちらともrootでログインします。
もし、sshdの設定に失敗するとsshで接続することができなくなるための予防措置です。
まぁ、さくらの場合は、別方法でも接続できるからこれやらなくてもいいかも。
一般ユーザ作成
sshdの設定といったけど、root以外でログインするようにするので、当たり前なのだけれど、
まずは一般ユーザを作ります。
[root@foo ~]# adduser takeshich [root@foo ~]# passwd takeshich
sshd_configの設定
本来であれば、鍵を使ったsshでのアクセスにするべきだと思うのですが、いろいろな端末からログインしたく、キーを複数コピーしたり、持ち歩きたくないので、アカウントでの認証でアクセスする方法にします。
ただ、rootで入れるというリスクと総当たり攻撃を避けたいという理由で通常ポートでのアクセスを避けます。
片方のターミナルで
[root@foo ~]# vi /etc/ssh/sshd_config
とし、
#Port 22
を
Port 7122
にします。(ポートは任意です。)
また、
PermitRootLogin yes
を
PermitRootLogin no
に変更し、
[root@foo ~]# /etc/init.d/sshd restart
もうさらにひとつの端末を開き、変更したポートでアクセスし、rootでログインを試みます。
Access denyって表示されることを確認し、rootでログインできないことをできないことを確認します。
また、一般ユーザでログインでき、
[takeshich@foo ~]$ su -
でrootになれることを確認します。
この流れでrootのパスワードを変更しておきました。
[root@foo ~]# passwd
※rootのパスワードを変更するのは任意です。
ロケールの変更
デフォルトのen_US.UTF-8だと日本語を扱う場合に、影響が出るようなので、
[root@foo ~]# vi /etc/sysconfig/i18n
LANGの値を以下に変更します
LANG="ja_JP.UTF-8"
自動起動の設定
不要なサービスをあげないために
どのようなサービスがデフォルトで自動起動するようになっているか確認します。
[root@foo ~]# chkconfig --list
abrt-ccpp 0:off 1:off 2:off 3:off 4:off 5:off 6:off abrt-oops 0:off 1:off 2:off 3:off 4:off 5:off 6:off abrtd 0:off 1:off 2:off 3:off 4:off 5:off 6:off acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off auditd 0:off 1:off 2:off 3:off 4:off 5:off 6:off cpuspeed 0:off 1:on 2:off 3:off 4:off 5:off 6:off crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off haldaemon 0:off 1:off 2:off 3:off 4:off 5:off 6:off ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off irqbalance 0:off 1:off 2:off 3:on 4:on 5:on 6:off kdump 0:off 1:off 2:off 3:off 4:off 5:off 6:off lvm2-monitor 0:off 1:on 2:off 3:off 4:off 5:off 6:off mdmonitor 0:off 1:off 2:off 3:off 4:off 5:off 6:off messagebus 0:off 1:off 2:off 3:off 4:off 5:off 6:off netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off netfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ntpdate 0:off 1:off 2:on 3:on 4:on 5:on 6:off postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off psacct 0:off 1:off 2:off 3:off 4:off 5:off 6:off quota_nld 0:off 1:off 2:off 3:off 4:off 5:off 6:off rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off rngd 0:off 1:off 2:off 3:off 4:off 5:off 6:off rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off smartd 0:off 1:off 2:off 3:off 4:off 5:off 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off udev-post 0:off 1:on 2:off 3:off 4:off 5:off 6:off
postfixは使わないので、自動起動しないように止めます
[root@foo ~]# chkconfig postfix off
[root@foo ~]# chkconfig --list |grep 3:on
とし、結果にpostfixが含まれないことを確認します。
postfixが自動起動しているはずなので、プロセスとして上がっているか確認します
[root@foo ~]# ps aux|grep postfix
結果として、postfixが含まれているのを確認して、
[root@foo ~]# /etc/init.d/postfix stop
[root@foo ~]# ps aux|grep postfix
postfixが表示されず、動いてないことを再度確認します。
iptablesの設定
ソフトウェアファイアウォールとしてiptalesを使用してポートを塞ぎます。
OpenSimでのポートの開放もあるので、後で記載します。
初期状態では、動作しているようですが、ポートは塞がっていないようです。
パッケージのアップデート
[root@foo ~]# yum update
とし、最新のものにしておきます。
とりあえず、VPS側の初期設定はこのような感じですかね。
もし足りないものがあったらコメントください。
OpenSimの設定(スタンドアローン)
やっと、メインのOpenSimの設定になります。
インストールにあたり以下URIを参考にしました。
http://opensimulator.org/wiki/%E3%83%93%E3%83%AB%E3%83%89%E6%89%8B%E9%A0%86http://opensimulator.org/wiki/Dependencies/jahttp://opensimulator.org/wiki/Download/ja
monoのインストール
http://opensimulator.org/wiki/Dependencies/ja
をみると
OpenSimulator は Mono 2.4.3 以降が必須です。注意: OpenSimulator は Mono 2.8.x, 2.10.0, 2.10.1 で、パフォーマンスとスケーラビリティに関する致命的な問題を抱えていることが明らかになっています。Mono 2.10.2 現在では、スケーラビリティに関する問題は修正されたようです。このため、2.6.x か 2.10.2 以降を使用すべきでしょう。2.4.3 でもいいですが、今となっては超古いです。
と書いてあります。気分的に新しいものを使いたいのですが、
[root@foo ~]# yum info mono-core
Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * epel: ftp.iij.ad.jp Available Packages Name : mono-core Arch : i686 Version : 2.4.3.1 Release : 3.el6 Size : 9.2 M Repo : epel Summary : The Mono CIL runtime, suitable for running .NET code URL : http://www.mono-project.com/Main_Page License : MIT Description : This package contains the core of the Mono runtime including its : Virtual Machine, Just-in-time compiler, C# compiler, security : tools and libraries (corlib, XML, System.Security, ZipLib, : I18N, Cairo and Mono.*). Name : mono-core Arch : x86_64 Version : 2.4.3.1 Release : 3.el6 Size : 9.2 M Repo : epel Summary : The Mono CIL runtime, suitable for running .NET code URL : http://www.mono-project.com/Main_Page License : MIT Description : This package contains the core of the Mono runtime including its : Virtual Machine, Just-in-time compiler, C# compiler, security : tools and libraries (corlib, XML, System.Security, ZipLib, : I18N, Cairo and Mono.*).
調べてみると古いものが入っているようです。
http://opensimulator.org/wiki/%E5%8B%95%E4%BD%9C%E7%92%B0%E5%A2%83#Mono_.E3.81.AE.E3.83.AA.E3.83.9D.E3.82.B8.E3.83.88.E3.83.AA.E3.81.8B.E3.82.89.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB.E3.81.99.E3.82.8B
を参考にして、あたらしいmonoをインストールできるようにします。
[root@foo ~]# vi /etc/yum.repos.d/mono.repo
以下設定を投入します。CentS6.2なのですが、RHEL_5のものでも問題なく動くようです。rpmのセキュリティアップデートの影響で動きません*1
[mono] name = novell-mono baseurl=http://ftp.novell.com/pub/mono/download-stable/RHEL_5/ enabled=1 gpgcheck=0
[root@foo ~]# yum install mono-addon-core mono-addon-data mono-addon-data-sqlite mono-addon-extras mono-addon-web mono-addon-winforms mono-addon-libgdiplus0
として、monoをインストールします。
/opt/novell/mono/bin/
にmonoのバイナリがインストールされてしまいます。
気持ち悪い場合は、シンボリックリンクを貼るかPATHを通してあげる必要があります。今回は特に何もしてません。
他にmonoを使用する場合は、対応していたほうがいいと思われます。
ちなみにmonoはnovellよりxamarinという会社に移っていますので、URLが残っているという保証はありません。
追記(2012/04/29):解決しそうにないので代替案を。
ソースからコンパイルしてmonoをインストールします。
まずは、予めC#のコンパイラがないと行けないはずなので、mono-develのパッケージを入れておきます。
[root@foo ~]# yum install mono-devel
ソースをダウンロードして、makeし、インストールします。/opt/novell/mono/にインストールされるようにしています。novellのrpmを利用してインストールした時と同じ所にインストールという意味です。
[takeshich@foo ~]$ cd ~ [takeshich@foo ~]$ wget http://download.mono-project.com/sources/mono/mono-2.11.1.tar.bz2 [takeshich@foo ~]$ tar xfj mono-2.11.1.tar.bz2 [takeshich@foo ~]$ cd mono-2.11.1 [takeshich@foo mono-2.11.1]$ ./configure --prefix=/opt/novell/mono/ [takeshich@foo mono-2.11.1]$ make -j3 [takeshich@foo mono-2.11.1]$ su - [root@foo ~]# cd /home/takeshich/mono-2.11.1 [root@foo ~]# make install
OpenSimの起動
OpenSimは、monoで動きますので、コンパイルせずにバイナリファイルを実行すればいいようです。
OpenSimの起動は一般ユーザで行います。OpenSimに脆弱性があった場合、rootで実行しているとrootを取られてしまうリスクを
回避するためです。
[takeshich@foo ~]$ mkdir opensim [takeshich@foo ~]$ cd opensim [takeshich@foo opensim]$ wget http://opensimulator.org/dist/opensim-0.7.3.tar.gz [takeshich@foo opensim]$ tar xvfz ./opensim-0.7.3.tar.gz [takeshich@foo opensim]$ cd opensim-0.7.3/bin [takeshich@foo bin]$ /opt/novell/mono/bin/mono OpenSim.exe
最初に起動すると必要事項を聞かれます。
http://opensimulator.org/wiki/%E8%A8%AD%E5%AE%9A#OpenSimulator_.E3.82.92.E6.9C.80.E5.88.9D.E3.81.AB.E8.B5.B7.E5.8B.95.E3.81.99.E3.82.8B
を参考にして埋めるといいでしょう。
OpenSimの設定(OSgridへの接続)
とりあえず
OSgridへ接続する際には、ほかシムとの通信が考えられるので一番最初はiptablesを適用せず、ほかシムとの通信できることを確認した上で、iptablesを実行するのが望ましいと思います。
明示的にiptablesを止めます。(初期設定ではどのポートも閉じられていないようです。)
[root@foo ~]# /etc/init.d/iptables stop
mysqlのインストール
OpenSimはバックエンドのDBがデフォルトでSQLiteなのですが、RDBMSを使用することもできます。
データが多くなることを考えるとRDBMSの堅牢性に軍配があると考えます。
OSgridに接続するので行います。
[root@foo ~]# yum install mysql-server
とし、インストールします。
自動起動するように設定をします。
[root@foo ~]# chkconfig mysqld on
起動するようなっているか確認します。
[root@foo ~]# chkconfig --list|grep 3:on
DBの作成
mysqlを起動してあげます。
[root@foo ~]# /etc/init.d/mysqld start
[root@foo ~]# mysql -u root
rootのパスワードが設定されていないようなので、設定する。rootpasswordではなく強度が高いのにしてくださいね。
mysql> set password = PASSWORD('rootpassword');
ユーザのない匿名アカウントが存在する場合、それを削除しておきます。
mysql> use mysql; mysql> select host,user,password from user; mysql> delete from user where user=''; mysql> select host,user,password from user;
以下で、databaseとしてopensimを作成します。
opensimというユーザを作成、パスワードを任意のものを設定します。
passwordではなく強度が高いのにしてくださいね。
作成したユーザ(opensim)に対して作成したデータベース(opensim)のすべての権限を付与します。
mysql> create database opensim character set utf8; mysql> create user 'opensim'@'localhost' identified by 'password'; mysql> grant all privileges on opensim.* to 'opensim'@'localhost'; mysql> flush privileges; mysql> quit
データベースの設定はこれでおしまいです。
実行ファイルのダウンロード
http://www.osgrid.org/index.php/downloads
より、実行するためのファイルをダウンロードしてあげます。
スタンドアローンと同様、一般ユーザで実行するため、一般ユーザで作業します。
rootで作業して、最終的にchownしてもいいと思います。
[takeshich@foo ~]$ mkdir osgrid [takeshich@foo ~]$ cd osgrid [takeshich@foo osgrid]$ wget http://osgrid.googlecode.com/files/osgrid.opensim-03012012.v0.7.4.0007711.zip
現状は、上記のファイルですが、変更されているかもしれませんので、念のため、http://www.osgrid.org/index.php/downloads
を確認してください。
解凍します。
[takeshich@foo osgrid]$ unzip osgrid.opensim-03012012.v0.7.4.0007711.zip
OSgridに接続するための設定
OSgridへ接続するため変更しなければならない設定ファイルは、以下になります。
- OpenSim.ini
- GridCommon.ini
- FlotsamCache.ini
- Regions.ini
まず、上3つのテンプレートがあるのでそれをダウンロードします。
http://www.osgrid.org/index.php/downloads からたどれます。
[takeshich@foo osgrid]$ cd bin [takeshich@foo bin]$ wget http://download.osgrid.org/OpenSim.ini.txt [takeshich@foo bin]$ cd config-include/ [takeshich@foo config-include]$ wget http://download.osgrid.org/GridCommon.ini.txt [takeshich@foo config-include]$ wget http://download.osgrid.org/FlotsamCache.ini.txt
ファイルを置き換えます。
[takeshich@foo config-include]$ cd .. [takeshich@foo bin]$ mv OpenSim.ini.txt OpenSim.ini [takeshich@foo bin]$ cd config-include/ [takeshich@foo config-include]$ mv GridCommon.ini.txt GridCommon.ini [takeshich@foo config-include]$ mv FlotsamCache.ini.txt FlotsamCache.ini
mysqlを使いたいので
[takeshich@foo config-include]$ vi GridCommon.ini
SQLiteを使用する設定をコメントアウトしてあげます
;Include-Storage = "config-include/storage/SQLiteStandalone.ini";
mysqlの接続設定を有効にするため以下コメントアウト外し、作成したDBに設定した、ID,パスワードを入れます。
StorageProvider = "OpenSim.Data.MySQL.dll" ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=password;" ; Uncomment this line if you are using MySQL and want to use a different database for estates EstateConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=password;"
Regions.iniの編集します。
http://www.osgrid.org/index.php/regionconnect
にて
Open Coordinate you may use :10147,10156
のように場所をおすすめされるのでそこを指定してあげます。
[takeshich@foo bin]$ cd Regions/ [takeshich@foo Regions]$ vi Regions.ini
Location = 10147,10156
OSgridに接続
スタンドアローンの場合と同様、実行します。
[takeshich@foo bin]$ /opt/novell/mono/bin/mono OpenSim.exe
初期実行時は、スターンドアローンと同じ項目を聞かれるはずです。
http://opensimulator.org/wiki/%E8%A8%AD%E5%AE%9A#OpenSimulator_.E3.82.92.E6.9C.80.E5.88.9D.E3.81.AB.E8.B5.B7.E5.8B.95.E3.81.99.E3.82.8B
ちょっと長くなってしまったので、
- OpenSimの自動起動スクリプト
- MySQLのdbのバックアップ
- iptables
- メガリージョン
については、次エントリで記述します。