JBoss做成Redhat系统服务

怎么做才能在启动 Linux 系统的时候 JBoss 也随之启动 ?
总的看法
  使用Linux系统的V脚本。尽管在分类之间有一些不同,通常它类似这样:
*        /etc/rc.d/init.d/ - 包含开始  停止 脚本 (其他分类: /etc/init.d/)
*        /etc/rc.(x)/ - 包含用S或者K前缀的开始和停止脚本链接(启动或者杀死)
对于各种不同层次的系统用户有各种不同的运行级别。
  1. rc1.d – 单用户模式
  2. rc2.d – 启用网络的单用户模式
  3. rc3.d – 多用户模式-用文本模式启动
  4. rc4.d – 未定义
  5. rc5.d – 多用户模式 – 窗口启动
  6. rc6.d – 关闭
现在我们开始工作:
*        创建jboss用户和安装jboss就不再这里多说了,上一篇文章已经讲过
*        创建一个脚本叫  /etc/rc.d/init.d/jboss
*        创建一个链接叫  /etc/rc3.d/S84jboss
*    可选的方式  /etc/rc5.d/S84jboss 和/etc/rc4.d/S84jboss
*        创建一个链接叫  /etc/rc6.d/K15jboss
             在 /etc/rc1.d, /etc/rc2.d, /etc/rc0.d  上创建 K15 链接
 
  需要注意的是确保$JBOSS_HOME 目录能被”jboss”用户读写。如果有问题,可以点击查看 JBoss应用服务器推荐UNIX文件系统许可
 
创建脚本jboss:
  JBoss 4.0.1+版本, bin  目录配备  prebaked init  脚本 , jboss_init_redhat.sh   jboss_init_suse.sh.  你可以复制这些脚本中的一个到  /etc/rc.d/init.d/jboss, 由于我用的是redhat,所以复制jboss_init_redhat.sh,并修改它为可执行。
[root@vm2 ~]# cp  $JBOSS_HOME/bin/jboss_init_redhat.sh /etc/rc.d/init.d/jboss
[root@vm2 ~]# chmod 755 /etc/rc.d/init.d/jboss
  其中,$JBOSS_HOME在你操作的时候不能这样写,它代表的是你的jboss安装的目录,到时你需要替换掉它。
 
  然后使用vi编辑器编辑它,替换的都是红色的地方:
#!/bin/sh 

# $Id: jboss_init_redhat.sh 46554 2006-07-28 10:29:13Z dimitris $ 

# JBoss Control Script 

# To use this script run it as root - it will switch to the specified user 

# Here is a little (and extremely primitive) startup/shutdown script 
# for RedHat systems. It assumes that JBoss lives in /usr/local/jboss, 
# it's run by user 'jboss' and JDK binaries are in /usr/local/jdk/bin. 
# All this can be changed in the script itself.  

# Either modify this script for your requirements or just ensure that 
# the following variables are set correctly before calling the script. 

#换成你本机jboss的安装目录 
JBOSS_HOME=${JBOSS_HOME:-" /home/jboss/jboss-4.0.5.GA"} 

#换成你新建的jboss用户 
JBOSS_USER=${JBOSS_USER:-" jboss"} 

#换成本地java路径 
JAVAPTH=${JAVAPTH:-" /home/jboss/jdk1.5.0_14/bin"} 

#启动的配置参数,有3个值: 'minimal', 'default', 'all',all是集群模式的配置 
JBOSS_CONF=${JBOSS_CONF:-" default"} 

#这里是绑定所有的网卡,如果绑一个,就写你的IP地址。只在jboss4.2.0+的版本对外使用时才使用。 
#JBOSS_HOST=${JBOSS_HOST:-" 0.0.0.0"} 

#默认的关闭脚本,好像不太好用,我就没用 
#JBOSSCP=${JBOSSCP:-"$JBOSS_HOME/bin/shutdown.jar:$JBOSS_HOME/client/jnet.jar"}

#jboss4.2.0+版本对外服务绑定Ip的时候的关闭脚本 
#JBOSSCP=${JBOSSCP:-"$JBOSS_HOME/bin/shutdown.sh -S -s $JBOSS_HOST"}

#jboss关闭脚本 
JBOSSCP=${JBOSSCP:-"$JBOSS_HOME/bin/shutdown.sh -S"} 

