May 2010

debian 下nginx 快速搭建FCGI环境

我的想法是。。。快点,快点,再快点!!

apt-get install spawn-fcgi php5-cgi

用 spawn-fcgi 启动 fcgi ,

spawn-fcgi -a 127.0.0.1 -p 8000 -u nobody -f /usr/bin/php-cgi -C 5 ;

在 nginx 里配置加一句:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:8000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/nginx/html$fastcgi_script_name;
include fastcgi_params;
}

然后把一个 php 放在 /home/nginx/html 里,就可以使用了。

nginx 实现缓和切换新旧首页

最近首页要改版,瞎折腾,还要新首页和旧首页并行服务,只有网友点击了“新版首页”的按钮后,才会显示新版首页,否则,显示旧版首页。
灵感来自 ayou 的一段配置,我的实现原理如下:

网友点击了切换按钮以后,利用 javascript set 一个 cookie ,如 newindex=y ,首页的 / 会作判断cookie ,然后 rewrite 到相应的页面。

具体实现:
1, 网友点击 set cookie,我抄了一段最简单的东西:

<html>
<head>
<title>Welcome </title>
<script type=”text/javascript”>
function Set_Cookie( name, value, expires, path, domain, secure )
{
// set time, it’s in milliseconds
var today = new Date();
today.setTime( today.getTime() );
/*
if the expires variable is set, make the correct
expires time, the current script below will set
it for x number of days, to make it for hours,
delete * 24, for minutes, delete * 60 * 24
*/
if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );
document.cookie = name + “=” +escape( value ) +
( ( expires ) ? “;expires=” + expires_date.toGMTString() : “” ) +
( ( path ) ? “;path=” + path : “” ) +
( ( domain ) ? “;domain=” + domain : “” ) +
( ( secure ) ? “;secure” : “” );
}
</script>
</head>
<body bgcolor=”white” text=”black”>
<center><h1>it is a test</h1></center>
<a href=”#” target=”_blank” onclick=”Set_Cookie( ‘newindex’, ‘y’, 30, ‘/’, ”, ” );window.location.href=’http://www.helosa.org/';”>我要访问新首页</a>
</body>
</html>

2,nginx 配置:

