因项目需要,要把JBoss做成Linux的服务。之前一直是用的Solaris的SMF服务。还没搞过这个。特此记录下。
注:
这里OS是Linux Suse 10, jboss是jboss6.1.0Final, JDk是1.7.0
主要步骤分为块:
1. 部署jdk和jboss
a. 先卸载系统自带jdk(如果有的话)
[root@local ~]#rpm –e java
b. 将jdk和jboss分别解压到某目录,这里用
JBOSS_HOME=/opt/jboss-6.1.0.Final
JAVA_HOME=/usr/java/jdk1.7.0
c. 修改环境变量
两种方法:
01.修改.bashrc文件或者.bash_profile文件,此两文件一般在用户主文件夹下。
02.或者修改.profile文件,推荐此种方式。这样其他程序也可以友好的使用JDK了
修改内容相同,在文件中加入:
JAVA_HOME=/usr/java/jdk1.7.0
JBOSS_HOME=/opt/jboss-6.1.0.Final
export JAVA_HOME
export JBOSS_HOME
PATH=$JAVA_HOME/bin:$JBOSS_HOME:$PATH
export PATH
设置完毕后使其立刻生效:
[root@localjava]#source /etc/profile
验证是否成功:
[root@localjava]#echo $JBOSS_HOME
[root@localjava]#java -version
2. 创建jboss用户(当然,如果你想用root也行,那就跳过这部)
[root@localjava]#mkdir /home/jboss
[root@localjava]#useradd -s /bin/bash -d /home/jboss jboss
[root@localjava]#chown -R jboss:jboss $JBOSS_HOME
[root@localjava]#chown -R jboss:jboss $JAVAP_HOME
[root@localjava]#chown -R jboss:jboss /home/jboss
3. 拷贝脚本及修改(JBoss的bin目录下提供了主流平台的启动脚本,直接拷贝)
[root@localjava]#cp $JBOSS_HOME/bin/jboss_init_suse.sh /etc/init.d/jboss
修改拷贝后的jboss文件。主要是修改
JBOSS_HOME
JAVAPTH
JBOSS_CONSOLE (Jboss控制台输出文件存放地址)
4. 创建服务
ln -s /etc/init.d/jboss /etc/rc.d/rc3.d/S84jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc4.d/S84jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc5.d/S84jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc0.d/K15jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc1.d/K15jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc2.d/K15jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc6.d/K15jboss
注:
/etc/rc.d/init.d/ - 包含开始 和 停止 脚本 (其他分类: /etc/init.d/)
/etc/rc.(x)/ - 包含用S或者K前缀的开始和停止脚本链接(启动或者杀死)
对于各种不同层次的系统用户有各种不同的运行级别。
rc1.d – 单用户模式
rc2.d – 启用网络的单用户模式
rc3.d – 多用户模式-用文本模式启动
rc4.d – 未定义
rc5.d – 多用户模式 – 用X 窗口启动
rc6.d – 关闭
5. 启动服务
service jboss start
可以用chkconfig --list jboss来查看服务状态
为了方便,特地做了个脚本,如下:
install.sh
#!/bin/bash
echo "Jboss Service installing start..."
#define where jboss is - this is the directory containing directories log, bin, conf etc
JBOSS_HOME=/opt/jboss-6.1.0.Final
#make java is on your path
JAVAPTH=/usr/java/jdk1.7.0/bin
#define the console output for jboss
JBOSS_CONSOLE=/opt/jboss-6.1.0.Final/server/default/log/jboss.log
#Add the variables to system
export JBOSS_HOME
export JAVAPTH
export JBOSS_CONSOLE
#create user jboss
echo "Creating user-- jboss..."
mkdir /home/jboss
useradd -s /bin/bash -d /home/jboss jboss
chown -R jboss:jboss $JBOSS_HOME
chown -R jboss:jboss $JAVAPTH
chown -R jboss:jboss /home/jboss/
echo "Copy script to system"
cp $JBOSS_HOME/bin/jboss_init_suse.sh /etc/init.d/jboss
#Replace key variables
CURR_PATH=$PWD
cd /etc/init.d/
sed -i 's:/opt/jboss/log/jboss.log:'$JBOSS_CONSOLE':g' jboss
sed -i '27 s:/opt/jboss:'$JBOSS_HOME':' jboss
sed -i 's:/usr/java/jdk1.6.0/bin:'$JAVAPTH':g' jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc3.d/S84jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc4.d/S84jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc5.d/S84jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc0.d/K15jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc1.d/K15jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc2.d/K15jboss
ln -s /etc/init.d/jboss /etc/rc.d/rc6.d/K15jboss
cd $CURR_PATH
echo "Jboss Service installation is done." uninstall.sh
echo "Jboss Service uninstall begin..."
echo "Deleting user jboss..."
userdel jboss
rm -r /home/jboss
rm /etc/init.d/jboss
echo "Removing jboss service..."
rm /etc/rc.d/rc3.d/S84jboss
rm /etc/rc.d/rc4.d/S84jboss
rm /etc/rc.d/rc5.d/S84jboss
rm /etc/rc.d/rc0.d/K15jboss
rm /etc/rc.d/rc1.d/K15jboss
rm /etc/rc.d/rc2.d/K15jboss
rm /etc/rc.d/rc6.d/K15jboss
echo "Uninstall done."