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
ソースはこんな感じ。
#!/bin/sh user=ubuntu galaxy_home=/opt/services/galaxy galaxy_app_home=$galaxy_home/development/current python_prog=/usr/bin/python httpd_prog=$galaxy_home/middleware/httpd-2.2.11/bin/apachectl start() { su - $user -c "$httpd_prog start" if [ ! -d "$galaxy_app_home/tmp/pids" ] then mkdir -p "$galaxy_app_home/tmp/pids" chown -R $user "$galaxy_app_home/tmp/pids" fi su - $user -c "cd $galaxy_app_home; $python_prog -ES $galaxy_app_home/scripts/paster.py serve --daemon --pid-file=$galaxy_app_home/tmp/pids/paster.pid $galaxy_app_home/universe_wsgi.ini $@" return 0 } stop() { su - $user -c "cd $galaxy_app_home; $python_prog -ES $galaxy_app_home/scripts/paster.py serve --stop-daemon --pid-file=$galaxy_app_home/tmp/pids/paster.pid $galaxy_app_home/universe_wsgi.ini $@" su - $user -c "$httpd_prog -k graceful-stop" return 0 } restart() { stop sleep 1 start return 0 } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac
作成した起動スクリプトを現在のランレベルへ登録する
まずはランレベルを確認する。
$ 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分くらい?)