在Ubuntu 6.1版本上进行Rails部署,由于需要配置实现一个Apache Server对多个Mongrel的均衡负载,而原来安装的Apache2.0.55版本不支持BalancerMember特性(需Apache 2.2+版本),因此决定对系统上的Apahce进行升级。
2.0升级到2.2的详细变动信息可以参照
Apache的文档。
首先尝试用apt-get来升级,
sudo apt-get install apache2
不料Ubuntu下载下来的还是旧的Apache2.0版本,因此决定下载Apache2.2的安装包,手动安装。
1. 下载安装包
wget -c http://apache.mirror.phpchina.com/httpd/httpd-2.2.6.tar.gz
http://apache.mirror.phpchina.com是在中国比较快的Apache镜像,如果要选择其它镜像,可以到
http://httpd.apache.org/download.cgi查看。
2. 解压安装包
tar -xvf httpd-2.2.6.tar.gz
解压后可以看到当前目录下新建了httpd-2.2.6目录。
3. 进入该目录
cd httpd-2.2.6
4. 执行configure命令进行配置
我的配置命令是
./configure --enable-cache --enable-mem-cache --enable-deflate --enable-proxy --enable-proxy-html --enable-proxy-balancer --enable-rewrite --enable-so
配置时可以设定./configure --prefix=PREFIX的PREFIX选项来指定安装目录,默认的安装目录是/usr/local/apache2,后面的enable选项指定了要安装的模块。如果需要更详细的配置信息可以参照
这里。
5. 编译
make
6. 安装,先切换到安装目录(PREFIX指定的目录),执行命令
make install
7. 测试安装结果,先运行
killall httpd
终止所有正在运行的apache httpd进程,之后可以通过执行命令
/usr/local/apache2/bin/apachectl -k start
启动服务,
/usr/local/apache2/bin/apachectl -k stop
停止服务。
8. 这时候机器上仍然装有原来的Apache2.0版本,因此需要将旧版本从启动目录中移除。
rm -d /etc/init.d/apache2
rm -d /etc/init.d/apachectl
9.编写启动脚本,命名为apache2,保存至/etc/init.d,内容如下
#!/bin/bash
#description:http server
#chkconfig: 235 98 98
case "$1" in
start)
echo "Starting Apache daemon..."
/usr/local/apache2/bin/apachectl -k start
;;
stop)
echo "Stopping Apache daemon..."
/usr/local/apache2/bin/apachectl -k stop
;;
restart)
echo "Restarting Apache daemon..."
/usr/local/apache2/bin/apachectl -k restart
;;
status)
statusproc /usr/local/apache2/bin/httpd
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
10. 修改原apache2命令对应的可执行文件,执行
which apache2
找到旧的apache2命令对应的可执行文件路径,如/usr/sbin/apache2,进入/usr/sbin目录,删除原来的可执行文件,同时建立符号链接指向刚才创建的apache2
rm -d apache2
ln -s /etc/init.d/apache2 /usr/sbin/apache2
这时候就可以通过apache2 start|stop|restart|status来分别启动、停止、重启apache服务和查看apache的运行状态了。