从昨天弄好VPS开始就一直没停止过折腾。别说我喜欢折腾,能用Apache我干嘛要用nginx,装X不是用在这个地方的。用惯了大内存服务器的人,折腾这可怜的小内存VPS真是一种痛苦,简直和做嵌入式的那些家伙一样的,能节省1K是1K。
首先修改的是Apache,这个用惯了老伙计换掉其实我很不愿意,但太吃内存,访问一大内存直飙,通常个进程就占了整个VPS的5%,以前用的是Lighttp,感觉还行,只所以这次用nginx是因为以前没用过,而且我可以用fastcgi模式解决以前在cgi模式下跑程序占内存的问题。
因为是第一次接触,所以走了不少弯路,不是在安装上,而是在fcgi上,首先就是fcgi的后端选型,现在网上能找到的都是一个Perl的fcgi脚本来运行的,但在我的机器上发现一个重大的问题就是,用这个脚本之后能显示页面,但不能登录MT的后台。索性换成CPAN上的FCGI::Daemon,发现这个模块在Perl5.8.8无论怎么运行.cgi的文件都显示不存在或者不可执行.查看代码后发现他用的语法是在5.10之后才可以的,OK,正好也想试下最新的5.16,于是又在VPS上装好5.16,再次运行代码之后发现又不找不到syscall.ph。又是一番查找
cd /usr/include;
h2ph -r -l .
执行之后,在启动服务,一切终于正常了. MT也可以正常登录了。
然后就是配置mysql,以极小内存模式运行。
总体来说,全部程序运行占用内存由以前的70M降低到现在的40M左右,而且功能没什么变化。终于结束了折腾。
另外附上FCGI::Daemo的启动脚本,也许有人用得上
#!/bin/sh
### BEGIN INIT INFO
# Provides: monoserve.sh
# Required-Start: $local_fs $syslog $remote_fs
# Required-Stop: $local_fs $syslog $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start fastcgi mono server with hosts
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=fcgi
DESC=fcgiserver
MONOSERVER_PID=$(ps auxf | grep FCGI::Daemon | grep -v grep | awk '{print $2}')
case "$1" in
start)
if [ -z "${MONOSERVER_PID}" ]; then
echo "starting fcgi server"
perl /usr/local/lib/perl5/site_perl/5.16.2/FCGI/Daemon.pm -w 1 -q 100 -u nginx -g nginx -d
chmod 777 /var/run/fcgi-daemon.sock
echo "fcgi server started"
else
echo "fcgi server is running"
fi
;;
stop)
if [ -n "${MONOSERVER_PID}" ]; then
kill ${MONOSERVER_PID}
echo "fcgi server stopped"
else
echo "fcgi server is not running"
fi
;;
esac
exit 0
添加执行属性
chmod
+x /etc/init.d/fcgi
剩下的就自己折腾吧。祝好运!