#这是jboss4.2.0+版本对外服务时的启动 
#JBOSSSH=${JBOSSSH:-"$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF -b $JBOSS_HOST"}

#jboss启动 
JBOSSSH=${JBOSSSH:-"$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF"} 

if [ "$JBOSS_USER" = "RUNASIS" ]; then 
  SUBIT="" 
else 
  SUBIT="su - $JBOSS_USER -c " 
fi 

if [ -n "$JBOSS_CONSOLE" -a ! -d "$JBOSS_CONSOLE" ]; then 
  # ensure the file exists 
  touch $JBOSS_CONSOLE 
  if [ ! -z "$SUBIT" ]; then 
    chown $JBOSS_USER $JBOSS_CONSOLE 
  fi  
fi 

if [ -n "$JBOSS_CONSOLE" -a ! -f "$JBOSS_CONSOLE" ]; then 
  echo "WARNING: location for saving console log invalid: $JBOSS_CONSOLE" 
#自启动日志
# echo "WARNING: ignoring it and using /dev/null" 
  echo "WARNING: ignoring it and using $JBOSS_HOME/jbossAutoStart.log" 
  
#自启动日志
#JBOSS_CONSOLE="/dev/null" 
  JBOSS_CONSOLE=${JBOSS_CONSOLE:-"$JBOSS_HOME/jbossAutoStart.log"} 
fi 

#自启动日志 
#JBOSS_CONSOLE=${JBOSS_CONSOLE:-"/dev/null"} 
JBOSS_CONSOLE=${JBOSS_CONSOLE:-"$JBOSS_HOME/jbossAutoStart.log"} 

JBOSS_CMD_START="cd $JBOSS_HOME/bin; $JBOSSSH"
#这个是默认的,跟上面的一样,不太好用
#JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"java -classpath $JBOSSCP org.jboss.Shutdown --shutdown -S"}
#我自己用的关闭方式
JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"cd $JBOSS_HOME/bin; $JBOSSCP"} 

if [ -z "`echo $PATH | grep $JAVAPTH`" ]; then 
  export PATH=$PATH:$JAVAPTH 
fi 

if [ ! -d "$JBOSS_HOME" ]; then 
  echo JBOSS_HOME does not exist as a valid directory : $JBOSS_HOME 
  exit 1 
fi 
#这是默认的控制台打印启动脚本命令,很不爽,就关了
#echo JBOSS_CMD_START = $JBOSS_CMD_START 

case "$1" in 
start) 
    echo "JBoss start.........." 
    cd $JBOSS_HOME/bin 
    if [ -z "$SUBIT" ]; then 
        eval $JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 & 
    else 
        $SUBIT "$JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &"  
    fi 
    ;; 
stop) 
    echo "JBoss stop........." 
    if [ -z "$SUBIT" ]; then 
        $JBOSS_CMD_STOP 
    else 
        $SUBIT "$JBOSS_CMD_STOP" 
    fi  
    ;; 
restart) 
    echo "JBoss restart........" 
    $0 stop 
    sleep 60 
    $0 start 
    ;; 
*) 
    echo "usage: $0 (start|stop|restart|help)" 
esac
 
  这些脚本能传送日志到  /dev/null, 但是我们还是想得到输入日志,以便我们来处理运行中的错误。所以我们要 创建一个真实的文件 :
[root@vm2 ~]# mkdir $JBOSS_HOME/jbossAutoStart.log 
[root@vm2 ~]# chown -R jboss.jboss $JBOSS_HOME/jbossAutoStart.log
 
创建链接:
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc3.d/S84jboss 
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc4.d/S84jboss 
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc5.d/S84jboss 

[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc0.d/K15jboss 
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc1.d/K15jboss 
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc2.d/K15jboss 
[root@vm2 ~]# ln -s /etc/rc.d/init.d/jboss /etc/rc6.d/K15jboss
 
  当你在Linux中 将执行 "service jboss start"命令是,就对应 "S"  链接    "service jboss stop"命令是  对于  K  链接。
 
  到此,完成。你可是试试,看是不是能随着linux启动而启动了?中途也可以使用service的命令来关闭和启动?
 
  还有一种方法就是利用Java Service Wrapper,相关操作请查看[url]http://wrapper.tanukisoftware.org/[/url],我对此没有研究哈。呵呵。


本文转自xudayu 51CTO博客,原文链接:http://blog.51cto.com/xudayu/65254,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值