Installing a Browser Mirror on Linux CentOS 7
#环境:CentOS Linux release 7.0.1406
#安装Mysql数据库。
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server
service mysqld restart
#新建一个用户。
mysql –u 用户名 –p 密码
create user 'user'@'localhost' identified by 'PASSWORD';
grant all privileges on hg19.* to 'user'@'localhost'
flush privileges;
#这里面的密码是进入user这个数据库的密码,非mysql登录。user作为名称可以随意替换,但是下文相应的部分也要改。不熟练的话不建议修改。
#安装Apache。
#安装
yum -y install httpd
systemctl enable httpd.service
systemctl start httpd.service
#打开firewalld防火墙的80端口
firewall-cmd --add-service=http
firewall-cmd --permanent --add-service=http
#下载必须的libraries
sudo yum install libssl0.9.8
sudo ln -s /usr/lib/libssl.so.0.9.8 /usr/lib/libssl.so.6
sudo ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.6
#将UCSC放在www/genomebrowser下(如果你的服务器只放该浏览器镜像的话,建议将其直接放在www下),下载html文件(大概耗时0.5-2小时)。
sudo mkdir /var/www/genomebrowser
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/htdocs/ /var/www/genomebrowser/
#安装Genome Browser(大概耗时0.5-2小时)。
sudo mkdir -p /var/www/genomebrowser/cgi-bin
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/cgi-bin/ /var/www/genomebrowser/cgi-bin/
sudo chown -R 755 /var/www/genomebrowser/cgi-bin/
#给genomebrowser访问权限
sudo chown -R 755 /var/www/genomebrowser/
#建立缓存文件夹
sudo rm /var/www/genomebrowser/trash
sudo mkdir /var/www/genomebrowser/trash
sudo chown -R 755 /var/www/genomebrowser/trash
#提供Javascript文件
sudo mkdir -p /var/www/
sudo ln -s /var/www/genomebrowser/js/ /var/www/js
sudo ln -s /var/www/genomebrowser/style/ /var/www/style
#创建并修改/var/www/cgi-bin/hg.conf文件
#可以基于官网提供的.conf进行修改,官网的版本还有很多额外的功能,下载地址如下:
http://genome-test.cse.ucsc.edu/~kent/src/unzipped/product/ex.hg.conf
gedit /var/www/genomebrowser/cgi-bin/hg.conf
#添加以下内容:
# Configuration file for the UCSC Human Genome server
defaultGenome=Human
browser.documentRoot=/var/www/genomebrowser
# the format is in the form of name/value pairs, written as 'name=value'
# note that there is no space between the name and its value. Also, no blank lines #should be in this file.
# db.host is the name of the MySQL host to connect to
db.host=localhost
# db.user is the username used when connecting to the host
db.user=user
# this is the password to use with the above hostname
db.password=PASSWORD
db.trackDb=trackDb
# central.host is the name of the host of the central MySQL
# database where stuff common to all versions of the genome
# and the user database is stored.
central.db=hgcentral
central.host=localhost
central.user=user
central.password=PASSWORD
central.domain=
backupcentral.db=hgcentral
backupcentral.host=localhost
backupcentral.user=user
backupcentral.password=PASSWORD
backupcentral.domain=
###########################添加的内容结束#####################
sudo chown -R 755 /var/www/genomebrowser/cgi-bin/hg.conf
#配置Apache服务器,使下载的html、cgi-bin可以正常显示。
#进入/usr/local/apache/conf目录。httpd.conf文件是Redhat系统中Apache的主要配置文件,谨慎添加内容,用文本编辑器建立httpd.conf并添加如下内容。位置可以放在<Directory "/var/www/cgi-bin">...</Directory>下一行。
gedit /usr/local/apache/conf/httpd.conf
###########################修改以下内容####################
更改默认的root目录
DocumentRoot "/var/www/"
注销掉默认的<Directory "/var/www">
#<Directory "/var/www">
#...
#</Directory>
将<Directory "/var/www/html">改成<Directory "/var/www">
<Directory "/var/www">
###########################以下为添加的内容####################
#Setting for genomebrowser in httpd.conf
#Enable SSI
XBitHack on
<Directory /var/www/genomebrowser/>
AllowOverride AuthConfig
Options Indexes FollowSymLinks MultiViews Includes
Order allow,deny
allow from all
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</Directory>
#Enable CGI
ScriptAlias /genomebrowser/cgi-bin/ "/var/www/genomebrowser/cgi-bin/"
<Directory "/var/www/genomebrowser/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
AddHandler cgi-script cgi pl
</Directory>
###########################添加的内容结束#####################
#进行到此步应该已经可以用http://localhost/genomebrowser/访问本地化的UCSC,如果显示不正常,则可能是由于Server Side Includes (SSI) on Apache没有正常启动
#重新检查以上/usr/local/apache/conf/httpd.conf是否配置正确,按照以上说明进行正确配置即可。
#重启apache2服务器
sudo service apache2 restart
#若此时出现CGI "Internal Server Error" 错误,则可以通过更改/var/www/genomebrowser/cgi-bin/的权限来解决
chmod 755 -R /var/www/genomebrowser/cgi-bin
sudo service apache2 restart
#进一步出现userDb不能写的问题:
#Can't start query: INSERT userDb VALUES(0,"",0,now(),now(),0)
#mySQL error 1036: Table 'userDb' is read only
#可以通过修改/var/lib/mysql的权限来解决
sudo chown -R mysql:mysql /var/lib/mysql
#重启mysql
sudo service mysql restart
#此时可以看到genomebrowser,如果显示不正常,导航栏异常,原因在于Redhat下Apache没有默认地读取htdocs(Ubuntu下Apache默认是读htdocs的)
#解决这个问题只需将genomebrowser下的js和style两个文件夹复制到www下即可。
cp -R /var/www/genomebrowser/style /var/www/
cp -R /var/www/genomebrowser/js /var/www/
#此时如果提示错误Permission denied failed to create directory ../trash/hgt,初步估计是因为trash文件夹没有写的权限所致
chmod 777 -R /var/www/genomebrowser/trash/
#如果遇到导航栏中某些链接指向www/cgi-bin的问题(因为默认的UCSC浏览器是放在www下的),目前比较保守的解决办法是将genomebrowser/cgi-bin下的文件复制到www/cgi-bin(注意此方法并未完全解决链接问题)
cp -Rf /var/www/genomebrowser/cgi-bin/* /var/www/cgi-bin/
#建立Mysql tables。
#首先要下载hgcentral.sql,把他放进mysql的目录,然后写入本地数据库文件。
wget http://hgdownload.cse.ucsc.edu/admin/hgcentral.sql
mysql -u root -p -e "create database hgcentral"
mysql -u root -p hgcentral < /home/download/hgcentral.sql
mysql -u root -p -e "grant all privileges on hgcentral.* to 'user'@'localhost'"
mysql -u root -p -e "create database hgFixed"
mysql -u root -p -e "grant select on hgFixed.* to 'user'@'localhost'"
#UCSC提供了很多物种的Genome数据库。
#以hg19为例,如果要整个下载hg19的数据库,可以用下面的命令,请务必保证硬盘在500G以上(网速好的话,尚需3-4天下载完所有数据)
sudo mkdir /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/ /var/lib/mysql/hg19
#若想尽快实现UCSC本地化且并不需要所有的data,则可以先下载部分必要的table,等本地化完成之后再增加需要的表。
#根据吕杰(http://blog.csdn.net/biocq/article/details/8954749)的经验,hg19数据库中至少要有以下几个表
grp
trackDb
hgFindSpec
chromInfo
gold
gap
#因此分别利用以下语句下载这些表(注,每个表都对应下面的三个文件,.MYD .MYI和.frm)
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/grp.MYD /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/grp.MYI /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/grp.frm /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/trackDb.MYD /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/trackDb.MYI /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/trackDb.frm /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/hgFindSpec.MYD /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/hgFindSpec.MYI /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/hgFindSpec.frm /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/chromInfo.MYD /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/chromInfo.MYI /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/chromInfo.frm /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/gold.MYD /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/gold.MYI /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/gold.frm /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/gap.MYD /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/gap.MYI /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/gap.frm /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/oregannoAttr.MYD /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/oregannoAttr.MYI /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/oregannoAttr.frm /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/refLink.MYD /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/refLink.MYI /var/lib/mysql/hg19
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hg19/refLink.frm /var/lib/mysql/hg19
#此外,要想实现UCSC本地化,MySQL数据库中至少应该有如下几个数据库:
customTrash
hg19
hgFixed
hgcentral
proteinDB
proteins
proteome
swissProt
uniProt
#因此分别利用以下语句下载这些数据库
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/hgFixed/ /var/lib/mysql/hgFixed
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/uniProt/ /var/lib/mysql/uniProt/sp120323/
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/swissProt/ /var/lib/mysql/uniProt/sp111004/
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/proteome/ /var/lib/mysql/proteinDB/proteins120806/
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/mysql/proteins/ /var/lib/mysql/proteinDB/proteins111004/
#再在根目录下建立gbdb文件夹,至少需要下载对应物种(如hg19)的.2bit文件或nib文件
sudo mkdir /gbdb
chmod 755 -R /gbdb
sudo rsync -avzP rsync://hgdownload.cse.ucsc.edu/gbdb/hg19/ /gbdb/hg19/
#这样下载的文件会很多,建议提示下载什么下载什么rsync -avzP rsync://hgdownload.cse.ucsc.edu/gbdb/hg19/multiz100way/ /gbdb/hg19/multiz100way/rsync -avzP rsync://hgdownload.cse.ucsc.edu/gbdb/hg19/wib/laminB1.wib /gbdb/hg19/wib/ #其他可能出现的问题
1、切记不要在虚拟机下的linux(无论是Redhat还是Ubuntu)系统中本地化UCSC,会遇到mysql占用大量CPU的问题。2、UCSC会遇到一个问题:Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (13)。
可能是由于mysql版本的更新,.sock文件放的位置不同了。解决方法:sudo ln -s /var/run/mysqld/mysqld.sock
/var/lib/mysql/mysql.sock
sudo chmod 666 /var/lib/mysql/mysql.sock
sudo chmod 755 /var/lib/mysql/
##在Centos系统中,该问题也有可能是由于SELINUX的安全机制导致的问题,简单的方法就是关闭SELINUX防护:
#setenforce 0
#service mysql restart
再次访问数据库,问题解决。
##但以上方法到下次重启则失效,因此,要想长久作用,需修改SELINUX配置文件(这种方法在CentOS7上奏效)The setenforce 0 command switches off SELinux enforcing until the next reboot, and getenforce shows you the current status. To stop SELinux from enforcing on any reboot, you'll need to change a configuration file:
[root@boxy ~]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.SELINUXTYPE=targeted
Change that enforcing to permissive (or disabled) and you're good to go. The difference:
enforcing blocks operations that SELinux does not allowpermissive does not block the operations, but logs them (to /var/log/audit/audit.log)disabled switches off SELinux entirely, to the extent that you cannot use setenforce until you change it and reboot.
可参考:http://www.fromdual.com/mysql-and-secure-linux-selinux
https://blogs.oracle.com/jsmyth/entry/selinux_and_mysql
##另一种解释是SELINUX限制了Apache访问数据库(这种方法在CentOS7上并不奏效)
http://slaptijack.com/system-administration/apache-cant-use-remote-mysql-server-when-selinux-is-enabled/
##首先利用下面语句查看是否显著了httpd访问db
# getsebool -a | egrep '^httpd'
若存在httpd_can_network_connect_db --> off,则将其启动即可命令为:
# setsebool -P httpd_can_network_connect_db true
###可参考中文说明
http://jejoker.iteye.com/blog/1882028
再次尝试访问genome browser,会遇到以下警告:
Warning/Error(s):
Couldn't connect to database hg19 on localhost as user.
Access denied for user 'user'@'localhost' to database 'hg19'
说明目前还没有hg19数据库,接下来构建hg19并下载必要的文件,有时提示hg19.*,这说明缺少某个表,可以单独下载此表。
3、如果出现Warning/Error(s):External file /gbdb/hg19/multiz100way/maf/chr21.maf cannot be opened or has wrong size. Old size 8328154035, new size -1, error No such file or directory
则说明gbdb文件夹下缺少相应的文件,下载即可。
4、如果已经下载了本地化相关的大量文件,完全可以通过复制的办法来重新本地化,无需再次从UCSC网站下载。
5、如果本地根目录空间太小,无法存放mysql和gbdb两个超级文件夹,可以通过软链接(ln)的方式将其转移至较大的空间内。
(1)转移mysql目录:
cp -aR /var/lib/mysql/. /pub3/mysql
cd /var/lib/
mv mysql mysql_bei #将原有的mysql重命名,作为备份以防万一,同时也为成功做软链接做准备
#ln -s /pub3/mysql /var/lib/mysql (软链接的方式再CentOS 7下不起作用)
#直接通过修改mysql的配置文件将数据地址更改至新地址
#
如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
5、编辑MySQL的配置文件/etc/my.cnf
为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:
/home/mysql/mysql.sock 。操作如下:
vi my.cnf (用vi工具编辑my.cnf文件,找到下列数据修改之)
#把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:datadir=/pub3/mysql。
#datadir=/var/lib/mysql
datadir=/pub3/mysql
# The MySQL server[mysqld] port = 3306
#socket =/pub3/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)
socket = /pub3/mysql/mysql.sock (加上此行)
#更改/usr/bin/mysql_config-64中这个文件里面有一行“ldata='/var/lib/mysql'”
#和"socket=/var/lib/mysql/mysql.sock",这里也需要改掉
错误原因分析及解决方案:
在CentOS上,如果mysql是通过yum安装的,那么可能使用上面的方法不能完全凑效。
原因:mysql的配置文件有多处,除了更改/etc/my.cnf文件之外,还需要更改/usr/lib64/mysql/mysql_config
这个文件里面有一行“ldata='/var/lib/mysql'”和"socket=/var/lib/mysql/mysql.sock",这里也需要改掉
chown -R mysql:mysql /pub3/mysql
service mysql start
(2)转移gbdb目录
cp -aR /gbdb/. /pub3/gbdb
mv gbdb gbdb_bei #以防万一
ln -s /pub3/gbdb /gbdb
至此,UCSC的本地化完成。祝好!
其他供参考的UCSC本地化教程:
UCSC Genome Browser 本地化官方指南 (详细wiki)
UCSC Genome Browser 本地化Google论坛
UCSC Genome Browser 本地安装指南 by 卢金龙
UCSC Genome Browser 本地化安装指南(Ubuntu)by 吕杰
For any more questions, please contact hongbo919@gmail.com.
欢迎关注生信人