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分くらい?)