单独安装apache的ab压力测试工具

2012年11月23日 1 条评论

Apache服务自带了应该用于压力测试的工具ab(ApacheBench),对应做一些简单的压力测试,它完全能够胜任。本文介绍在Centos中不安装apache的情况下如何获取安装ab。

ab运行需要依赖apr-util包,安装命令为:

yum install apr-util

下载apache的rpm包,可以直接去官网手动下载,当然也可以使用命令yumdownloader来完成,yumdownloader是yum-utils包下面的,如果没有安装yum-utils,则需要先安装它。因为解压apache的rpm包时会在当前目录下生成etc、var和usr三个目录,所以建议先创建一个临时目录,命令如下:

mkdir ~/abtmp
cd ~/abtmp

yumdownloader httpd

rpm2cpio httpd-*.rpm | cpio -idmv

上述命令成功后,可以在~/abtmp下的usr/bin中看到一个名为ab的文件,复制到系统PATH下就大功告成,例如。

cp ~/abtmp/usr/bin/ab /usr/bin

nginx 配置子域名的重定向

2012年9月17日 没有评论

目前很多网站可以为用户分配一个自己定义的二级域名,例如:myname.netingcn.com,但实际访问的地址可能为www.netingcn.com/user.php?uid=myname。要使其能正常工作,首先在DSN解析那里需要配置泛域名解析,接下来在nginx配置文件中设置rewrtie即可。nginx配置如下:

