AWS EC2 なんかでは hostname が登録されてない場合に sudo を使うと stderr に警告が出る。そのせいで docker ベースのツールは実行時に失敗扱いされるので、セットアップ時に hostname を登録するようにしました。
# 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
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
ネットワークの設定(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
$ sudo apt-get update
$ sudo apt-get install -y git
$ cd ~
$ git clone
https://github.com/pitagora-galaxy/pitagora-galaxy.git
$ git
$ cd ~/install-0.3.2/scripts
$ sh 01_install.sh
$ cd ~/install-0.3.2.git/scripts
$ sh 02_config.sh
$ cd ~
$ . .profile
$ which python /home/ubuntu/galaxy-python/install/bin/python
$ cd ~/install-0.3.2/scripts
$ sh 03_tools.sh
$ 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
$ sudo apt-get update
$ sudo apt-get install -y git
$ cd ~
$ git clone
https://github.com/pitagora-galaxy/install-0.3.1.git
追記: 以下の作業を毎度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 "
” > /var/www/html/index.php
これで http://try.pitagora-galaxy.org/ から http://try.pitagora-galaxy.org/galaxy/ にリダイレクトされるようになります。
ただし、上3つはAMIで起動したOSに含まれていた。
$ sudo apt-get install sysv-rc-conf gcc make libsqlite3-dev libncurses5-dev zlib1g-dev libbz2-dev libssl-dev
MySQL はレポジトリ追加必要
$ sudo apt-get install mysql-server libmysqlclient-dev
途中で root のパスワードを設定する画面が表示されるので「galaxy」と2回入力
$ sudo apt-get install apache2 vsftpd acpid
$ sudo apt-get install linux-image-extra-$(uname -r)
$ sudo apt-get install docker-engine
これらは将来はコンテナ側で用意したい
$ sudo apt-get install default-jdk gfortran g++
以下の操作は install-galaxy.sh に含まれています。
# 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
以下の操作は 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
$ sudo cp ~/install/galaxy-init.sh /etc/init.d/galaxy
$ sudo chmod 755 /etc/init.d/galaxy
$ mysql -u root -pgalaxy < create.sql
$ echo 'exit' | mysql -u galaxy -pgalaxy -D galaxy
CREATE DATABASE galaxy DEFAULT CHARACTER SET utf8;
CREATE USER 'galaxy'@'localhost' IDENTIFIED BY 'galaxy';
GRANT ALL ON galaxy.* TO 'galaxy'@'localhost';
$ 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
$ 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 + '
' +
$ vi ~/galaxy-dist/templates/webapps/galaxy/base_panels.mako
<%def name=
“title()
”>Pitagora-Galaxy</%def>
$ 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
http://download.pitagora-galaxy.org/data/resource/galaxyIcon_noText.png
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
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
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
$ sh install_tools.sh
$ 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
# useradd galaxy
# passwd galaxy
(galaxy)
$ su -
# visudo
%wheel ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD: ALL
# usermod -G wheel galaxy
$ sudo vi /etc/selinux/config
SELINUX=disabled
$ sudo reboot
$ getenforce
Disabled
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
$ sudo yum install -y vim wget gcc sqlite-devel ncurses-devel zlib-devel bzip2-devel openssl-devel git
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
$ sudo yum install -y vsftpd php php-mbstring php-mysql acpid
これらは将来はコンテナ側で用意したい
$ sudo yum install -y java gcc-gfortran gcc-c++ gcc-gfortran
$ cd ~
$ git clone
https://github.com/pitagora-galaxy/install-0.3.x.git
以下の操作は install-galaxy.sh に含まれています。
# 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
以下の操作は 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
$ 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
$ sudo chkconfig galaxy on
$ sudo chkconfig
galaxy 0:off 1:off 2:on 3:on 4:on 5:on 6:off
$ 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
$ 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
$ sudo cp ~/install/galaxy-init.sh /etc/init.d/galaxy
$ sudo chmod 755 /etc/init.d/galaxy
$ 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
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
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 + '
' +
$ vi ~/galaxy-dist/templates/webapps/galaxy/base_panels.mako
<%def name=
“title()
”>Pitagora-Galaxy</%def>
$ 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
http://download.pitagora-galaxy.org/data/resource/galaxyIcon_noText.png