作者存档

nginx配置rewrite时报directive “rewrite” is not terminated by “;”

2011年12月23日 没有评论

nginx中可以使用rewrite配置url的重定向,rewrite指令可以位于server段,也可以位于location中,配置rewrite后通过/usr/local/nginx/sbin/nginx -t检查配置时,出现如下错误:

nginx: [emerg] directive "rewrite" is not terminated by ";" in /usr/local/nginx/conf/nginx.conf:139
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

解决的办法是把规则段使用引号引起来。例如:

rewrite ^/u_(.{7})\.js$ /action/js.php?i=$1 break;
修改为
rewrite "^/u_(.{7})\.js$" /action/js.php?i=$1 break;
本条可以不用引号
rewrite ^/u_(\d+)\.js$ /action/js.php?i=$1 break;

为什么有些必须要引号,有些又可以省略呢,仔细看第一条规则,里面出现了符号 “{、}”,应该是它造成的,因为配置文件中都是用它来作为配置的段起止标记,所以为了安全起见,最好还是都带上引号。

php中安装memcached扩展

2011年12月21日 没有评论

想要在php中使用memcached,就必须按照支持memcached的扩展,目前有两种,一个是memcache,另一个是memcached。memcache是原生实现的,支持OO和非OO两套接口并存,而memcached是使用libmemcached,只支持OO接口。更多关于他们的区别,请参考:http://hi.baidu.com/dong_love_yan/blog/item/afbe1e12d22e7512203f2e21.html。本文以安装memcached扩展为例。

libmemcached下载地址:https://launchpad.net/libmemcached/+download

memcached下载地址:http://pecl.php.net/package/memcached

使用wget下载

wget http://launchpad.net/libmemcached/1.0/1.0.2/+download/libmemcached-1.0.2.tar.gz

wget http://pecl.php.net/get/memcached-1.0.2.tgz

得到两个文件libmemcached-1.0.2.tar.gz和memcached-1.0.2.tgz

安装libmemcached-1.0.2.tar.gz,解压后进入解压的文件夹,执行

./configure --prefix=/usr/local/libmemcached --with-memcached

make

make install 

安装memcached-1.0.2.tgz,解压后进入解压的文件夹,执行


/usr/local/php/bin/phpize 	

./configure --with-php-config=/usr/local/php/bin/php-config  --with-libmemcached-dir=/usr/local/libmemcached/

make

make install 

其中 phpize位于php安装路径的bin目录下

修改php.inp,增加如下信息:

extension=memcached.so
分类: Linux 标签: ,

centos下memecached安装笔记

2011年12月21日 没有评论

centos下memecached安装笔记

项目地址:http://memcached.org/,选一个比较新的版本,本文选用的memcached-1.4.10.tar.gz,使用wget下载到本地

wget http://www.memcached.org/files/memcached-1.4.24.tar.gz

memecached依赖libevent库,可以用rpm -qa | grep libevent检查本机是否装有该库,如果没有按照,用yum安装,

yum -y install libevent libevent-devel

解压下载的源代码,进入解压后的文件夹,执行

./configure --prefix=/usr/local/memcached
make
make install

如果不出意外,memcached服务就安装成功了,安装的路径为/usr/local/memcached,启动服务如下:

/usr/local/memcached/bin/memcached -d -m 128 -l 127.0.0.1 -u root

其中
-d 以守护程序(daemon)方式运行 memcached;
-m 设置 memcached 可以使用的内存大小,单位为 M;
-l 设置监听的 IP 地址,如果是本机的话,通常可以不设置此参数;
-p 设置监听的端口,默认为 11211,所以也可以不设置此参数;
-u 指定用户,如果当前为 root 的话,需要使用此参数指定用户。
更多参数可以使用 /usr/local/memcached/bin/memcached -h 获取。

停止服务可以使用kill -9 memcached进程号

有一个perl脚本的工具,可以查看memcached的运行情况,下载地址:memcached-tool
运行方式:

perl memcached-tool 127.0.0.1:11211 stats
分类: Linux 标签:

linux清空文件文本内容

2011年12月20日 2 条评论

以前一直用echo的方式来清空一个文件的内容,例如 echo “” > file_name,这样虽说能清掉文件的内容,但是文件会有一个空行,其实cat能更好的胜任此项任务,cat 一个空文件然后重定向文件即可。那里去找这个空文件呢,系统的/dev/null就是一个很好选择,所以如下命令

cat /dev/null > file_name

就可以彻底清空文件的内容了。

分类: Linux 标签:

