CentOS7 安装php5.6+nginx1.7.5

由于版本的变化最新的php和nginx安装与配置和前面版本的有稍许差异,首先卸载旧版本,下载最新的软件的软体安装包,安装方法可以参照centos 7 min 编译安装php5.6+nginx1.7.5 笔记这里主要补充一点,就是怎样在nginx中运行php的问题。如果是想单独建一个www的用户的话,上面的安装的基础上需要做如下修改。
1、创建www用户
groupadd www
useradd -g www www -s /bin/false
2、修改nginx.conf配置文件
vi /usr/local/nginx/conf/nginx.conf
user www www; #首行user去掉注释,修改Nginx运行组为www www;必须与/usr/local/php/etc/php-fpm.conf中的user,group配置相同,否则php运行出错,具体方法是打开php-fpm.conf文件,如果在上面路径中找不到这个文件,就在安装包里面找到复制到这里,找到有user和group的行,去掉前面的;号,将nobody改为www。
3、重启nginx和php-fpm
nginx -s reload
/usr/local/php/sbin/php-fpm
4、测试
在www用户目录下创建test.php文件,输入;在浏览器中找开就可以看到PHP配置情况。

centOS7 安装mysql5.6

因为mysql被Oracle收购后会逐渐走向收费,为避免以后的版权纠纷,centos7已经不支持mysql,而是内部集成mariadb代替,而安装mysql的话会和mariadb产生文件冲突,所以安装mysql前要先卸载mariadb。
1、卸载mariadb
rpm -e mariadb-libs-5.5.37-1.el7_0.x86_64
###会提示错误:依赖检测失败
###加上–nodeps参数强制卸载
rpm -e –nodeps mariadb-libs-5.5.37-1.el7_0.x86_64
如果找不到就用yum -y remove mariadb-libs.x86_64
2、下载mysql5.6
centos7等同与Red Hat7,下载此版本下的MySQL-client-5.6.21-1.el7.x86_64 .rpm MySQL-server-5.6.21-1.el7.x86_64.rpm就可以了,如果点击Download会提示你要先登录Oracle帐户,如果没有帐户或者不想登录,在其它地方下载相同的包也可以,如果不想在其它地方找又没有Oracle帐户,顺便注册一个就可以了。
如果嫌麻烦,也可一个FTP站点下载,里面包含了几乎所有的mysql版本。
3、安装mysql
进入到安装包所在目录
rpm -ivh MySQL-client-5.6.21-1.el7.x86_64.rpm
rpm -ivh MySQL-server-5.6.21-1.el7.x86_64.rpm
也可从源代码安装,不过先得安装cmake,软件包为mysql-5.6.24.tar.gz
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc
make
make install
4、生成mysql系统数据库
如果你马上登录mysql会提示找不到/var/lib/mysql/下的sock文件,因为还没有生成系统数据库。
mysql_install_db –user=mysql –basedir=/usr/share/mysql
###生成mysql系统数据库
5、登录mysql
mysql_install_db –random-passwords
###生成随机密码
随机密码保存在$HOME/.mysql_secret文件中,打开这个文件,找到密码。
mysql -u=root -p
###登录mysql,输入随机密码
6、修改root密码
mysql> SET PASSWORD FOR root@localhost=PASSWORD(‘yourpassword’);
###这时不要想着运行其它语句,初次登录时只能改密码
退出mysql
7、添加用户和数据库
用新密码重新登录数据库,创建用户和数据库

荷兰极有可能又是第二

看了一下巴西世界杯淘汰赛赛程,发现在决赛前,唯一对荷兰有威胁的是阿根廷,极有可能在1/4决赛中遭遇,但感觉阿根廷球风比较飘,远没有荷兰狠,荷兰拿下阿根廷应该没有问题。另外一边,巴西强劲的对手有很多,法国、德国乌拉圭,甚至智利都会对巴西构成威胁,但因为是东道主,按照传统,应该会“保送”到至少半决赛,所以我估计决赛很可能是巴西和荷兰对阵,但要想荷兰击败巴西,只能靠天照顾了,但要知道,老天是不怎么喜欢荷兰当老大的,所以荷兰又只能屈居老二了。

基因注释

很多人觉得基因注释很高深,特别对于那些不太懂编程的来说,感到无从下手,去年我也折腾了差不多半年,最后发现也就那么回事。一开始我是找各种基因注释的工具,例如研究geneontology自带的perl程序,里面涉及了众多模板,而且是模块里面又有模块,运行时不是少了这个模块就是那个模块有问题,最后折腾了两三个月也没有得到理想结果。后来用了blast2go这个程序用起来是没有问题,可实在是太慢,几个小时下去,泡都不冒一个。最后默默在躺在床上反思,我的目的是什么,注释的原理是什么。按照这个思路,慢慢的去找这些问题的答案,最后终于开窍了,想明白了真的好简单,现将思路简单归纳如下:
1、基因注释方法
1)根据已注释的信息,利用序列相似性原则,去注释未知序列。
2)查找文献资料注释基因功能。
基因批量注释的话都是采用第一种。
2、所需资料
1)将需要注释的序列翻译成氨基酸序列;
2)下载现有的已注释的蛋白序列(uniprot_sprot.fasta.gz,文件大小为78MB);
3)下载联系蛋白序号和注释号(GO的accession)的文件(idmapping.td.gz,文件大小为2.17G);
4)下载最新的GO数据库文件assocdb-data.gz
3、注释方法
1)利用formatdb格式化已注释的蛋白序列为blast库;
2)将需要注释的序列与blast库做blast;
3)找到与需注释序列相似度高的蛋白序列号;
4)找到这些蛋白序列号对应的注释号(GO号);
5)用GO号在GO数据库文件中的term表中找到注释信息或者在geneontology官网用GO号就可以查到详细的注释信息;

