HowToCreateDbclsGalaxyAmiImage
提供:TogoWiki
DBCLS Galaxy用AMIイメージの作り方
既存のUbuntuのAMIイメージからDBCLS Galaxyのイメージを作成する方法を以下に示すsimesu。
セキュリティグループ
EC2イメージウィザード内ではカスタムポートを含んだセキュリティグループが作成できないため、事前にセキュリティグループを作成しておく。
- 名前「DBCLS Galaxy Security Group」 - SSH, tcp, 22, 22, 0.0.0.0/0 - - , tcp, 37180, 37180, 0.0.0.0/0
EC2のイメージ作成
- Community AMIsで「ami-c81f4f8d」を検索して選択 - Instance TypeはSmall - 鍵は新規に作っても既存のものでもどちらでもOK - セキュリティグループでは「default」と「DBCLS Galaxy Security Gropu」を選択
作成した鍵(.pem)を~/.ssh/へ置いておく
- 権限を「自分のみ読み込み可能」にしておく -- chmod 400 ~/.ssh/t-hatakeyama_uswest.pem
SSHで接続
- 起動したインスタンスのPublic DNSの値を調べる -- ec2-175-41-197-212.ap-northeast-1.compute.amazonaws.com - ssh -i ~/.ssh/t-hatakeyama_uswest.pem ubuntu@ec2-175-41-197-212.ap-northeast-1.compute.amazonaws.com
mkdir
{{{ $ sudo chmod 777 /opt/ $ mkdir -p /opt/services/galaxy/development $ mkdir -p /opt/services/galaxy/middleware $ sudo chmod 755 /opt/ }}}
インストールに必要なツール
{{{ $ sudo aptitude update $ sudo aptitude install gcc $ sudo aptitude install g++ $ sudo aptitude install subversion $ sudo aptitude install mercurial $ sudo aptitude install rake $ sudo aptitude install postgresql }}}
Galaxyツールに必要なミドルウェア
{{{ $ sudo aptitude install emboss $ sudo aptitude install r-base-core $ sudo aptitude install ruby1.8-dev(json) $ sudo aptitude install libxml2-dev(nokogiri) $ sudo aptitude install libxslt-dev(nokogiri) }}}
(おまけ)全部まとめた
{{{ $ sudo aptitude install gcc g++ subversion mercurial rake emboss r-base-core ruby1.8-dev libxml2-dev libxslt-dev postgresql }}}
RubyGems
{{{ $ wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz $ tar xf rubygems-1.3.7.tgz $ cd rubygems-1.3.7/ $ sudo ruby setup.rb $ hash -r $ gem1.8 env $ sudo gem1.8 install json $ sudo gem1.8 install nokogiri $ sudo gem1.8 install soap4r $ sudo gem1.8 install rubyrdf $ sudo gem1.8 install mechanize $ sudo gem1.8 install rdf_context $ sudo gem1.8 install fastercsv $ sudo gem1.8 install twitter4r $ sudo gem1.8 install sqlite3-ruby $ sudo gem1.8 install oauth }}}
(全部まとめた)
{{{ $ sudo gem1.8 install json nokogiri soap4r rubyrdf mechanize rdf_context fastercsv twitter4r sqlite3-ruby oauth --no-ri --no-rdoc }}}
postgresql
{{{ (まだ未インストールなら) $ sudo aptitude install postgresql
- ユーザpostgresのパスワードを変更
$ sudo passwd postgres (適当な新しいパスワードを入力する)
- postgresユーザになる
$ su postgres
- ユーザubuntuをDBへアクセスできるようにする
$ createuser ubuntu (スーパーユーザにしておく)
- postgresユーザから抜ける
$ exit
- データベース作成
$ createdb galaxy
- アクセス用のユーザの作成
$ createuser -P kusako (パスワードは kusako) }}}
httpd
{{{ $ wget http://archive.apache.org/dist/httpd/httpd-2.2.11.tar.bz2 $ tar xf httpd-2.2.11.tar.bz2 $ cd httpd-2.2.11/ $ ./configure --prefix=/opt/services/galaxy/middleware/httpd-2.2.11 --enable-mods-shared=most --enable-proxy $ make $ make install }}}
libopkele
{{{ $ sudo aptitude install libopkele-dev }}}
mod_auth_openid
{{{ $ wget http://butterfat.net/releases/mod_auth_openid/mod_auth_openid-0.5.tar.gz $ tar xf mod_auth_openid-0.5.tar.gz $ cd mod_auth_openid-0.5 $ ./configure --prefix=/opt/services/galaxy/middleware/httpd-2.2.11 --with-apr-config=/opt/services/galaxy/middleware/httpd-2.2.11/bin/apr-1-config --with-apxs=/opt/services/galaxy/middleware/httpd-2.2.11/bin/apxs --with-pic $ make $ make install }}}
DBCLS Galaxyをインストールする
{{{ $ cd /opt/services/galaxy/development $ svn co http://kiban.dbcls.jp/svn/eiwa19pj/dbcls_galaxy_patch/trunk dbcls_galaxy_patch --username t-hatakeyama --password t-hatakeyama $ cd dbcls_galaxy_patch $ rake update $ cat > /opt/services/galaxy/middleware/httpd-2.2.11/conf/stage.conf <Location "/">
AuthOpenIDEnabled On
- AuthOpenIDServerName http://galaxy.dbcls.jp
- AuthOpenIDTrusted ^https://openid.dbcls.jp/server$
AuthOpenIDLoginPage /login
</Location> $ rake setup_development }}}
これでApacheが起動してるはずなので、Galaxyも起動してあげる。
Galaxyの設定
が、その前にGalaxyの設定をちょっと修正する
{{{ vi /opt/services/galaxy/development/current/universe_wsgi.ini
database_connection = postgres://kusako:kusako@localhost:37654/galaxy ↓ database_connection = postgres://kusako:kusako@localhost:5432/galaxy
}}}
Galaxyを起動
{{{ $ rake run_galaxy }}}
仮想マシン起動時にGalaxyも起動するようにする
Galaxyのpidの置き場所を作成
mkdir -p /opt/services/galaxy/development/current/tmp/pids
起動スクリプトを作成
起動スクリプトを /etc/init.d/ へ作成する。
{{{ $ sudo vi /etc/init.d/galaxy $ ls -la /etc/init.d/galaxy -rw-r--r-- 1 root root 1338 2010-11-15 08:27 /etc/init.d/galaxy $ sudo chmod 755 /etc/init.d/galaxy }}}
ソースはこんな感じ。
stop
作成した起動スクリプトを現在のランレベルへ登録する
まずはランレベルを確認する。
{{{ $ runlevel N 2 }}}
ランレベルは2なので、/etc/rc2.d/ へ起動スクリプトを登録する
{{{ $ cd /etc/rc2.d/ $ sudo ln -s ../init.d/galaxy S99galaxy }}}
また、シャットダウン時にGalaxyを終了させるため、ランレベル6(/etc/rc6.d/)へ終了スクリプトを登録する
{{{ $ cd /etc/rc6.d/ $ sudo ln -s ../init.d/galaxy K11galaxy }}}
AMIイメージの作成
- EC2のインスタンスを停止して、「Instance Actions - Instance Management - Create Image(EBS AMI)」を選択 - ImageNameに「dbcls-galaxy-2011-03-07」、descriptionに「dbcls galaxy」と入力して「Create This Image」を押す - しばらく待つとAMIsに出てくる(10分くらい?)