構築手順 0.3.x

From Pitagora-Galaxy Wiki
Jump to: navigation, search

Main Page >> Admin >>


Pitagora 0.3.4

AWS EC2 なんかでは hostname が登録されてない場合に sudo を使うと stderr に警告が出る。そのせいで docker ベースのツールは実行時に失敗扱いされるので、セットアップ時に hostname を登録するようにしました。

  • scripts/01_install.sh
# For EC2: add hostname to /etc/hostname to avoid warnings on sudo
sudo sh -c 'echo 127.0.1.1 $(hostname) >> /etc/hosts'

VM)ネットワーク設定の修正。Gateway は設定しない。

$ sudo vi /etc/network/interfaces
#gateway 192.168.56.1

VM)ubuntu ユーザーのパスワードを ubuntu から galaxy に変更

$ sudo passwd ubuntu

Pitagora 0.3.3

Miniconda のインストール(参考

$ wget https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh
$ bash Miniconda2-latest-Linux-x86_64.sh
Miniconda2 will now be installed into this location:
/home/ubuntu/miniconda2
[/home/ubuntu/miniconda2] >>> Enter
Do you wish the installer to prepend the Miniconda2 install location
to PATH in your /home/ubuntu/.bashrc ? [yes|no]
[no] >>> no

Pitagora 0.3.2(まとめ)

  • VirtualBox の場合: Ubuntu をインストール
    • VM ubuntu-14.04.4-server-amd64.iso をダウンロード & インストール
      • English / Zone: Japan / United States - en_US.UTF-8 / Keyboard: English (US) / Hostname: ubuntu / User: ubuntu (galaxy) / Packages: Open SSH

ネットワークの設定(NATで接続できなくなった場合、NATとHost Onlyの両方を停止した後、NATだけを起動すると接続できるようになる場合がある)

$ sudo vi /etc/network/interfaces
auto eth1
iface eth1 inet static
address 192.168.56.10
network 192.168.56.0
netmask 255.255.255.0
gateway 192.168.56.1

$ sudo ifup eth1
  • AWS の場合: AMI からインスタンス起動
    • ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-20160114.5 (ami-a21529cc)
  • Git をインストール
$ sudo apt-get update
$ sudo apt-get install -y git
  • Pitagora-Galaxy のインストール用スクリプトを入手
$ cd ~
$ git clone https://github.com/pitagora-galaxy/pitagora-galaxy.git
$ git 
  • Galaxy インストール用スクリプトを実行
$ cd ~/install-0.3.2/scripts
$ sh 01_install.sh
  • Galaxy 設定用スクリプトを実行
    • 終了後、http://<ip_address>/galaxy/ にアクセス
    • User: admin@pitagora-galaxy.org / galaxy を作成
    • API Key を作成してメモしておく
$ cd ~/install-0.3.2.git/scripts
$ sh 02_config.sh
  • ツールインストール用スクリプトを実行
    • 新しくインストールした python を使うためにパスを読み込み直す
$ cd ~
$ . .profile

$ which python /home/ubuntu/galaxy-python/install/bin/python

$ cd ~/install-0.3.2/scripts
$ sh 03_tools.sh <api_key>

Pitagora 0.3.1(詳細)

OS インストール(AWS)

  • 起動する AMI
    • ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-20160114.5 (ami-a21529cc)
  • ストレージ
    • /dev/sda1 8GB
    • /dev/sdb 10GB
    • /dev/sdc 10GB
  • セキュリティ・グループ
    • TCP 80

OS インストール(VM〜未編集)

  • 仮想マシン
    • ディスク: SCSI 可変 30GB
  • Image: CentOS-7-x86_64-Minimal-1511.iso
    • Date/Time: Asia/Tokyo
    • Keyboard: English (US)
    • Language Support: English (United States)
    • Security Policy: No profile selected
    • Software Selection: Minimal Install
    • Root Password: galaxy
  • ホストオンリーネットワークを設定
$ nmtui
$ systemctl restart NetworkManager
  • 言語を英語に変更
# set | grep LANG
LANG=ja_JP.UTF-8
# vi /etc/profile
export LANG=en_US.UTF-8
# source /etc/profile
# set | grep LANG
LANG=en_US.UTF-8

ネットワーク 確認

確認

$ ip addr show

確認

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

必要に応じて再起動

$ sudo nmcli c down enp0s3
$ sudo nmcli c up enp0s3

インストール用スクリプトの入手

  • Git をインストール
$ sudo apt-get update
$ sudo apt-get install -y git
  • Pitagora-Galaxy のインストール用スクリプトを入手
$ cd ~
$ git clone https://github.com/pitagora-galaxy/install-0.3.1.git

インストール後の追加作業 (20160808 - ohta)

sudo: unable to resolve host が出た場合の解決

追記: 以下の作業を毎度AMI立ち上げる度にやるのは面倒なので起動時に設定を書き込むようにする。

$ sudo vim /etc/rc.local # echo "127.0.0.1 " `hostname` >> /etc/hosts を /etc/rc.local に書き込む

これで以下はやらなくてOK.

---

サーバにsshしてsudoで何かしらのコマンドを実行すると

sudo: unable to resolve host ip-10-0-0-50

のようなエラーが出る場合、Galaxyの実行時にも「正常に実行され結果も出力されるがエラーが出る」という状態になる。

これを解決するには

$ sudo echo "127.0.1.1 ip-10-0-0-50" >> /etc/hosts

のように追記するとエラーが消える。 https://forums.aws.amazon.com/message.jspa?messageID=495274 を参照。

phpのインストールと / => /galaxy のリダイレクト

$ sudo apt-get update -y && sudo apt-get -y install php5 php5-cgi libapache2-mod-php5 php5-common php-pear
$ a2enconf php5-cgi.conf
$ sudo a2enconf php5-cgi.conf
$ sudo vim /etc/php5/apache2/php.ini  # date.timezone の行のコメントアウトを外して date.timezone = "Asia/Tokyo" に変更。
$ sudo mv /var/www/html/index.html /var/www/html/index.html.bu
$ sudo echo -e "<?php\n  header(\"Location: /galaxy/\")\n?>" > /var/www/html/index.php

これで http://try.pitagora-galaxy.org/ から http://try.pitagora-galaxy.org/galaxy/ にリダイレクトされるようになります。

01_install.sh

OSパッケージ追加

  • vim: 見やすい方がいいため
  • wget: Python 他のダウンロードのため
  • patch: package_ncurses_5_9 のインストールに必要なため

ただし、上3つはAMIで起動したOSに含まれていた。

  • sysv-rc-conf: サービスの管理を便利にするため
  • gcc: Python 他のコンパイルのため
  • make: Python 他のコンパイルのため
  • libsqlite3-dev: Galaxy に必要(Python コンパイル前)
  • libncurses5-dev: Galaxy に必要(Python コンパイル前)
  • zlib1g-dev: Galaxy に必要?(Python コンパイル前)
  • libbz2-dev: Galaxy に必要?(Python コンパイル前)
  • libssl-dev: Galaxy に必要?(Python コンパイル前)
$ sudo apt-get install sysv-rc-conf gcc make libsqlite3-dev libncurses5-dev zlib1g-dev libbz2-dev libssl-dev

MySQL はレポジトリ追加必要

  • インストールの途中でパスワードを訊かれるので「galaxy」と2度入力します
  • mysql-server: Galaxy で MySQL を使うため
  • libmysqlclient-dev: Galaxy で MySQL を使うため
$ sudo apt-get install mysql-server libmysqlclient-dev

途中で root のパスワードを設定する画面が表示されるので「galaxy」と2回入力

  • apache2: Web サーバーでプロキシするため
  • vsftpd: Galaxy で FTP を使うため
  • acpid: ACPIシャットダウンを使えるようにするため
$ sudo apt-get install apache2 vsftpd acpid
  • docker: aufs を使用したいので linux-image-extra を先にインストールしておく
$ sudo apt-get install linux-image-extra-$(uname -r)
$ sudo apt-get install docker-engine

これらは将来はコンテナ側で用意したい

  • default-jdk: FastQC などのツールで使用するため
  • gcc-gfortran: cufflinksなどが必要とするRパッケージ(RCurl, acepack)のコンパイルに必要なため
  • gcc-c++: cufflinksなどが必要とするRパッケージのコンパイルに必要なため
$ sudo apt-get install default-jdk gfortran g++

Galaxy 用の Python インストール

以下の操作は install-galaxy.sh に含まれています。

  • galaxyユーザーでPython(2.7.11)をコンパイル
# exit 
$ mkdir galaxy-python
$ cd galaxy-python
$ wget http://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
$ mkdir install
$ tar xvzf Python-2.7.11.tgz
$ cd Python-2.7.11
$ ./configure --prefix=/home/galaxy/galaxy-python/install
$ make
$ make install
  • 環境変数を設定
$ which python
/usr/bin/python
$ cd
$ vi .bash_profile
export PATH=$HOME/galaxy-python/install/bin:$PATH
export PYTHONPATH=$HOME/galaxy-python/install/lib/python2.11/site-packages
$ source .bash_profile
$ which python
~/galaxy-python/install/bin/python
$ python --version
Python 2.7.11

Galaxy のインストール

以下の操作は install-galaxy.sh に含まれています。

$ git clone https://github.com/galaxyproject/galaxy/
  • 起動
$ cd galaxy
$ ./run.sh
  • ログを確認
$ tail -f paster.log
   ..
   ..
serving on 0.0.0.0:8080 view at http://127.0.0.1:8080

02_config.sh

galaxy サービスの作成

$ sudo cp ~/install/galaxy-init.sh /etc/init.d/galaxy
$ sudo chmod 755 /etc/init.d/galaxy

MySQL の初期設定

  • データベースとユーザーの作成
$ mysql -u root -pgalaxy < create.sql
  • ログイン確認
$ echo 'exit' | mysql -u galaxy -pgalaxy -D galaxy
  • create.sql
CREATE DATABASE galaxy DEFAULT CHARACTER SET utf8;
CREATE USER 'galaxy'@'localhost' IDENTIFIED BY 'galaxy';
GRANT ALL ON galaxy.* TO 'galaxy'@'localhost';

Galaxy の基本的な設定

  • 設定ファイルの作成と変更
$ cp ~/install/galaxy.ini ~/galaxy/config/

変更点

$ cd ~/galaxy/config
$ cp galaxy.ini.sample galaxy.ini
$ vi galaxy.ini
host = 0.0.0.0
admin_users = admin@pitagora-galaxy.org
tool_dependency_dir = ../tool_dependency
allow_user_deletion = True
allow_user_dataset_purge = True
database_connection = mysql://galaxy:galaxy@localhost:3306/galaxy?unix_socket=/var/run/mysqld/mysqld.sock
database_engine_option_pool_recycle = 7200

プロキシ関連

[filter:proxy-prefix]
use = egg:PasteDeploy#prefix
prefix = /galaxy

[app:main]
filter-with = proxy-prefix
cookie_path = /galaxy

ディスク追加

  • SCSIに2TBの可変サイズのディスクを2つ追加
$ sudo mkfs -t ext4 /dev/sdb
$ sudo mkfs -t ext4 /dev/sdc
$ sudo mkdir -p /disk/reference
$ sudo mkdir -p /disk/database
$ sudo vi /etc/fstab
/dev/sdb /disk/reference ext4 defaults 0 0
/dev/sdc /disk/database  ext4 defaults 0 0
$ sudo mount -a
$ sudo chown galaxy:galaxy /disk/reference
$ sudo chown galaxy:galaxy /disk/database
  • データ・ファイルのディレクトリを移動
$ cp -r ~/galaxy/database/* /disk/database/
$ mv ~/galaxy/database ~/galaxy/database_bak
$ ln -s /disk/database ~/galaxy/database
$ ls -l ~/galaxy/database

タイトルとアイコンの変更

  • 左上のタイトル
$ vi ~/galaxy-dist/static/scripts/galaxy.masthead.js
' Pitagora-Galaxy ' + brand_text + '' +
  • サイトの META タグのタイトル
$ vi ~/galaxy-dist/templates/webapps/galaxy/base_panels.mako
<%def name="title()">Pitagora-Galaxy</%def>
  • Favicon
$ cd ~/galaxy-dist/static
$ rm favicon.ico
$ wget http://download.pitagora-galaxy.org/data/resource/favicon.ico
  • 左上のタイトルのアイコン
$ cd ~/galaxy-dist/static/images
$ rm galaxyIcon_noText.png
$ wget galaxyIcon_noText.png

Apache によるプロキシ

mod_rewrite, mod_proxy, mod_http_proxy を有効化する

$ sudo a2enmod rewrite proxy proxy_http
$ sudo service apache2 restart

/etc/apache2/sites-available/000-default.conf に以下追記

       #ServerName 192.168.56.10:80 <-- 必要かどうか要検討

       <Directory "/var/www/html">
               AllowOverride All
       </Directory>

/var/www/html/.htaccess を作成(今まで ^/galaxy$ という風にしていたが、/ はいらないようだ)

RewriteEngine on
RewriteRule ^galaxy$ /galaxy/ [R]
RewriteRule ^galaxy(.*) http://localhost:8080$1 [P]
$ sudo chmod 644 /var/www/html/.htaccess

各サービスの起動と初期設定

  • 各サービスの起動
$ sudo service apache2 start
$ sudo service mysql start
$ sudo service acpid start
$ sudo service docker start
$ sudo service galaxy start

03_tools.sh

pycrypto six 追加

API でツールをインストールするために pycrypto が必要

これがないと以下の様なエラーが出る

ImportError: No module named Crypto.Cipher

ImportError: No module named six.moves.urllib.error

$ curl -kL https://bootstrap.pypa.io/get-pip.py | python
$ pip install pycrypto six

samtools 追加

ToolShed から samtools 0.1.19 をインストール

$ vi .bash_profile
export PATH=$HOME/tool_dependency/samtools/0.1.19/devteam/package_samtools_0_1_19/95d2c4aefb5f/bin:$PATH

$ . .bash_profile

tool shed からのインストール

$ sh install_tools.sh <api_key>

Pitagora 0.3.1 (Backup: CentOS 7 を使おうとしてたときのもの)

OS インストール

  • 仮想マシン
    • ディスク: SCSI 可変 30GB
  • Image: CentOS-7-x86_64-Minimal-1511.iso
    • Date/Time: Asia/Tokyo
    • Keyboard: English (US)
    • Language Support: English (United States)
    • Security Policy: No profile selected
    • Software Selection: Minimal Install
    • Root Password: galaxy
  • ホストオンリーネットワークを設定
$ nmtui
$ systemctl restart NetworkManager
  • 言語を英語に変更
# set | grep LANG
LANG=ja_JP.UTF-8
# vi /etc/profile
export LANG=en_US.UTF-8
# source /etc/profile
# set | grep LANG
LANG=en_US.UTF-8

galaxy ユーザー作成

# useradd galaxy
# passwd galaxy
(galaxy)
  • sudo できるようにする
$ su -
# visudo
%wheel  ALL=(ALL)       ALL
%wheel  ALL=(ALL)       NOPASSWD: ALL
# usermod -G wheel galaxy

SELinux 無効化

$ sudo  vi /etc/selinux/config
SELINUX=disabled
$ sudo reboot
$ getenforce
Disabled

Firewall 確認

iptables / firewalld が入っていない

$ sudo systemctl status firewalld
 firewalld.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)
$ sudo systemctl status iptables
 iptables.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

ネットワーク 確認

確認

$ ip addr show

確認

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

必要に応じて再起動

$ sudo nmcli c down enp0s3
$ sudo nmcli c up enp0s3

OSパッケージ追加

  • vim: 見やすい方がいいため
  • wget: Python 他のダウンロードのため
  • gcc: Python 他のコンパイルのため
  • sqlite-devel: Galaxy に必要(Python コンパイル前)
  • ncurses-devel: Galaxy に必要(Python コンパイル前)
  • zlib-devel: Galaxy に必要?(Python コンパイル前)
  • bzip2-devel: Galaxy に必要?(Python コンパイル前)
  • openssl-devel: Galaxy に必要?(Python コンパイル前)
  • git: インストール用スクリプトのダウンロード等のため
$ sudo yum install -y vim wget gcc sqlite-devel ncurses-devel zlib-devel bzip2-devel openssl-devel git

MySQL はレポジトリ追加必要

  • mysql-server: Galaxy で MySQL を使うため
  • mysql-devel: Galaxy で MySQL を使うため
$ sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
$ sudo yum install -y mysql-server mysql-devel
  • vsftpd: Galaxy で FTP を使うため
  • php: phpMyAdmin を使うため
  • php-mbstring: phpMyAdmin を使うため
  • php-mysql: phpMyAdmin を使うため
  • acpid: ACPIシャットダウンを使えるようにするため
$ sudo yum install -y vsftpd php php-mbstring php-mysql acpid

これらは将来はコンテナ側で用意したい

  • java: FastQC などのツールで使用するため
  • gcc-gfortran: cufflinksなどが必要とするRパッケージ(RCurl)のコンパイルに必要なため
  • gcc-c++: cufflinksなどが必要とするRパッケージのコンパイルに必要なため
  • gcc-gfortran: cufflinksなどが必要とするRパッケージ(acepack)のコンパイルに必要なため
  • patch: package_ncurses_5_9 のインストールに必要なため
$ sudo yum install -y java gcc-gfortran gcc-c++ gcc-gfortran

インストール用スクリプトの入手

  • Pitagora-Galaxy のインストール用スクリプトを入手
$ cd ~
$ git clone https://github.com/pitagora-galaxy/install-0.3.x.git

Galaxy 用の Python インストール

以下の操作は install-galaxy.sh に含まれています。

  • galaxyユーザーでPython(2.7.11)をコンパイル
# exit 
$ mkdir galaxy-python
$ cd galaxy-python
$ wget http://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
$ mkdir install
$ tar xvzf Python-2.7.11.tgz
$ cd Python-2.7.11
$ ./configure --prefix=/home/galaxy/galaxy-python/install
$ make
$ make install
  • 環境変数を設定
$ which python
/usr/bin/python
$ cd
$ vi .bash_profile
export PATH=$HOME/galaxy-python/install/bin:$PATH
export PYTHONPATH=$HOME/galaxy-python/install/lib/python2.11/site-packages
$ source .bash_profile
$ which python
~/galaxy-python/install/bin/python
$ python --version
Python 2.7.11

Galaxy のインストール

以下の操作は install-galaxy.sh に含まれています。

$ git clone https://github.com/galaxyproject/galaxy/
  • 起動
$ cd galaxy
$ ./run.sh
  • ログを確認
$ tail -f paster.log
   ..
   ..
serving on 0.0.0.0:8080 view at http://127.0.0.1:8080

各サービスの起動と初期設定

以下の操作は run_services.sh に含まれています。

  • 各サービスの起動
$ sudo systemctl start httpd
$ sudo systemctl start mysqld
$ sudo systemctl start acpid
$ sudo systemctl start docker
$ sudo systemctl start galaxy
  • 各サービスの自動起動設定と確認(Native services)
$ sudo systemctl enable httpd.service
$ sudo systemctl enable mysqld.service
$ sudo systemctl enable acpid.service
$ sudo systemctl enable docker.service
$ sudo systemctl list-unit-files
httpd.service    enabled
mysql.service    enabled
acpid.service    enabled
docker.service   enabled
  • 各サービスの自動起動設定と確認(Non-native services)
$ sudo chkconfig galaxy on
$ sudo chkconfig
galaxy  0:off 1:off 2:on 3:on 4:on 5:on 6:off

MySQL の初期設定

  • MySQLで使用するrootユーザーのパスワードを設定します。
$ sudo mysql
mysql> SET PASSWORD FOR root@localhost=PASSWORD('galaxy');
              Query OK, 0 rows affected (0.00 sec)
mysql> exit
  • パスワードが設定されているかのチェックを行います。
# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
  • パスワードを入力し、ログインします。
# mysql -u root -p
Enter password:
...
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
  • データベースとユーザーの作成
$ mysql -u root -pgalaxy
mysql> CREATE DATABASE galaxy DEFAULT CHARACTER SET utf8;
mysql> CREATE USER 'galaxy'@'localhost' IDENTIFIED BY 'galaxy';
mysql> GRANT ALL ON galaxy.* TO 'galaxy'@'localhost';
  • ログイン確認
$ mysql -u galaxy -pgalaxy -D galaxy

Galaxy の基本的な設定

  • 設定ファイルの作成と変更
$ cp ~/install/galaxy.ini ~/galaxy-dist/config/

(元々の方法)

$ cd ~/galaxy-dist/config
$ cp galaxy.ini.sample galaxy.ini
$ vi galaxy.ini
host = 0.0.0.0
admin_users = admin@pitagora-galaxy.org
tool_dependency_dir = ../tool_dependency
allow_user_dataset_purge = True
database_connection = mysql://galaxy:galaxy@localhost:3306/galaxy?unix_socket=/var/lib/mysql/mysql.sock
database_engine_option_pool_recycle = 7200
  • galaxy サービスを作成
$ sudo cp ~/install/galaxy-init.sh /etc/init.d/galaxy
$ sudo chmod 755 /etc/init.d/galaxy

ディスク追加

  • SCSIに2TBの可変サイズのディスクを2つ追加
$ sudo mkfs -t ext4 /dev/sdb
$ sudo mkfs -t ext4 /dev/sdc
$ sudo mkdir -p /disk/reference
$ sudo mkdir -p /disk/database
$ sudo vi /etc/fstab
/dev/sdb /disk/reference ext4 defaults 0 0
/dev/sdc /disk/database  ext4 defaults 0 0
$ sudo mount -a
$ sudo chown galaxy:galaxy /disk/reference
$ sudo chown galaxy:galaxy /disk/database
  • データ・ファイルのディレクトリを移動
$ cd ~/galaxy
$ cp -r database/* /disk/database
$ mv database database_bak
$ ln -s /disk/database


pycrypto 追加

API でツールをインストールするために pycrypto が必要

(src/MD2.c:31:20: fatal error: Python.h: No such file or directory とのエラーが生成される。)

(sudo yum install python-devel を利用して回避)

$ curl -kL https://bootstrap.pypa.io/get-pip.py | python
$ pip install pycrypto

samtools 追加

ToolShed から samtools 0.1.19 をインストール

$ vi .bash_profile
export PATH=$HOME/tool_dependency/samtools/0.1.19/devteam/package_samtools_0_1_19/95d2c4aefb5f/bin:$PATH

$ . .bash_profile

タイトルとアイコンの変更

  • 左上のタイトル
$ vi ~/galaxy-dist/static/scripts/galaxy.masthead.js
' Pitagora-Galaxy ' + brand_text + '' +
  • サイトの META タグのタイトル
$ vi ~/galaxy-dist/templates/webapps/galaxy/base_panels.mako
<%def name="title()">Pitagora-Galaxy</%def>
  • Favicon
$ cd ~/galaxy-dist/static
$ rm favicon.ico
$ wget http://download.pitagora-galaxy.org/data/resource/favicon.ico
  • 左上のタイトルのアイコン
$ cd ~/galaxy-dist/static/images
$ rm galaxyIcon_noText.png
$ wget galaxyIcon_noText.png