location =/ {

root html ;
index index.html ;
if ( $cookie_newindex = “y” )
{
rewrite ^/*$ /index_new.html break;
}

}

其中 /index.html 是旧首页,/index_new.html 是新首页。
如此一来,网友访问 http://www.helosa.org/ 时, location / 就会根据cookie rewrite 到相应的首页。但是要注意的是,
http://www.helosa.org/index.html
http://www.helosa.org/index_new.html
访问的是正确的页面,因为判断 cookie 只在 / 做。

haproxy 打印 log 的问题

haproxy 可以把 log 打印到 syslog 去,但是,如果单纯地在 haproxy 的配置上写了这句:

log 127.0.0.1   local0

是不够的,即使你在 syslog 的配置里也写上了这句:

local0.*    /var/log/haproxy/local0.log

也还是不够的,haproxy 也不会把log 打印到相应的文件里。

需要修改 /etc/default/syslogd ,把

SYSLOGD=””   修改为   SYSLOGD=”-r”

然后重启一下 syslogd

/etc/init.d/sysklogd restart

我的系统是 debian ,centos 没去测试,syslog 的配置上印象中有点不同的。

原因可以参考这两段东西:

man 8 syslogd :

-r     This  option will enable the facility to receive message from the network using an internet domain socket with the syslog service (see ser-
vices(5)).  The default is to not receive any messages from the network.

———————————–

less configuration.txt:

log <address> <facility> [max level [min level]]

<address> can be one of:

– An IPv4 address optionally followed by a colon and a UDP port. If
no port is specified, 514 is used by default (the standard syslog
port).

– A filesystem path to a UNIX domain socket, keeping in mind
considerations for chroot (be sure the path is accessible inside
the chroot) and uid/gid (be sure the path is appropriately
writeable).

———————————————

haproxy 可以把log 打印去两个地方,一个是 监听着 514 udp 端口的 syslog ,一个是 unix socket 。而 syslog 的 -r 参数,就是让 syslog 监听514 port 的。

又或者让 haproxy 连接去 syslog 的 unix socket 也行,

syslogd -a /etc/haproxy/syslog.sock  让 syslogd 监听在unix socket ,这时,haproxy 可以这样配置

log /etc/haproxy/syslog.sock   local0

此 socket 必须在 haproxy 的 chroot 环境中。

==========================
update:

centos 下,修改 /etc/sysconfig/syslog ,把

SYSLOGD_OPTIONS=”-m 0″

改为

SYSLOGD_OPTIONS=”-m 0 -r”

===========================

update 2011-03-25:

现在装的debian 下,一般使用rsyslog 了。

其实,以前的syslog 之所以要加 -r ,就是为了syslog 能监听514 端口,而在 rsyslog 中,-r 参数并不能令到它监听514 。

应该作以下修改:

/etc/rsyslog.conf 中

# provides UDP syslog reception
# $ModLoad imudp
# $UDPServerRun 514

把注视去掉

# provides UDP syslog reception

$ModLoad imudp

$UDPServerRun 514

ip man !!

ip man 是什么??哈哈,竟然是叶问的粤语拼音。。。

昨晚竟然不小心看到了一个在线视频网站,竟然有《叶问2》的国语DVD (非枪版),本来还想去电影院捧一下场,呃。。。打消!马上看!!呵呵

剧情嘛。。。仍然是上一集的套路,前面简单地打几场,最后来个最终 BOSS 决战。同样有个叶问的朋友被最终BOSS 干掉,同样有个类似奸角的同学在最后关头突然良心发现,帮助主角们。这次的 BOSS 稍强,叶问这回不能轻易打赢了,貌似还差点输了呢。对比上一集的绝对无敌。。。BOSS 升级了,哈哈。

说说角色吧。。。

见到了释小龙,岁月真可怕,以前可爱的小屁孩,已经变成今天这个样子了,唉。。。

黄晓明,他饰演一个叫黄梁的角色,算是重点刻画了一下,但在影片的后半段,消失了一样。。。应该算是个人物来的,没去查

洪金宝,仍然是那个史上最灵活的胖子,但也不得不感叹岁月了。

小“李小龙”,哈哈,这个小屁孩可爱。

最后那场BOSS 战,在前面做足了煽情的功夫后,没错,我也被煽情了,也为叶问的险胜抓了一把汗,也为叶问最后的胜利而激动。可以说,这片成功了,至少于我而言。

最后我想说,这个拳赛是真的吗??个人感觉,中国武术当时如果真和西洋拳击对阵,应该会完败。

试玩 apache traffic server

几个月前,yahoo 把它的 yahoo traffic server 捐给了 apache ,从此改名为 apache traffic server 。我一直都低调关注它,昨天,之前也是可以通过 check out 开发版下来试用的,不过当时没用心,试着安装一次,失败了就不玩了。它有很多点很吸引人的,如多进程处理(squid 一直是单进程。。。),http1.1 的支持,分布式缓存,看未来是否可以替代 squid 吧!

赶紧下载源码回来玩玩,http://www.apache.org/dyn/closer.cgi/trafficserver/

解压安装,

tar zxf trafficserver-2.0.0.tar.bz2 ;

cd trafficserver-2.0.0 ;

./configure –prefix=/home/ts  ;  make -j8 && make install

配置在 /home/ts/etc/trafficserver/ 下,很多很全面,咋一眼看过去,有关于 snmpd , log , ip_access , admin_access ,很好很强大,哈哈。

records.config 是 TS 的主配置文件,里面还有很多 dns ,监控,正向代理,cache 等内容,我还没细看。

我先配置个简单的反向代理看看,扫了一下文档,具体配置如下:

修改 remap.config 文件,里面全是注释,添加一行:

map          http://www.163.com/      http://www.163.com/

前面那个 www.163.com 是指用户访问的 url ,而后面那个,就是作为代理的 TS 帮你访问的 url ,呃。。。我文化差了,竟然解释成这个样子。。。

如果你想访问www.163.com 时,显示的是 ent.163.com 的内容,那么编辑成这个样子就行了

map          http://www.163.com/      http://ent.163.com/

然后启动 TS 服务即可。

文档提到,traffic_line -x 是读取配置文件,平滑重启,我试了下,好像不行。。。

records.config 有一行

CONFIG proxy.config.proxy_name STRING (none)

把 (none) 改为你喜欢的东西,如 iloveu ,然后看 header

HTTP/1.1 200 OK
Server: ATS/2.0.0
Date: Thu, 06 May 2010 17:33:39 GMT
Content-Type: text/html; charset=GBK
Content-Length: 267509
Last-Modified: Thu, 06 May 2010 17:31:01 GMT
Very: Accept-Encoding
Expires: Thu, 06 May 2010 17:33:05 GMT
Cache-Control: max-age=80
Accept-Ranges: bytes
Via: zw51195, HTTP/1.0 iloveu (ApacheTrafficServer/2.0.0 [cMsSf ])
Powered-By-ChinaCache: MISS from CHN-BJ-6-333
Age: 0
Connection: keep-alive
留意这一行:Via: zw51195, HTTP/1.0 iloveu (ApacheTrafficServer/2.0.0 [cMsSf ])
哈哈

ubuntu 10.04 初体验

想当年,我用的第一个linux 桌面是 fedora 4 ,当时就觉得这个系统实在太爽了,桌面还可以旋转,还有几个很有趣的桌面效果,哈哈,当时的想法就是傻。以致于当时以土黄色为主色调的 ubuntu 6.04 完全不进入我的考虑范围内。但,现在。。。我已经转投 ubuntu 的怀抱了。。。呃。。。唉。。。

其实两者并没有太大的区别,主要就是包管理系统的不同而已,redhat 系和 debian 系,apt-get 的资源明显多于 yum 的资源,这是我背叛 fedora 的主因,其实 ubuntu 的桌面色调我仍然十分讨厌的。

4 月30号就出了,当天就修改源, apt-get dist-upgrade 了。但很不幸,失败了,很多套件使用起来都不正常。。。唉,看来这个跨版本的升级不太靠谱,我以前也失败过,即使成功,有很多东西都是不太稳定的。只好下一个完整的install cd ,刻盘重装吧,什么硬盘重装就不折腾了。

好了,说说 10.04 主要的改进吧,呃,不能说改进,只能说是改变。

1,主色调由土黄色变成了紫色。

本来的色调给人农气的感觉,现在的色调给人艳的感觉,是一种很不喜欢的艳。这个,有点无语,不知道他们怎么想的。。。

2,窗口按钮布局变成了 MAC 系统的布局

也就是,关闭,最大化,最小化,本来是在窗口的顶部右边的,现在位于顶部左边了。UI 设计者是 MAC 爱好者??幸好我本身对 MAC 也有爱。。。

3,默认im 和 9.10 一样,是 empathy

呃。。。这个不能说不喜欢,它的对话框十分有趣,好像是抄 iphone 的那种。但是,我个人还是比较习惯 pidgin 。。。

4,broadcast 客户端

我一看,傻眼了,都是一些我们国家禁止的互联网应用阿,twitter , facebook 等,哈哈。而且我也没发现它可以设置代理。。。难道要我挂着 vpn 来上么?

5,默认黑色 theme

这个好像 9.10 也是的了,难道。。。觉得黑色的 theme 有型一点?

6,gnome-terminal 透明

这点不错,让我知道知道后面的程序的情况,例如windows 有人联系我,im 工具在闪,呵呵

7,开机关机速度

开机速度据说是经过优化的了,个人感觉不大。新装的系统嘛,通常是比较快的。。。关机速度倒是不错,比我原来的关机快多了。。。当然,也有可能是我原来的系统载入了太多垃圾。。。

才试用了几天,就先说这些把。总的来说,10.04 还是不错的,哈哈。桌面来说,还是选择 ubuntu 吧!