>/dev/null 2>&1含义

2011年12月20日 没有评论

执行linux命令或脚本时,如果不想打印出错误信息,可以使用

command 2>/dev/null

注意:2>/dev/null中间不要有空格

同样,如果不想看到标准的输出,则可以这样

command 1>/dev/null

要是不想看到任何输出,则:

command >/dev/null 2>&1

linux有3个默认的I/O

  1. 0 是标准输入,一般是键盘
  2. 1 是标准输出,一般是屏幕了
  3. 2 是标准错误,有时候屏幕上可以看到,但是重定向的文件中看不到的就是它了

现在知道上述的1、2的含义了,所以第一条命令就是把命令的错误信息重定向到一个空设备中,即丢弃此信息,第二条就是把标准输出重定向到空设备中,最后一条是把标准输出(默认)重定向到空设备,同时把错误信息定向到标准输出中,当然可以这么写

command 1>/dev/null 2>&1
分类: Linux 标签: ,

MySql表结构修改常用语句

2011年12月20日 没有评论
  • 增加列

增加的列位于最后

alter table table_name add col_name varchar(20);

alter table table_name add col_name varchar(20) default 'test' not null;

alter table table_name add column col_name varchar(20) default 'test' not null;

增加的列在指定的列之后

alter table table_name add col_name varchar(20) after exists_col_name;

增加的列位于第一列

alter table table_name add col_name varchar(20) first;
  • 修改列

修改列的类型

alter table table_name modify col_name varchar(40);	//假设原来的类型是varchar(20)

alter table table_name modify col_name int(11);		//从varchar修改为int

alter table table_name change col_name col_name varchar(20);	//从int修改为varchar

修改列名

alter table table_name change old_col_name new_col_name varchar(20);
  • 删除列
alter table table_name drop col_name;

alter table table_name drop column col_name;
分类: MySQL 标签: ,

freemarker的list指令中隐藏的变量

2011年12月17日 没有评论

freemarker的list指令遍历一个list集合中的每一个元素,例如:

<#list userLists as user>
	${user.name}
	...
</#list>

其实list指令还隐含了两个变量,

1、item_index 该变量将返回元素在集合里的索引值,从0开始计数;

2、item_has_next 该变量是boolean型,false表明该元素是Sequences里的最后一个元素。

上述例子中如果需要把序号打印出来,使用${user_index}即可,同时如果想判断是否是最后一个元素,使用 user_has_next就行了。

给grep定义别名

2011年12月16日 没有评论

grep算是一个用的比较多的命令吧,很多时候grep都是配合其他命令一起使用,例如查看系统进程是否有某个进程,就可以用

ps aux | grep xxx

如果系统存在该进程,就会被显示出来,不过不管有没有xxx,都会打印出含有”grep xxx”一行,有时候不细心,以为存在xxx进程,要是不想看到这个行,可以这样

ps aux | grep xxx | grep -v grep

每次执行都这样可能会觉得有点麻烦,那也可以使用alias的方式,来个一劳永逸,把下面命令

alias grep=”grep -v grep | grep”

加到/etc/bashrc或用户更目录下的.bashrc文件中即可。

分类: Linux 标签: ,

在jdbc配置logSlowQueries信息

2011年12月15日 没有评论

MySql服务器端本身可以通过配置以日志的方式记录下来那些耗时的sql语句,对给系统调优提供一些参考信息,同样java的jdbc Driver也支持这样的功能,只需要在jdbc中增加logSlowQueries和配置即可slowQueryThresholdMillis,其中logSlowQueries参数设置是否打印出慢sql,slowQueryThresholdMillis定义一个时间,单位是毫秒,超过这个时间的就是慢sql,也就会打印出来。例如jdbc配置如下:

jdbc:mysql://localhost:3306/database_name?autoReconnect=true&useUnicode=true&characterEncoding=utf8
&logSlowQueries=true&slowQueryThresholdMillis=0

MySql多表关联Update笔记

2011年12月15日 没有评论

对单表执行更新没有什么好说的,无非就是update table_name set col1 = xx,col2 = yy where col = zz,主要就是where条件的设置。有时候更新某个表可能会涉及到多张数据表,例如:

update table_1 set score = score + 5 where uid in (select uid from table_2 where sid = 10);

其实update也可以用到left join、inner join来进行关联,可能执行效率更高,把上面的sql替换成join的方式如下:

update table_1 t1 inner join table_2 t2 on t1.uid = t2.uid set score = score + 5 where t2.sid = 10;

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