分享
 
 
 

Resin在GNU/Linux上的服务自动启动

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明

http://www.chedong.com/tech/resin.html

内容摘要:

1. 将resin-version/contrib/init.resin.in复制到/etc/rc.d/init.d/resin

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

3. 用/sbin/chkconfig resin on将RESIN服务在启动级别345设置成自启动

4. 在慢速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等环境变量在系统初始化过程中是读不到的。通过一些资料

http://www.caucho.com/support/resin-interest/0112/0151.html

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

1. 设置好JAVA_HOME环境变量后将RESIN解包到/home/resin下,执行编译脚本

%tar zxf resin-version.tar.gz

#mv resin-version /home/resin

%cd /home/resin/

%./configure

%make

#make install

2. 将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

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

4. 将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

问题解决过程和思路:

先检查resin的日志:stderr.log,里面有can't connect to parent,然后在google上查"resin2 can't connect to parent"和"resin can't connect to parent",大约有几篇邮件列表归档吧,在一篇邮件列表归档中有技术支持说正在调整服务等待时间解决类似问题(需要改SOURCE),另外一个人说他的P4服务器启动时需要启动很多消耗CPU的服务,也会导致RESIN启动不了,然后我在自己的机器上尝试了一下,在RESIN启动前就登录到机器上,发现启动时RESIN和PERL脚本其实都运行了,但过了一会儿相应进程就退出了,在启动后系统比较平稳了,再启动RESIN,RESIN服务就是好的,说明说明脚本本身没有问题,按我以前的经验,JAVA应用是一个比较吃CPU资源的类型,为了让RESIN有足够的CPU资源的启动,在启动后我增加了15 秒的延迟,以防止后续服务影响RESIN的启动。问题就解决了,而且在其他机器上试也成功了。

当然,最好还是CAUCHO解决了这个问题大家就都不用学这些小技巧了。因此我将类似中所有的BUG报告中提交了自己的解决方案,要求在 init.resin脚本中增加一个全局变量,允许用户设置启动时的等待时间。并把这个解决思路追加到文档中,让大家能够用自己的行动积极支持开源软件。

利用Resin内置的日志轮循,HTTP压缩,缓存和简单HTTP认证

作为应用服务器,很多功能都不用自己再开发了:建议把这些和应用服务器相关的配置放在resin.conf里,而和应用服务器无关的Web应用的标准配置放在WEB-INF/web.xml中。

<host id='example.chedong.com'>

<access-log id='logs/example_access.log'>

<!--rotate log daily-->

<rollover-period>1D</rollover-period>

</access-log>

<error-log id='logs/example_error.log'>

<rollover-period>1M</rollover-period>

</error-log>

<web-app id='/' app-dir='/www/myapp/'>

<classpath id='WEB-INF/classes' source='WEB-INF/src' compile='true'/>

<!--http compress-->

<filter-mapping url-pattern='/result'

filter-name='com.caucho.http.filter.GzipFilter'/>

<!--admin need authorization-->

<login-config auth-method='basic'>

<authenticator>

<class-name>com.caucho.http.security.XmlAuthenticator</class-name>

<init-param user='myname:password:user'/>

</authenticator>

</login-config>

<security-constraint url-pattern='/admin' role-name='user'/>

</web-app>

</host>

更多主题:

http://www.caucho.com/resin/ref/topics.xtp

参考资料:

RESIN的安装:

http://www.caucho.com/download/install.pdf

用红帽子的chkconfig管理Init脚本

http://www.cioworld.net/linux/069.htm

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有