如果用NCBI数据库,方法也差不多,先下载已注释的蛋白序列,格式化数据成blast库,将需注释的序列与这个blast库比对,找到相似度高的已注释的蛋白序列号,用此序列号用NCBI中gene_info.gz和gene2access找到蛋白序列的gene号,然后将此号用gene2go数据找到go号,最后用go号找到其注释信息就行了。

如果按照以上方法操作的话,其实基因注释非常简单,几乎只要做个blast,然后将信息对应过来就可以了,远没有那么复杂。

迷茫

日志

最近断断续续花了半年时间写的一篇文章被拒,使我最近一个星期来心情非常的糟糕,做什么事情也提不起精神,对于做实验也有点灰心。文章的评审意见非常中肯,自己也并不觉得太冤,主要问题是研究内容太过单薄,没有创新,回过来看文章也确实如此,也就是按照别人的方法克隆了一个植物抗逆中比较重要的基因而以。我想主要原因是思维方法还没有转变过来。在公司做生物信息时,主要是客户提供问题,我们负责找到问题的答案或者相关资料就可以了,就像做工程,采用合适的方法找到合适的材料放在恰当的地方就可以,例如写代码时将别人的代码复制过来再根据需要自己修改一下就变成了自己的代码了,而搞研究的话这种行为就被称人“没有创新”。就拿我的这个文章做个例子吧,采用同源克隆获得基因序列,然后测序验证,最后分析序列结构和功能。实验确实做了很多,但没有一点方法是新的,没有一个发现是新的,就像公司做克隆一样,可以程序化生产。在做试验之间没有先行搞明白这个基因是主要功能是什么,有什么特性,现在已经研究到什么阶段了,还有哪些需要解决的问题,我又能做些什么,预计多长时间,可以做到什么程度,而不是简单的按照吩咐克隆这个基因就可以了。觉得需要把这些弄清楚再开始做试验,再在试验发现新问题,新思想。如果这样做了也不会导致现在文章都写完了,心里还一点底都没有。可是说起来简单,要做到那些是非常难的,以我现在的速度,看一篇文章得花一天,把那些前期工作做完, 一年时间就过去了,在这一年时间里,如果一点产出都没有,你就会受到别人质疑,年终评审也会产生问题,但如果不按照这个程序来做的话,就导致这个结局,做了一年的实验,最后还不知道自己在做什么,做出来有什么用,心里感觉非常的虚,非常踌躇迷茫,但时间又一天天过去,自己却还什么也没有,我到底要怎么办呢!

Perl输出函数传递的二维数组

最近用DBI模块写个了mysql接入函数,但得到的return一直不能输出结果,后来经过思考,原来是二维数组传递的问题,终于解决了,特此为记。

下面这个是mysql接入函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sub mysql_connect(){
        use DBI;
	my ($sql,$db)=@_;
	my $usr="selectonly";
	my $passwd="yuyin_110";
	my $dbh=DBI->connect("DBI:mysql:$db",$usr,$passwd);
 
	if(!$dbh){
		print "connect lost\n";
	}else{
		my $sth=$dbh->prepare($sql)or die "Can’t prepare $sql: $dbh->errstr\n";
		$sth->execute()or die "Can’t execute the query: $sth->errstr";
		my $data=$sth->fetchall_arrayref();
		$sth->finish;
		return $data;
	}
}

现在的问题是输出$data的内容,而$data返回的是一个二维数组的引用地址,可以用以下方法分层输出这个数组:

1
2
3
4
5
6
7
8
9
10
11
	my $sql="select * from test limit 1000";
	my $b=mysql_connect($sql,"test");
	my @r=@$b;    #####因为$b获得的只是一个引用地址,可以用@变成数组,这个数组这储存了一系列一维数组地址
	foreach(@r){
		my @each=@$_;            ######道理与获得二维地址一样
		foreach(@each){
			print  $_."\t";
		}
		print  "\n";
 
	}

perl DBI模块详解

Perl DBI是Perl数据库接口(Perl Database Interface,简称DBI)。通过提供一系列在内部上能够转化成原始调用函数的功能,DBI模块为很多不同的数据库提供了一个统一的接口,包括mysql,Oracle等。
可移植的DBI方法:
connect 建立到一个数据库服务器的连接
disconnect 断开数据库服务器的连接
prepare 准备执行一个SQL语句
继续阅读

吃豆腐新解

原来只知道吃豆腐是“占便宜”的意思,特别是肌肤之亲的“便宜”,今天吃饭刚好吃到了豆腐,忽然想到女人的胸部质感不正像豆腐一样吗,那吃豆腐不能成了吃奶了,这个词真的取得太形象啦,表面意思只是肌肤之亲的占便宜,其实深层含义就是想吃那个的意思,这是不是新发现,如果不是那我真佩服古人的语言智慧啦,如果是新发现,那我太佩服我自己啦(邪恶)。现在听到好多女孩子动不动就说别人吃她豆腐,看来是没有明白这深层含义,被人占便宜了还不知道,看来是我想歪啦!由此还让我想到了一个非常有意思的东西————日本豆腐,很多中国人喜欢吃,看来吃饭的时候也不忘占下日本女人的便宜,不知是哪位天才想到的这个名称!