设为首页 收藏本站
查看: 1090|回复: 0

[经验分享] linux 服务自动启动以及resin配置

[复制链接]

尚未签到

发表于 2016-2-20 09:24:52 | 显示全部楼层 |阅读模式
DSC0000.gif linux 服务自动启动
2008-06-06 08:40:32
 标签:linux 服务 自动 启动   [推送到技术圈]



setup 、rc.local 和chkconfig里都可以设置,但有何区别呢?
linux 自动启动服务很简单,最简单的是把启动命令放到/etc/rc.d/rc.local文件里这样就可以每次启动的时候自动启动服务了,例如对于 apache,编译好apache后会在安装目录的bin下生成apachectl文件,这是个启动教本,我们只需要把这个命令加到rc.local里就可以了
echo /usr/local/apache/bin/apachectl >> /etc/rc.d/rc.local

此外我们还可以使用chkconfig命令来把某项服务加到系统的各项运行级别中,步骤如下,
1 创建启动教本,对于apache,mysql,ssh这样的软件都是自己带的,我们只要稍微修改一下使之支持chkconfig就可以了
2 修改教本
我们需要在教本的前面加上一下2行,才能支持chkconfig命令
# chkconfig: 2345 08 92
#
# description: Automates a packet filtering firewall with ipchains.
#

chkconfig:后面定义的使启动服务的运行级别(例子中使2345启动改服务),以及关闭和启动服务的顺序,(上例中关闭服务的顺序使8,启动的顺序使92)
descriptions:对改服务的描述(上例中是ipchains包过滤),你可以换成自己想要的

修改好之后执行
cp 你的教本 /etc/rc.d/init.d/教本名
chmod 700 /etc/rc.d/init.d/教本名
chkconfig --add 教本名
之后就可以了,以后每次重新启动服务器都会自动启动和关闭我们的服务了
而且你执行setup之后也可以看到我们添加的服务,选中我们添加的服务按F1键还可以看到我们定制的信息.
<!-- / message --><!-- sig -Joey 修改连续字符撑破表格-->

  • 将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等环境变量在系统初始化过程中是读不到的。通过一些资料
http://www.caucho.com/support/resin-interest/0112/0151.html
了解到将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
问题解决过程和思路:
先检查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脚本中增加一个全局变量,允许用户设置启动时的等待时间。并把这个解决思路追加到文档中,让大家能够用自己的行动积极支持开源软件。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-180287-1-1.html 上篇帖子: linux下的Resin自启动问题 下篇帖子: linux下apache+resin+jkd服务配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表