#!/bin/sh
# setup basic parameters
JBOSS_VER=5.1.0.GA
JBOSS_NAME=jboss
JBOSS_USER=jboss
JBOSS_SERVER=nvt
JAVA_OPTS="-server -XX:MaxPermSize=256m -Xmx512m -Xms128m"
# setup variables
JBOSS_ARC=/usr/src/$JBOSS_NAME-$JBOSS_VER.zip
JBOSS_DIR=$JBOSS_NAME-$JBOSS_VER
JBOSS_HOME=/usr/share/$JBOSS_NAME
JBOSS_VAR=/var/lib/$JBOSS_NAME
JBOSS_LOG=/var/log/$JBOSS_NAME
JBOSS_DOC=/usr/share/doc/$JBOSS_NAME-$JBOSS_VER
JBOSS_PID=/var/run/$JBOSS_NAME.pid
JBOSS_RC=/etc/init.d/$JBOSS_NAME
JBOSS_CONF=/etc/default/$JBOSS_NAME
JBOSS_INST=/var/tmp/$JBOSS_NAME-$JBOSS_VER
# prepare installation environment
rm -rf $JBOSS_HOME > /dev/null
rm -rf $JBOSS_DOC > /dev/null
mkdir -p $JBOSS_VAR > /dev/null
mkdir -p $JBOSS_LOG > /dev/nul
# prepare installation source
unzip $JBOSS_ARC -d /usr/src
mv /usr/src/$JBOSS_NAME-$JBOSS_VER $JBOSS_HOME
# install files
mv -f $JBOSS_HOME/docs $JBOSS_DOC > /dev/null
ln -s $JBOSS_DOC $JBOSS_HOME/docs > /dev/null
mv -f $JBOSS_HOME/server $JBOSS_VAR > /dev/null
ln -s $JBOSS_VAR/server $JBOSS_HOME/server > /dev/null
# create default server
if [ "${JBOSS_SERVER}" != "default" ]; then
[ -d $JBOSS_VAR/server/$JBOSS_SERVER ] || cp -fR $JBOSS_VAR/server/all $JBOSS_VAR/server/$JBOSS_SERVER > /dev/null
rm -rf $JBOSS_VAR/server/$JBOSS_SERVER/deploy/ROOT.war
fi
# add jboss user
useradd $JBOSS_USER > /dev/null
# setup owner & rights
chown -R $JBOSS_USER:$JBOSS_USER $JBOSS_VAR > /dev/null
chown -R $JBOSS_USER:$JBOSS_USER $JBOSS_LOG > /dev/null
chmod -R o-w $JBOSS_HOME > /dev/null
chmod -R ug+rwX $JBOSS_HOME > /dev/null
chmod -R o+rX $JBOSS_HOME > /dev/null
chmod -R o-rwx $JBOSS_VAR > /dev/null
chmod -R ug+rwX $JBOSS_VAR > /dev/null
chmod -R o-rwx $JBOSS_LOG > /dev/null
chmod -R ug+rwX $JBOSS_LOG > /dev/null
chmod ugo+rx $JBOSS_HOME/bin/*.sh > /dev/null
# setup jboss command-line config
if [ ! -f $JBOSS_CONF ]; then
echo "JBOSS_HOME="$JBOSS_HOME >> $JBOSS_CONF
echo "JBOSS_LOG="$JBOSS_LOG >> $JBOSS_CONF
echo "JBOSS_PID="$JBOSS_PID >> $JBOSS_CONF
echo "JAVA_OPTS=\""$JAVA_OPTS"\"" >> $JBOSS_CONF
echo "JBOSS_USER="$JBOSS_USER >> $JBOSS_CONF
echo "JBOSS_SERVER="$JBOSS_SERVER >> $JBOSS_CONF
echo "LAUNCH_JBOSS_IN_BACKGROUND=yes" >> $JBOSS_CONF
echo "JBOSS_BIND_ADDRESS=0.0.0.0" >> $JBOSS_CONF
fi
# setup init script
cat > $JBOSS_RC << "EOF"
#!/bin/sh
DEFAULT_CONFIG=/etc/default/jboss
LAUNCH_JBOSS_IN_BACKGROUND=yes
JBOSS_PID=/var/run/jboss.pid
[ -f $DEFAULT_CONFIG ] && . $DEFAULT_CONFIG
[ -z "$JBOSS_HOME" ] || export JBOSS_HOME
[ -z "$JAVA_OPTS" ] || export JAVA_OPTS
[ -z "$JBOSS_SERVER" ] || export JBOSS_SERVER
[ -z "$JBOSS_LOG" ] || export JBOSS_LOG
[ -z "$JBOSS_BIND_ADDRESS" ] || export JBOSS_BIND_ADDRESS
[ -z "$JBOSS_IN_BACKGROUND" ] || export JBOSS_IN_BACKGROUND
[ -z "$JBOSS_USER" ] || export JBOSS_USER
#make sure java is in your path
JAVAPTH=${JAVAPTH:-"/usr/bin"}
#define what will be done with the console log
JBOSS_CONSOLE=${JBOSS_CONSOLE:-"/dev/null"}
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
mklogsymlinks() {
[ -d $JBOSS_HOME/server/$JBOSS_SERVER/log ] && mv -f $JBOSS_HOME/server/$JBOSS_SERVER/log $JBOSS_HOME/server/$JBOSS_SERVER/log.invalid
[ -h $JBOSS_HOME/server/$JBOSS_SERVER/log ] || ln -s /var/log/jboss $JBOSS_HOME/server/$JBOSS_SERVER/log
}
case "$1" in
start)
mklogsymlinks
chown -R jboss:jboss /var/lib/jboss/server/nvt/deploy/webapps*
chmod g+rwX -R /var/lib/jboss/server/nvt/deploy/webapps*
cd $JBOSS_HOME/bin
su -p -l $JBOSS_USER -c "$JBOSS_HOME/bin/run.sh -c $JBOSS_SERVER -u 239.255.100.100 -Djboss.messaging.ServerPeerID=1 -b $JBOSS_BIND_ADDRESS" &
PID=$!
echo "Jboss PID: $PID"
echo $PID > $JBOSS_PID
rm -rf /var/log/jboss/log
;;
stop)
su -p -l $JBOSS_USER -c "$JBOSS_HOME/bin/shutdown.sh -S -s jnp://$JBOSS_BIND_ADDRESS:1099" &
PID=`cat $JBOSS_PID`
echo "Jboss PID: $PID"
rm -f $JBOSS_PID > /dev/null
rm -rf /var/lib/jboss/server/nvt/work/jboss.web/* > /dev/null
;;
*)
echo "usage: $0 (start|stop)"
esac
EOF
chmod ug+x $JBOSS_RC > /dev/null
update-rc.d $JBOSS_NAME defaults