作者: 车东 chedong@bigfoot.com


版权声明:可以任意转载,转载时请务必标明原始出处和作者信息

内容摘要:

将resin-version/contrib/init.resin.in复制到/etc/rc.d/init.d/resin
修改resin中的一些设置:JAVA_HOME RESIN_HOME USER 等
用/sbin/chkconfig resin on将RESIN服务在启动级别345设置成自启动
在慢速CPU的机器上启动时,需要加入一个15秒的延时帮助JAVA启动
我最习惯的设置服务自动启动的方式是在rc.local里加类似一下的脚本:
#sshd
/usr/local/sbin/sshd

#proftpd
/usr/local/sbin/proftpd

#apache
/home/apache/bin/apachectl start

#mysql
/home/mysql/bin/safe_mysqld --port=3306 &

#start oracle8i listener first
su - oracle -c 'lsnrctl start'

#start oracle8i
su - oracle -c 'dbstart'

但配置RESIN的自动启动的时候确遇到了不少麻烦,主要是JAVA_HOME等环境变量在系统初始化过程中是读不到的。通过一些资料

了解到将RESIN配置成一个可配置的服务需要以下几个步骤:

设置好JAVA_HOME环境变量后将RESIN解包到/home/resin下,执行编译脚本
%tar zxf resin-version.tar.gz
#mv resin-version /home/resin
%cd /home/resin/
%./configure
%make
#make install

将make install生成的$RESIN_HOME/contrib/init.resin复制到/etc/rc.d/init.d/resin并且chmod +x resin
cp contrib/init.resin /etc/rc.d/init.d/resin
chmod +x /etc/rc.d/init.d/resin

修改resin中的一些设置:JAVA_HOME RESIN_HOME USER等,

将resin服务在不同的启动级中设置成自启动:
#/sbin/chkconfig resin reset
从中还学到了不少关于用chkconfig管理服务启动的知识。其实/etc/init.d/resin这个脚本之所以可以用chkconfig来配置主要是有以下的注释:

# chkconfig: 345 85 15
# description: Resin is a Java Web server.

这个注释表示resin服务在运行级别345下自动启动(/etc/rc.d/下 rc3.d rc4.d rc5.d都用相应链接到init.d/resin),启动的优先级是85,停止的优先级是15。这样就能自动在相应的rc#.d/生成 S##resin和K##resin了。原先感觉GNU/Linux下的rc.d/下的文件很乱,不如FREEBSD的简洁。有了CHKCONFIG还是让我对下面的文件管理简化了很多。用/sbin/chkconfig resin on将RESIN服务设置成自启动服务后,在GNU/Linux的setup界面的system services设置中也可以对RESIN服务进行设置了。

如果让RESIN作为80端口的服务需要用ROOT权限,而且随服务器自启动就不能使用httpd.sh了,而需要一个可执行文件来实现,这个可执行在./configure ; make; make install后,这个可执行文件会生成在$RESIN_HOME/bin/下,resin文件实际是一个执行wrapper.pl的转向。

在慢速机器上的RESIN启动:
RESIN是一个JAVA应用,启动过程中需要消耗大量的CPU资源。因此在一些比较慢的机器上或者按照以上的配置有时候会很奇怪的启动不起来,在stderr.log中显示:"can't connect to parent",这个问题可以通过在服务启动后加上一个15秒的延时解决:
在/etc/init.d/resin: 43行左右:
if test -n "$USER"; then
su - $USER -c "$EXE -pid $PID start $ARGS"
else
$EXE -pid $PID start $ARGS
fi
#服务启动后,加上一个15秒的延时解决
sleep 15

这个问题我已经作为一个BUG提交给了CAUCHO.COM

 

参考资料:

RESIN的安装:


用红帽子的chkconfig管理Init脚本