HowToCreateDbclsGalaxyAmiImage

提供:TogoWiki

(版間での差分)
移動: 案内, 検索
(ページの作成: = DBCLS Galaxy用AMIイメージの作り方 = 既存のUbuntuのAMIイメージからDBCLS Galaxyのイメージを作成する方法を以下に示すsimesu。 == セキュ...)
 
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
-
    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
-
    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"
-
  su - $user -c "$httpd_prog start"
+
  if [ ! -d "$galaxy_app_home/tmp/pids" ]
-
  if [ ! -d "$galaxy_app_home/tmp/pids" ]
+
  then
-
  then
+
    mkdir -p "$galaxy_app_home/tmp/pids"
-
    mkdir -p "$galaxy_app_home/tmp/pids"
+
    chown -R $user "$galaxy_app_home/tmp/pids"
-
    chown -R $user "$galaxy_app_home/tmp/pids"
+
  fi
-
  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 $@"
-
  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
-
  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 "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"
-
  su - $user -c "$httpd_prog -k graceful-stop"
+
  return 0
-
  return 0
+
}
-
}
+
-
 
+
restart() {
-
restart() {
+
  stop
-
  stop
+
  sleep 1
-
  sleep 1
+
  start
-
  start
+
  return 0
-
  return 0
+
}
-
}
+
-
 
+
case "$1" in
-
case "$1" in
+
  start)
-
  start)
+
    start
-
    start
+
    ;;
-
    ;;
+
  stop)
-
  stop)
+
    stop
-
    stop
+
    ;;
-
    ;;
+
  restart)
-
  restart)
+
    restart
-
    restart
+
    ;;
-
    ;;
+
  *)
-
  *)
+
    echo $"Usage: $0 {start|stop|restart}"
-
    echo $"Usage: $0 {start|stop|restart}"
+
    exit 1
-
    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分くらい?)