server {
    listen      80;
    server_name *.netingcn.com;
	...
	if ($host ~* ^(......)\.netingcn\.com) {
	    set $sub_name $1;
	    rewrite ^/ /user.php?uid=$sub_name last;
	}
	...

这里假设所有的6个字符的子域名都是用户自定义域名,然后对其进行rewrite。另外可以通过set指令把表达式中的某些信息存放在一个变量中,而后可以使用它。

nginx 匹配操作符

2012年9月17日 没有评论

nginx可以在配置文件中对某些内置变量进行判断,从而实现某些功能。例如:防止rewrite、盗链、对静态资源设置缓存以及浏览器限制等等。由于nginx配置中有if指令,但是没有对应else指令,所以判断要分为匹配和不匹配。字符串表达式支持正则表达式,能设定大小写是否敏感。因此共有四个操作符,如下:

  • ~     区分大小写(大小写敏感)匹配成功,可用正则表达式
  • ~*   不区分大小写匹配成功,可用正则表达式
  • !~    区分大小写匹配失败,可用正则表达式
  • !~*  不区分大小写匹配失败,可用正则表达式
  • =     精确匹配普通字符串,匹配成功后停止匹配其他规则
  • ^~  匹配成功后停止匹配其他规则
分类: nginx 标签:

centos升级python

2012年9月1日 没有评论

centos5.7自带的python版本是2.4,可以通过源代码编译安装的方式来升级到2.7。源代码可以到python的官方网站下载,下载解压后后执行:

./configure
make all
make install
make clean
make distclean

不出意外,应该可以在/usr/local/bin/看到python2.7文件,也就说明2.7安装成功。接下来要做的就是通过软链接的方式让系统默认使用2.7,操作如下:

mv /usr/bin/python /usr/bin/bak_python
ln -s /usr/local/bin/python2.7 /usr/bin/python

现在升级就算完成了,不过由于yum使用的python是2.4这个版本,所有yum不能用了,解决这个问题也很简单,只需要修改/usr/bin/yum文件,把第一行的#!/usr/bin/python换成#!/usr/bin/python2.4即可。

分类: Linux 标签:

secureCRT同时向多个打开的seesion发送命令

2012年9月1日 2 条评论

使用secureCRT的都知道,可以同时打开多个session连接一台或多台服务器,假设需要在两个或以上的服务器上执行相同的操作,例如编译安装相同的软件,最原始的办法就是在每个上执行一遍相同操作。不过可以使用“chat window”的方式来同时向两个服务器发送相同命令。具体操作如为:在view菜单中选中Chat Window,此时在secureCRT最下方会出现一个窗口,在里面点击鼠标邮件,然后选择“Send Chat to All Tabs”,此时在里面输入命令,当前secureCRT打开的所有session都会执行输入的命令。

分类: Linux 标签:

vi中替换操作详解

2012年9月1日 没有评论

vi的强大自不必说了,使用vi编辑文件时可以使用命令快速的实现文本替换。下面介绍它的几种模式

替换当前行第一个OLD为NEW
 :s/OLD/NEW

 替换当前行所以OLD为NEW
 :s/OLD/NEW

 退换当前文件中的所有OLD为NEW
 :%s/OLD/NEW/g

除了上述的几种替换模式,还可以指定两个行号,把他们之间所有的OLD替换称NEW,

语法为,第一个#号表示开始行,第二个#号表示截止行
:#,#s/OLD/NEW/g

替换第三行到第五行所有OLD为NEW
:3,5s/OLD/NEW/g

其中两个行号也可以只出现一个,省略的那个表示为光标所在的行,例如:

:,5s/OLD/NEW/g    把光标所在行到第5行所有OLD替换为NEW

:5,s/OLD/NEW/g    把第5行到光标所在行所有OLD替换为NEW

另外最后一行可以使用$表示,所以
:%s/OLD/NEW/g 等价于  :1,$s/OLD/NEW/g
分类: Linux 标签: ,

ssh 连接慢的问题

2012年8月4日 没有评论

sshd服务中设置了UseDNS yes,当配置的DNS服务器出现无法访问的问题,可能会造成连接该服务器需要等待10到30秒的时间。由于使用UseDNS,sshd服务器会反向解析连接客户端的ip,即使是在局域网中也会。

当平时连接都是很快,突然变的异常的慢,可能是sshd服务的服务器上配置的DNS失效,例如DNS配置的是外网的,而此时外面故障断开。终极解决方案是不要使用UseDNS,在配置文件/etc/sshd_config(有些linux发行版在/etc/ssh/sshd_config)中找到UseDNS 设置其值为 no,如果前面有#号,需要去掉,重启sshd服务器即可。

分类: Linux 标签:

修改linux系统时间

2012年8月3日 没有评论

date命令不仅可以显示系统当前时间,还可以用它来修改系统时间。命令格式为:

date -s 时间字符串

例如只修改系统的日期,不修改时间(时分秒)

date -s 2012-08-02

或只修改时间不修改日期

date -s 10:08:00

当然也可以同时修改日期和时间

date -s "2012-05-18 04:53:00"

注意:由于日期和时间之间有空格,所以必须用引号引起来,否则命令会报错。

上述修改只是修改了linux的系统时间,CMOS中的时间可能还没有改变,所以为了保险,需要使用 clock -w 把当前系统时间写入到CMOS中。

系统时间和CMOS时间的关系。系统时间是由linux操作系统来维护的;CMOS时间是CMOS芯片保存的时间。系统启动时,操作系统将从CMOS读出时间记录为系统时间,同时操作系统也会自动每隔一段时间将系统时间写入CMOS中。如果使用date命令修改系统时间后马上重启电脑,操作系统还没有将系统时间同步到CMOS,这样开机后就还是没有修改前的时间了,所以为了保险起见,最还还是手动使用命令 clock 将系统时间同步到CMOS中。

shell 字符串截取

2012年7月29日 没有评论

shell中截取字符串的方法有很多中,可以分为两大类。第一种获取特定的字符或字符串的左边或者右边的字字符串,java中实现需要先用indexOf来确定特定字符串的位置,然后再用substring来获取结果;第二种类似java中的substring。

第一种又可以分为四种情况,下面一一介绍。

1、使用 # 号操作符。用途是从左边开始删除第一次出现子字符串即其左边字符,保留右边字符。用法为#*substr,例如:

str='http://www.netingcn.com/cut-string.html'

echo ${str#*//}

得到的结果为www.netingcn.com/cut-string.html,即删除从左边开始到第一个"//"及其左边所有字符

2、使用 ## 号操作符。用途是从左边开始删除最后一次出现子字符串即其左边字符,保留右边字符。用法为##*substr,例如:

str='http://www.netingcn.com/cut-string.html'

echo ${str##*/}

得到的结果为cut-string.html,即删除最后出现的"/"及其左边所有字符

3、使用 % 号操作符。用途是从右边开始删除第一次出现子字符串即其右边字符,保留左边字符。用法为%substr*,例如:

str='http://www.netingcn.com/cut-string.html'

echo ${str%/*}

得到的结果为http://www.netingcn.com,即删除从右边开始到第一个"/"及其右边所有字符

4、使用 %% 号操作符。用途是从右边开始删除最后一次出现子字符串即其右边字符,保留左边字符。用法为%%substr*,例如:

str='http://www.netingcn.com/cut-string.html'

echo ${str%%/*}

得到的结果为http://www.netingcn.com,即删除从右边开始到最后一个"/"及其右边所有字符

第二种也分为四种,分别介绍如下:

1、从左边第几个字符开始以及字符的个数,用法为:start:len,例如:

str='http://www.netingcn.com/cut-string.html'

echo ${var:0:5}

其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
结果是:http:

2、从左边第几个字符开始一直到结束,用法为:start,例如:

str='http://www.netingcn.com/cut-string.html'

echo ${var:7}

其中的 7 表示左边第8个字符开始
结果是:www.netingcn.com/cut-string.html

3、从右边第几个字符开始以及字符的个数,用法:0-start:len,例如:

str='http://www.netingcn.com/cut-string.html'
echo ${str:0-15:10}

其中的 0-6 表示右边算起第6个字符开始,10 表示字符的个数。
结果是:cut-string

3、从右边第几个字符开始一直到结束,用法:0-start,例如:

str='http://www.netingcn.com/cut-string.html'
echo ${str:0-4}

其中的 0-6 表示右边算起第6个字符开始,10 表示字符的个数。
结果是:html

注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

nginx日志分割

2012年7月10日 3 条评论

nginx日志本身不能通过配置来进行分割,如果要进行分割,需要通过写一个简单的脚本来实现这个功能。以前我一直都是用cp命令来做的,例如:

#/bin/bash
nginxLog="/usr/local/nginx/logs/access.log"
logBakFile="/usr/local/nginx/logs/"$(date "+%F")/"bak_"$(date "+%H-%M-%S")".log"

if [ ! -d ${logBakFile%/*} ]
then
    mkdir -p ${logBakFile%/*}
fi

cp $nginxLog $logBakFile 2>&1 >/dev/null
cat /dev/null > $nginxLog

原理很简单,就是通过cp命令拷贝一份当前的日志,拷贝完后清空当前日志。当然,如果nginx的并发量很大,可能会造成日志丢失情况。

今天无意中看到另外一种分割日志的方法,主要是通过mv命令来实现,我感觉可能比我以前的实现要好一些,特此记录一下。上述脚本可以修改为:

#/bin/bash
nginxLog="/usr/local/nginx/logs/access.log"
logBakFile="/usr/local/nginx/logs/"$(date "+%F")/"bak_"$(date "+%H-%M-%S")".log"

if [ ! -d ${logBakFile%/*} ]
then
    mkdir -p ${logBakFile%/*}
fi

mv $nginxLog $logBakFile 2>&1 >/dev/null
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

先用mv命令把日志备份,然后使用kill -USR1 让nginx 重新打开日志文件。虽然这样也可能丢失日志,但mv命令执行肯定要cp快,所以相当来说要安全一些。

可以把上述脚本加入到crontab中,这样就可以实现按天、按小时等一些时间规则来进行日志分割

分类: Linux, nginx 标签: ,

无觅相关文章插件,快速提升流量