一个游戏在通关前我都说不上喜爱,随后所有的精诚法门敏捷操控总在我知道我能通关为前提下一一展现。例如贪吃蛇,全屏首尾相接是没有悬念的,区别只在后期食物和加分水果距离蛇头的位置,来决定通关后能够获得的差异的分数。这也是我喜欢网页设计的原因,反正最终是可以实(chao)现(xi)这个效果的,只是看要花多少时间走怎(pian)样(men)的路线罢了。
于是我又来折腾了,把TONYHEAD 通利堂从传统的Apache-cgi_module-CGI切换到Nginx-PSGI-CGI上。
先说说为什么要用PSGI来跑MovableType这个Perl应用,用过MT的都知道MT后台的反应是多么的龟速(短板不在硬件上),想达到WordPress后台那种按按按就出结果的节奏是不可能的,但亲测转到PSGI后效果有明显改善。根据测评,PSGI模式的效率是CGI模式的1.9倍,是FastCGI的1.4倍,在另一个测评中,PSGI的效率都在CGI的2倍以上,如图:

图片来源。
总之切换到PSGI后效能的提升是显而易见的,下面开始介绍做法。
系统环境
Starman是一个PSGI网关,在MovableType 5.2开始支持Nginx+PSGI时进入视野,mt-starman-daemon作为守护进程会把 /cgi-bin/mt/ 目录先预读进内存,把该目录下的所有cgi/pl脚本交给Starman处理,Nginx则负责处理前端静态文件和转发Starman。在AWS市场里Nginx+MySQL+Starman是作为MovableType 6的标准配置,可见这一组合和思路是被推崇的。
步骤
OS部分
先安装cpanminus。
curl -L http://cpanmin.us/ | perl - App::cpanminus
安装Plack,XMLRPC和Starman,这一步需时较长,请耐心等待。
cpanm Task::Plack XMLRPC::Transport::HTTP::Plack Starman
下载mt-starman。
wget -P /etc/init.d --no-check-certificate http://raw.github.com/saahov/mt-starman-daemon/master/debian/mt-starman
把mt-starman设置为可执行。
chmod +x /etc/init.d/mt-starman
修改mt-starman中的配置,需要修改 DIR, SCRIPT, USER, GROUP, ERROR_LOG, PIDFILE 这几个地方。
vi /etc/init.d/mt-starman
把mt-starman加入自动启动。
update-rc.d mt-starman defaults
Nginx部分
Nginx安装的具体步骤网上都有,一键安装包LNMP和AMH都是不错的选择。配置Starman需要在 /usr/local/nginx/conf/nginx.conf 里 http 括号内加入:
upstream starman {
server 127.0.0.1:50000;
}