之前写过一篇在Linux平台上安装和配置Ruby on Rails详解,可能是有点高估了Linux的普及和应用程度,无数安装和配置的问题都以各种方式向我涌过来。这里集中的提供一下疑难解答:
一、到底我应该用Lighttpd,还是Nginx/Mongrel?
现在Nginx/Mongrel的部署方式越来越受欢迎了,很多人置疑Lighttpd/FastCGI,并且现在也涌现了一些比Mongrel性能更好的例如Thin,ebb等ruby应用服务器,那Lighttpd/FastCGI真的过时了吗?
大家有兴趣可以看一下我这篇文章:RoR部署方案深度剖析,Lighttpd 提供了很多其他Web服务器不具备的优势,可以最大化FastCGI的性能。现在Mongrel/Thin/ebb都利用了一些多线程或者事件IO机制来 提供并发性能,这是FastCGI所不具备的,但遗憾的是Rails框架是单线程的,最终还是必须单进程单线程来执行Rails请求,所以这些并发优势无 用武之地。但一些其他Ruby的Web框架例如camping,weavers已经开始支持ruby多线程,提供了比Rails好得多的性 能,mongrel/ebb只有在这些web框架上面才能发挥其性能优势。
有人会问,Rails会不会改成多线程?我认为不可能:一来Rails的多进程被证明是一种古老的、但是高可靠性、高扩展性的部署方式,没有改的必要性;二来真要改成多线程,改动实在太大了,整个底层框架都要改。
所以只要你还是用Rails框架,Lighttpd/FastCGI就是性能最好的部署方案。
二、ubuntu Linux安装ruby碰到的缺少readline,zlib库的问题?
有些人的ubuntu安装的库不全,比方说缺少readline库,缺少zlib库,可能会导致自己手工编译安装ruby的失败,那么就用apt-get先把库安装好。
三、Lighttpd安装遇到的缺少pcre库的问题?
RHEL/CentOS用户可能要用yum安装一下pcre/pcre-devel这两个库,ubuntu用户用apt-get安装一下,Linux熟手也可以自己下载源代码编译安装,Pcre是Perl兼容的正则表达式库,Lighttpd的Rewrite功能需要它。
四、Lighttpd配置过程当中遇到的种种问题?
1、我用的是ubuntu,你说的控制脚本rc.lighttpd我跑不了,执行就会报错
rc.lighttpd这个脚本是针对SuSE Linux写的,此外还提供了一个rc.lighttpd.redhat是针对RedHat Linux写的,没有针对ubuntu的版本,但是你自己写一个控制脚本,也不过是举手之劳:
-
#!/bin/sh
-
-
case "$1" in
-
start)
-
/usr/local/lighttpd/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf > /dev/null 2>&1
-
;;
-
stop)
-
killall lighttpd
-
;;
-
restart)
-
$0 stop
-
sleep 1
-
$0 start
-
;;
-
*)
-
echo "Usage: lighttpd.sh {start|stop|restart}"
-
;;
-
esac
-