HowToCreateDbclsGalaxyAmiImage
提供:TogoWiki
T-hatakeyama (トーク | 投稿記録) (ページの作成: = DBCLS Galaxy用AMIイメージの作り方 = 既存のUbuntuのAMIイメージからDBCLS Galaxyのイメージを作成する方法を以下に示すsimesu。 == セキュ...) |
T-hatakeyama (トーク | 投稿記録) |
||
| 26行: | 26行: | ||
== mkdir == | == mkdir == | ||
| - | + | ||
| - | $ sudo chmod 777 /opt/ | + | $ sudo chmod 777 /opt/ |
| - | $ mkdir -p /opt/services/galaxy/development | + | $ mkdir -p /opt/services/galaxy/development |
| - | $ mkdir -p /opt/services/galaxy/middleware | + | $ mkdir -p /opt/services/galaxy/middleware |
| - | $ sudo chmod 755 /opt/ | + | $ sudo chmod 755 /opt/ |
| - | + | ||
== インストールに必要なツール == | == インストールに必要なツール == | ||
| - | + | $ sudo aptitude update | |
| - | $ sudo aptitude update | + | $ sudo aptitude install gcc |
| - | $ sudo aptitude install gcc | + | $ sudo aptitude install g++ |
| - | $ sudo aptitude install g++ | + | $ sudo aptitude install subversion |
| - | $ sudo aptitude install subversion | + | $ sudo aptitude install mercurial |
| - | $ sudo aptitude install mercurial | + | $ sudo aptitude install rake |
| - | $ sudo aptitude install rake | + | $ sudo aptitude install postgresql |
| - | $ sudo aptitude install postgresql | + | |
| - | + | ||
== Galaxyツールに必要なミドルウェア == | == Galaxyツールに必要なミドルウェア == | ||
| - | + | $ sudo aptitude install emboss | |
| - | $ sudo aptitude install emboss | + | $ sudo aptitude install r-base-core |
| - | $ sudo aptitude install r-base-core | + | $ sudo aptitude install ruby1.8-dev(json) |
| - | $ sudo aptitude install ruby1.8-dev(json) | + | $ sudo aptitude install libxml2-dev(nokogiri) |
| - | $ sudo aptitude install libxml2-dev(nokogiri) | + | $ sudo aptitude install libxslt-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 | + | $ sudo aptitude install gcc g++ subversion mercurial rake emboss r-base-core ruby1.8-dev libxml2-dev libxslt-dev postgresql |
| - | + | ||
== RubyGems == | == RubyGems == | ||
| - | + | $ wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz | |
| - | $ wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz | + | $ tar xf rubygems-1.3.7.tgz |
| - | $ tar xf rubygems-1.3.7.tgz | + | $ cd rubygems-1.3.7/ |
| - | $ cd rubygems-1.3.7/ | + | $ sudo ruby setup.rb |
| - | $ sudo ruby setup.rb | + | $ hash -r |
| - | $ hash -r | + | $ gem1.8 env |
| - | $ gem1.8 env | + | $ sudo gem1.8 install json |
| - | $ sudo gem1.8 install json | + | $ sudo gem1.8 install nokogiri |
| - | $ sudo gem1.8 install nokogiri | + | $ sudo gem1.8 install soap4r |
| - | $ sudo gem1.8 install soap4r | + | $ sudo gem1.8 install rubyrdf |
| - | $ sudo gem1.8 install rubyrdf | + | $ sudo gem1.8 install mechanize |
| - | $ sudo gem1.8 install mechanize | + | $ sudo gem1.8 install rdf_context |
| - | $ sudo gem1.8 install rdf_context | + | $ sudo gem1.8 install fastercsv |
| - | $ sudo gem1.8 install fastercsv | + | $ sudo gem1.8 install twitter4r |
| - | $ sudo gem1.8 install twitter4r | + | $ sudo gem1.8 install sqlite3-ruby |
| - | $ sudo gem1.8 install sqlite3-ruby | + | $ sudo gem1.8 install oauth |
| - | $ 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 | + | $ sudo gem1.8 install json nokogiri soap4r rubyrdf mechanize rdf_context fastercsv twitter4r sqlite3-ruby oauth --no-ri --no-rdoc |
| - | + | ||
== postgresql == | == postgresql == | ||
| - | + | (まだ未インストールなら) | |
| - | (まだ未インストールなら) | + | $ sudo aptitude install postgresql |
| - | $ sudo aptitude install postgresql | + | |
| - | + | # ユーザpostgresのパスワードを変更 | |
| - | # ユーザpostgresのパスワードを変更 | + | $ sudo passwd postgres |
| - | $ sudo passwd postgres | + | (適当な新しいパスワードを入力する) |
| - | (適当な新しいパスワードを入力する) | + | |
| - | + | # postgresユーザになる | |
| - | # postgresユーザになる | + | $ su postgres |
| - | $ su postgres | + | # ユーザubuntuをDBへアクセスできるようにする |
| - | # ユーザubuntuをDBへアクセスできるようにする | + | $ createuser ubuntu |
| - | $ createuser ubuntu | + | (スーパーユーザにしておく) |
| - | (スーパーユーザにしておく) | + | # postgresユーザから抜ける |
| - | # postgresユーザから抜ける | + | $ exit |
| - | $ exit | + | # データベース作成 |
| - | # データベース作成 | + | $ createdb galaxy |
| - | $ createdb galaxy | + | # アクセス用のユーザの作成 |
| - | # アクセス用のユーザの作成 | + | $ createuser -P kusako |
| - | $ createuser -P kusako | + | (パスワードは kusako) |
| - | (パスワードは kusako) | + | |
| - | + | ||
== httpd == | == httpd == | ||
| - | + | $ wget http://archive.apache.org/dist/httpd/httpd-2.2.11.tar.bz2 | |
| - | $ wget http://archive.apache.org/dist/httpd/httpd-2.2.11.tar.bz2 | + | $ tar xf httpd-2.2.11.tar.bz2 |
| - | $ tar xf httpd-2.2.11.tar.bz2 | + | $ cd httpd-2.2.11/ |
| - | $ cd httpd-2.2.11/ | + | $ ./configure --prefix=/opt/services/galaxy/middleware/httpd-2.2.11 --enable-mods-shared=most --enable-proxy |
| - | $ ./configure --prefix=/opt/services/galaxy/middleware/httpd-2.2.11 --enable-mods-shared=most --enable-proxy | + | $ make |
| - | $ make | + | $ make install |
| - | $ make install | + | |
| - | + | ||
== libopkele == | == libopkele == | ||
| - | + | $ sudo aptitude install libopkele-dev | |
| - | $ sudo aptitude install libopkele-dev | + | |
| - | + | ||
== mod_auth_openid == | == mod_auth_openid == | ||
| - | + | $ wget http://butterfat.net/releases/mod_auth_openid/mod_auth_openid-0.5.tar.gz | |
| - | $ wget http://butterfat.net/releases/mod_auth_openid/mod_auth_openid-0.5.tar.gz | + | $ tar xf mod_auth_openid-0.5.tar.gz |
| - | $ tar xf mod_auth_openid-0.5.tar.gz | + | $ cd mod_auth_openid-0.5 |
| - | $ 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 |
| - | $ ./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 | + | $ make install |
| - | $ make install | + | |
| - | + | ||
== DBCLS Galaxyをインストールする == | == DBCLS Galaxyをインストールする == | ||
| - | + | $ cd /opt/services/galaxy/development | |
| - | $ 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 |
| - | $ 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 |
| - | $ cd dbcls_galaxy_patch | + | $ rake update |
| - | $ rake update | + | $ cat > /opt/services/galaxy/middleware/httpd-2.2.11/conf/stage.conf |
| - | $ cat > /opt/services/galaxy/middleware/httpd-2.2.11/conf/stage.conf | + | <Location "/"> |
| - | <Location "/"> | + | AuthOpenIDEnabled On |
| - | + | # AuthOpenIDServerName http://galaxy.dbcls.jp | |
| - | # AuthOpenIDServerName http://galaxy.dbcls.jp | + | # AuthOpenIDTrusted ^https://openid.dbcls.jp/server$ |
| - | # AuthOpenIDTrusted ^https://openid.dbcls.jp/server$ | + | AuthOpenIDLoginPage /login |
| - | + | </Location> | |
| - | </Location> | + | $ rake setup_development |
| - | $ rake setup_development | + | |
| - | + | ||
これでApacheが起動してるはずなので、Galaxyも起動してあげる。 | これでApacheが起動してるはずなので、Galaxyも起動してあげる。 | ||
| 163行: | 144行: | ||
が、その前にGalaxyの設定をちょっと修正する | が、その前にGalaxyの設定をちょっと修正する | ||
| - | + | vi /opt/services/galaxy/development/current/universe_wsgi.ini | |
| - | vi /opt/services/galaxy/development/current/universe_wsgi.ini | + | ---- |
| - | ---- | + | database_connection = postgres://kusako:kusako@localhost:37654/galaxy |
| - | database_connection = postgres://kusako:kusako@localhost:37654/galaxy | + | ↓ |
| - | ↓ | + | database_connection = postgres://kusako:kusako@localhost:5432/galaxy |
| - | database_connection = postgres://kusako:kusako@localhost:5432/galaxy | + | ---- |
| - | ---- | + | |
| - | + | ||
== Galaxyを起動 == | == Galaxyを起動 == | ||
| - | + | $ rake run_galaxy | |
| - | $ rake run_galaxy | + | |
| - | + | ||
| 190行: | 167行: | ||
起動スクリプトを /etc/init.d/ へ作成する。 | 起動スクリプトを /etc/init.d/ へ作成する。 | ||
| - | + | $ sudo vi /etc/init.d/galaxy | |
| - | $ sudo vi /etc/init.d/galaxy | + | $ ls -la /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 |
| - | -rw-r--r-- 1 root root 1338 2010-11-15 08:27 /etc/init.d/galaxy | + | $ sudo chmod 755 /etc/init.d/galaxy |
| - | $ sudo chmod 755 /etc/init.d/galaxy | + | |
| - | + | ||
ソースはこんな感じ。 | ソースはこんな感じ。 | ||
| - | + | #!/bin/sh | |
| - | #!/bin/sh | + | |
| - | + | user=ubuntu | |
| - | user=ubuntu | + | galaxy_home=/opt/services/galaxy |
| - | galaxy_home=/opt/services/galaxy | + | galaxy_app_home=$galaxy_home/development/current |
| - | galaxy_app_home=$galaxy_home/development/current | + | python_prog=/usr/bin/python |
| - | python_prog=/usr/bin/python | + | httpd_prog=$galaxy_home/middleware/httpd-2.2.11/bin/apachectl |
| - | httpd_prog=$galaxy_home/middleware/httpd-2.2.11/bin/apachectl | + | |
| - | + | start() { | |
| - | 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() { | |
| - | 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() { | |
| - | restart() { | + | stop |
| - | + | sleep 1 | |
| - | + | start | |
| - | + | return 0 | |
| - | + | } | |
| - | } | + | |
| - | + | case "$1" in | |
| - | case "$1" in | + | start) |
| - | + | start | |
| - | + | ;; | |
| - | + | stop) | |
| - | + | stop | |
| - | + | ;; | |
| - | + | restart) | |
| - | + | restart | |
| - | + | ;; | |
| - | + | *) | |
| - | + | echo $"Usage: $0 {start|stop|restart}" | |
| - | + | exit 1 | |
| - | + | esac | |
| - | esac | + | |
| - | + | ||
| - | + | ||
=== 作成した起動スクリプトを現在のランレベルへ登録する === | === 作成した起動スクリプトを現在のランレベルへ登録する === | ||
| 254行: | 227行: | ||
まずはランレベルを確認する。 | まずはランレベルを確認する。 | ||
| - | + | $ runlevel | |
| - | $ runlevel | + | N 2 |
| - | N 2 | + | |
| - | + | ||
ランレベルは2なので、/etc/rc2.d/ へ起動スクリプトを登録する | ランレベルは2なので、/etc/rc2.d/ へ起動スクリプトを登録する | ||
| - | + | $ cd /etc/rc2.d/ | |
| - | $ cd /etc/rc2.d/ | + | $ sudo ln -s ../init.d/galaxy S99galaxy |
| - | $ sudo ln -s ../init.d/galaxy S99galaxy | + | |
| - | + | ||
また、シャットダウン時にGalaxyを終了させるため、ランレベル6(/etc/rc6.d/)へ終了スクリプトを登録する | また、シャットダウン時にGalaxyを終了させるため、ランレベル6(/etc/rc6.d/)へ終了スクリプトを登録する | ||
| - | + | $ cd /etc/rc6.d/ | |
| - | $ cd /etc/rc6.d/ | + | $ sudo ln -s ../init.d/galaxy K11galaxy |
| - | $ sudo ln -s ../init.d/galaxy K11galaxy | + | |
| - | + | ||
2011年3月9日 (水) 02:15時点における最新版
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分くらい?)