大家都很熟悉nginx,是一个高性能的HTTP和反向代理服务器,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。而Tengine或许听说过的人不多,但它确实大名鼎鼎的淘宝网使用的HTTP服务器。它是在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。

目前Tengine最新的版本是2.0.0 集成nginx1.4.4的所有特性

wget -c http://tengine.taobao.org/download/tengine-2.0.0.tar.gz
tar zxvf tengine-2.0.0.tar.gz
cd tengine-2.0.0
./configure
make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
cp -r objs/nginx /usr/local/nginx/sbin/nginx

然后注释掉 /usr/local/nginx/conf/nginx.conf下的一些代码,如下

#location /status {
#    stub_status on;
#    access_log off;
#}

检查是否正常工作

/usr/local/nginx/sbin/nginx  -t

如提示success则表示成功

然后杀掉nginx进程然后重启服务

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
/etc/init.d/nginx  stop
/etc/init.d/nginx start

最后查看nginx版本号,正常情况应该提示Tengine/2.0.0

/usr/local/nginx/sbin/nginx -v

最新版本是2.1.0   但是这款只支持css合并,不支持js合并。所以我这里就用2.0.0

需要修改两个文件 /etc/hosts 和/etc/sysconfig/network
第一步:修改/etc/hosts

命令# vi /etc/hosts

127.0.0.1 www.ccc5188.com

wq(保存)
第二步:修改 /etc/sysconfig/network

命令如下:# vi /etc/sysconfig/network

networking=yes

hostname=www.ccc5188.com

wq(保存)

前些日子,系统上线了,发现tomcat 下的日志增长得挺快的,写了个脚本清除n天以前的日志

web_def_tomcat_log_path=/Application/tomcat/log
$web_def_tomcat_log_expire_days=7
if [ “$web_def_tomcat_log_expire_days” -gt 0 ]
then
echo “find $web_def_tomcat_log_path -follow -mtime +$web_def_tomcat_log_expire_days -name ‘*.log’ -exec rm -f {} \;”
find $web_def_tomcat_log_path -follow -mtime +$web_def_tomcat_log_expire_days -name ‘*.log’ -exec rm -f {} \;
fi

由于web的mysql下面挂的同步太多了,每天产生1-2G的mysql-bin文件,因此也写了个清除mysql-bin的文件,这个文件会至少保留最新的一个mysql-bin.0*文件

web_def_host=”1.2.3.4″ #mysql的ip
web_def_port=3306 #mysql的端口
web_def_username=”tester” #mysql的用户
web_def_password=”123″ #mysql的密码
web_def_mysql_expire_logs_days=7 #删除7天以前的mysql-bin,但是最后至少保留一个文件
mysql_exe=”mysql -h $web_def_host -P $web_def_port -u $web_def_username –password=$web_def_password -e ”
if [ “$web_def_mysql_expire_logs_days” -gt 0 ]
then
#获取n天以前被修改的mysql-bin文件,
logFileName=`find $web_def_mysql_data_path -follow -atime -$web_def_mysql_expire_logs_days -name ‘mysql-bin.0*’ |sort|head -1`
if [ “$logFileName” != “” ]
then
logFileName=`basename $logFileName`
echo $mysql_exe “\”PURGE MASTER LOGS TO ‘$logFileName’\””
$mysql_exe “PURGE MASTER LOGS TO ‘$logFileName'”;
fi
fi

有时候远程下载tar包的时候,由于包太大,失去连接时,需要重新下载非常郁闷。
这时候使用split分割分解拆分大包文件,然后单个下载下文件就OK。在Linux下使用 tar 命令来将文件打包并压缩是很通常的用法了。可是Linux的文件系统对文件大小有限制,也就是说一个文件最大不能超过2G,如果压缩包的的内容很大,最后 的结果就会超过2G,那么该怎么办呢?又或者压缩包希望通过光盘来进行备份,而每张光盘的容量只有700M,那么该如何存储呢?解决的办法就是将最后的压 缩包按照指定大小进行分割,这就需要用到split命令了。举例说明:
要将目录logs打包压缩并分割成多个1M的文件,可以用下面的命令:
tar cjf – logs/ |split -b 1m – logs.tar.bz2.
完成后会产生下列文件:
logs.tar.bz2.aa, logs.tar.bz2.ab, logs.tar.bz2.ac
要解压的时候只要执行下面的命令就可以了:
cat logs.tar.bz2.a* | tar xj

再举例:
要将文件test.pdf分包压缩成500 bytes的文件:
tar czf – test.pdf | split -b 500 – test.tar.gz
最后要提醒但是那两个”-“不要漏了,那是tar的ouput和split的input的参数。

这里对命令做一些讲解。
压缩和分割命令行中红色部分的为命令对应的I/O文件名参数,其中-表示标准输入或输出。那么结合上面的例子,tar命令表示的意思就是将logs目录压 缩,生成的结果直接输送到标准输出上;而split命令表示从标准输入获得文件内容进行分割,结果文件前缀为logs.tar.bz2.。二者再通过管道 将各自的标准输入输出对接起来。

这里再解释一下split命令的参数含义:
-b SIZE 指定每个文件的大小,其单位可以为b(512字节)、k(1K)、m(1M)
-d 使用数字而不是字母作为后缀名
-a X 指定后缀名的长度,默认为2位

这样上面的命令就可以变化为:
tar cjf – logs/ |split -b 1m -d -a 1- logs.tar.bz2.

注: $ cat file1 file2 file3 > bigfile

 

自己的pic文件目录

tar czvf – pic | split -b 1900m – pic.tar.gz.

昨天,一个程序需要导出500条数据,结果发现到150条是,Nginx报出504 Gateway Timeout错误 有的是502错误

经观察,发现大约30秒时超时,php.ini中执行时间配置已经是300秒:

写个程序测试

echo ‘aaa';
set_time_limit(0);
sleep(40);
echo ‘aa';

依然超时,可以确定set_time_limit这个函数没生效。

再查php-fcgi的配置php-fpm.conf,下边这个设置疑似有问题:

<value name=”request_terminate_timeout”>30s</value>

这个值修改到  0秒的是时候 是不限制。这样对服务器性能有损失。我设置的是900秒解决问题

Linux系统下 lnmp的集成环境

把 /usr/local/php/etc/php-fpm.conf  中的 request_terminate_timeout = 900 就可以了