構築手順 0.2.x

From Pitagora-Galaxy Wiki
Jump to: navigation, search

Main Page >> Admin >>

Pitagora 0.2.5 (作業中)

Http サーバーによるプロキシ設定

こちらを参照: https://wiki.galaxyproject.org/Admin/Config/ApacheProxy

まず、サーバー名を設定しておく。これが誤っているとうまくRewriteされない。

$ sudo vi /etc/httpd/conf/http.conf
ServerName 192.168.56.10:80

Rewrite により /galaxy/ で参照できるようにする

$ sudo vi /etc/httpd/conf/http.conf
RewriteEngine on
RewriteRule ^/galaxy$ /galaxy/ [R]
RewriteRule ^/galaxy(.*) http://localhost:8080$1 [P]

静的コンテンツを Http サーバーで扱うようにすることができるが、今回、権限エラー(You don't have permission to access)が出たので設定していない。未調査。

$ sudo vi /etc/httpd/conf/http.conf
RewriteRule ^/galaxy/static/style/(.*) /home/nate/galaxy-dist/static/june_2007_style/blue/$1 [L]
RewriteRule ^/galaxy/static/scripts/(.*) /home/nate/galaxy-dist/static/scripts/packed/$1 [L]
RewriteRule ^/galaxy/static/(.*) /home/nate/galaxy-dist/static/$1 [L]
RewriteRule ^/galaxy/favicon.ico /home/nate/galaxy-dist/static/favicon.ico [L]
RewriteRule ^/galaxy/robots.txt /home/nate/galaxy-dist/static/robots.txt [L]

Galaxy 側の設定

$ vi ~/galaxy-dist/config/galaxy.ini

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

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

それぞれ再起動

$ sudo service httpd restart
$ sudo service galaxy restart

Pitagora 0.2.4

ツールの追加

python ~/galaxy-dist/scripts/api/install_tool_shed_repositories.py -a 126a89c98a5d1a2c234edf2651024a03 -l http://localhost:8080 -u https://testtoolshed.g2.bx.psu.edu/ -n tool_shed_test_1 -o pitagora-mak -r 3bbc8d428ef1 --panel-section-name "Variant Call" --repository-deps --tool-deps

samtools をパスに追加

Galaxy に BAM ファイルをアップロードすると、自動的に BAM インデックスを作成する。この際、samtools コマンドが実行されるため、パスに samtools を追加しておく必要がある。ここでは、Tool Shed 経由でインストールされている samtools を参照させているが、Galaxy 必須のコマンドと考えて Galaxy のインストール手順に含めるのがよいかもしれない。

$ 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/welcome.html
        <br/>
        <p><b>ピタゴラ・ギャラクシーへようこそ!</b></p>
        <p>上のメニューから User > Login と進み、次のどちらかのユーザーでログインしてください。</p>
        <ul>
            <li>・管理用ユーザー: admin@pitagora-galaxy.org (password: galaxy) </li>
            <li>・通常のユーザー: test@pitagora-galaxy.org (password: galaxy)</li>
        </ul>
        <br/>

FTP 設定(VSFTPDを使う方法〜採用)

  • pam_mysql をインストール
sudo wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -ivh epel-release-6-8.noarch.rpm
sudo yum -y install pam_mysql
  • vsftpd の設定 (/etc/vsftpd/vsftpd.conf)
    • pam_mysqlによる認証を有効化するために、以下の設定項目を追加。
$ sudo vi /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=galaxy
local_root=/home/galaxy/galaxy-dist/database/ftp/$USER
user_sub_token=$USER
virtual_use_local_privs=YES     # galaxyユーザーとしての書き込み権限
chroot_local_user=YES            # ルートディレクトリをユーザーのホームに設定
  • vsftpd の起動、自動起動の設定
sudo /etc/init.d/vsftpd restart
sudo chkconfig vsftpd on
sudo chkconfig --list vsftpd
  • PAM の設定 (/etc/pam.d/vsftpd)
    • Galaxy の DBMS を参照するように既存の設定ファイルを置き換える。(crypt=4 はパスワードの保存形式として SHA1 を利用する設定)
#%PAM-1.0
auth required pam_mysql.so user=galaxy passwd=galaxy host=localhost db=galaxy table=galaxy_user usercolumn=email passwdcolumn=password crypt=4
account required pam_mysql.so user=galaxy passwd=galaxy host=localhost db=galaxy table=galaxy_user usercolumn=email passwdcolumn=password crypt=4
  • galaxy.ini に下記2項目を設定すると FTP 機能が有効化される
ftp_upload_dir = /home/galaxy/galaxy-dist/database/ftp
ftp_upload_site = 192.168.56.10
  • galaxy.ini の [app:main] 以下にこれを設定してパスワードの暗号化形式を変更 参照
    • これを変更して Galaxy を再起動した後、ユーザーを新規作成すると、変更後の暗号化形式が使用される(データベースの galaxy_user 表を見ればわかる)
[app:main]
use_pbkdf2 = False

これを設定した後に作成されたユーザーのパスワードに適用される

  • シンボリックリンクの先は見えないのでマウントにする
cd ~/galaxy-dist
rm database
mkdir database
sudo mount --bind /disk/database /home/galaxy/galaxy-dist/database
sudo vi /etc/fstab
/disk/database /home/galaxy/galaxy-dist/database none bind 0 0
  • GalaxyユーザのFTP先ディレクトリを作成しておく
sudo -u galaxy mkdir -p /home/galaxy/galaxy-dist/database/ftp/<GalaxyUserEmail>

FTP 設定(ProFTPDを使う方法〜不採用)

  • ProFTPD をインストール
sudo wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -ivh epel-release-6-8.noarch.rpm
sudo yum --enablerepo=epel -y install proftpd proftpd-mysql
sudo yum -y install mysql-devel
  • galaxy.ini に下記2項目を設定すると FTP 機能が有効化される
ftp_upload_dir = /home/galaxy/galaxy-dist/database/ftp
ftp_upload_site = 192.168.56.10
  • galaxy.ini の [app:main] 以下にこれを設定してパスワードの暗号化形式を変更 参照
  • これを変更して Galaxy を再起動した後、ユーザーを新規作成すると、変更後の暗号化形式が使用される(データベースの galaxy_user 表を見ればわかる)
[app:main]
use_pbkdf2 = False

これを設定した後に作成されたユーザーのパスワードに適用される

  • シンボリックリンクの先は見えないのでマウントにする
rm database
mount --bind /disk/database /home/galaxy/galaxy-dist/database
  • ProFTPD の設定(/etc/proftpd.conf)
    • ここを参照。必須なのはこの辺りかと思われる
    • galaxy ユーザーの UID/GID: 500/500
# Common SQL authentication options
SQLEngine                       on
SQLPasswordEngine               on
SQLBackend                      mysql
SQLConnectInfo                  galaxy@localhost:3306 galaxy galaxy
SQLAuthenticate                 users

# Set up mod_sql/mod_sql_password - Galaxy passwords are stored as hex-encoded SHA1
SQLAuthTypes                    SHA1
SQLPasswordEncoding             hex

# An empty directory in case chroot fails
SQLDefaultHomedir               /var/opt/local/proftpd

# Define a custom query for lookup that returns a passwd-like entry. Replace 512s with the UID and GID of the user running the Galaxy server
SQLUserInfo                     custom:/LookupGalaxyUser
SQLNamedQuery                   LookupGalaxyUser SELECT "email,password,500,500,'/home/galaxy/galaxy-dist/database/ftp/%U','/bin/bash' FROM galaxy_user WHERE email='%U'"
sudo service proftpd restart

起動は問題なしだが、接続できなかった!

Command: 	USER test2@pitagora-galaxy.org
Response:  	331 Password required for test2@pitagora-galaxy.org
Command: 	PASS ******
Response:  	530 Login incorrect.
Error:         	Critical error: Could not connect to server

Pitagora 0.2.3

Galaxy のアップデート

  • ワークフローのエディタで input が作れないバグがあったため
$ cd ~/galaxy-dist
$ ./run.sh --stop
$ rm database
$ mv database_bak database
$ hg pull
$ hg update --clean
$ hg update latest_2015.01.13
$ ./run.sh
$ rm -rf /disk/database/*
$ cp -r database/* /disk/database
$ mv database database_bak
$ ln -s /disk/database
$ ./run.sh --daemon

Git レポジトリ install-0.2.3 をクローン

$ git clone https://github.com/pitagora-galaxy/install-0.2.3.git

Tool Shed レポジトリのインストール

$ sh ~/install-0.2.3/scripts/install-tools.sh

Tool Shed レポジトリの手動インストール

  • tophat2
    • revision が上がって以前の revision がインストールできなくなったため、新しい revision をインストール
    • API 経由でエラーになるため手動でインストールした

リファレンス・データのパスを設定

$ cp ~/install-0.2.3/config/tool_data_table_conf.xml ~/galaxy-dist/config/
$ cp ~/install-0.2.3/tool-data/*.loc ~/galaxy-dist/tool-data/

ワークフローの追加

  • ローカルで Git レポジトリ install-0.2.3 をクローン
  • workflows ディレクトリのワークフローを Galaxy UI から Import
  • 適切に Rename して、Share & Publish する

Pitagora 0.2.2

ACPI のインストール

ACPI シャットダウンを可能にする

$ sudo yum install acpid
$ sudo service acpid start
$ sudo chkconfig acpid on

Tool Shed レポジトリのインストール

  • Galaxy に Admin ユーザーでログイン
  • User > API Keys > Create A New Key で Key を入手し、下記スクリプトの API Key を置換
$ sh ~/install-0.2.2/scripts/install-tools.sh

リファレンス・データのパスを設定

$ cp ~/install-0.2.2/config/tool_data_table_conf.xml ~/galaxy-dist/config/
$ cp ~/install-0.2.2/tool-data/*.loc ~/galaxy-dist/tool-data/

ワークフローの追加

  • ローカルで Git レポジトリ install-0.2.2 をクローン
  • workflows ディレクトリのワークフローを Galaxy UI から Import
  • 適切に Rename して、Share & Publish する

Pitagora 0.2.1

OS インストール

  • 仮想マシン
    • ディスク: SCSI 可変 8GB
  • Image: CentOS-6.6-x86_64-minimal.iso
    • Keyboard: U.S. English
    • Basic Storage Devices
    • Hostname: localhost.localdomain
    • City: Asia/Tokyo
    • Root Password: galaxy
    • Use All Device
  • 言語を英語に変更
# 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

ネットワーク設定

  • eth0 (NAT)
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
  • eth1 (Host Only)
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.56.10
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
  • NAT接続用NICの再起動設定
# vi /etc/rc.d/rc.local
echo > /etc/resolv.conf
ifdown eth0
ifup eth0

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 停止

$ sudo chkconfig iptables off
$ sudo chkconfig ip6tables off
$ sudo chkconfig --list
$ sudo reboot

パッケージ追加

  • vim: 見やすい方がいいため
  • wget: Python 他のダウンロードのため
  • gcc: Python 他のコンパイルのため
  • sqlite-devel: Galaxy に必要(Python コンパイル前)
  • zlib-devel: Galaxy に必要?(Python コンパイル前)
  • bzip2-devel: Galaxy に必要?(Python コンパイル前)
  • openssl-devel: Galaxy に必要?(Python コンパイル前)
  • git: インストール用スクリプトのダウンロード等のため
  • vsftpd: Galaxy で FTP を使うため
  • mysql-server: Galaxy で MySQL を使うため
  • php: phpMyAdmin を使うため
  • php-mbstring: phpMyAdmin を使うため
  • php-mysql: phpMyAdmin を使うため
  • java: FastQC などのツールで使用するため
  • gcc-gfortran: cufflinksなどが必要とするRパッケージ(RCurl)のコンパイルに必要なため
  • gcc-c++: cufflinksなどが必要とするRパッケージのコンパイルに必要なため
  • gcc-gfortran: cufflinksなどが必要とするRパッケージ(acepack)のコンパイルに必要なため
$ sudo yum install -y \
   vim wget gcc sqlite-devel zlib-devel bzip2-devel openssl-devel git vsftpd mysql-server \
   php php-mbstring php-mysql java gcc-c++ gcc-gfortran

Galaxy 用の Python インストール

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

Galaxy のインストール

  • Mercurial のインストール
$ pip install mercurial
  • クローン
$ cd ~
$ hg clone https://bitbucket.org/galaxy/galaxy-dist/
  • 起動
$ cd galaxy-dist
$ ./run.sh
  • ログを確認
$ tail -f paster.log
   ..
   ..
serving on 0.0.0.0:8080 view at http://127.0.0.1:8080
  • Pitagora-Galaxy のインストール用スクリプトを入手
$ cd ~
$ git clone https://github.com/pitagora-galaxy/install.git
  • 設定ファイルの作成と変更
$ 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
  • galaxy サービスを作成
$ sudo cp ~/install/galaxy-init.sh /etc/init.d/galaxy
$ sudo chmod 755 /etc/init.d/galaxy

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

  • 各サービスの起動
$ sudo service httpd start
$ sudo service mysqld start
$ sudo service galaxy start
  • 各サービスの自動起動
$ sudo chkconfig galaxy on
$ sudo chkconfig httpd on
$ sudo chkconfig mysqld on
$ sudo chkconfig --list
galaxy    	0:off	1:off	2:on	3:on	4:on	5:on	6:off
httpd    	0:off	1:off	2:on	3:on	4:on	5:on	6:off
mysqld	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>

phpMyAdmin のインストール

$ sudo chown galaxy:galaxy /var/www/html
$ cd /var/www/html/
$ wget http://...
$ tar xvzf phpMyAdmin-4.0.10.8-all-languages.tar.gz
$ mv phpMyAdmin-4.0.10.8-all-languages phpmyadmin
$ mkdir phpmyadmin/config
$ chmod 777 phpmyadmin/config
  • 認証設定
    1. 新しいサーバの作成
    2. 認証、認証タイプを「cookie」、パスワードを「galaxy」
    3. 保存する
    4. 設定ファイルを保存
  • 保存された設定ファイルを移動
$ mv phpmyadmin/config/config.inc.php phpmyadmin/config.inc.php
$ rmdir phpmyadmin/config

Galaxy のデータベースを 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
  • データベースをMySQLに変更
$ vi ~/galaxy-dist/config/galaxy.ini
#database_connection = sqlite:///./database/universe.sqlite?isolation_level=IMMEDIATE
database_connection = mysql://galaxy:galaxy@localhost:3306/galaxy?unix_socket=/var/lib/mysql/mysql.sock
  • MySQLでは、Galaxyにアクセスがないなど、一定時間接続がないと接続が切断され、「MySQL server has gone away」というエラーが発生します。これを回避するために一定時間で再接続するよう設定しています。この時、MySQLのwait_timeoutよりも短い時間を設定する必要があります。
#database_engine_option_pool_recycle = -1
database_engine_option_pool_recycle = 7200
  • Galaxy の再起動を行うと、MySQL の galaxy データベースに表が作成されます。
$ ~/galaxy-restart.sh

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

  • 左上のタイトル
$ 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

ディスク追加

  • 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-dist
$ cp -r database/* /disk/database
$ mv database database_bak
$ ln -s /disk/database

Tool Shed レポジトリのインストール

  • Galaxy に Admin ユーザーでログイン
  • User > API Keys > Create A New Key で Key を入手し、下記スクリプトの API Key を置換
$ sh ~/install/install-tools.sh

リファレンス・データのパスを設定

$ cp ~/install/config/tool_data_table_conf.xml ~/galaxy-dist/config/
$ cp ~/install/tool-data/*.loc ~/galaxy-dist/tool-data/

filebrowser本体のインストール

$ cd /var/www/html
$ git clone https://github.com/pitagora-galaxy/filebrowser
$ cd filebrowser
$ mysql -u root -pgalaxy
mysql> source sql/setup.sql
mysql> source sql/sample.sql
mysql> GRANT ALL ON filebrowser_03.* TO 'galaxy'@'localhost';
mysql> exit