Script WildFly untuk Instalasi WildFly Secara Otomatis di CentOS 7

Jika pada tutorial sebelumnya (DI SINI dan DI SINI) saya pernah menulis cara melakukan instalasi JBoss atau WildFly secara manual sebelum melakukan instalasi EJBCA, kali ini saya ingin membagikan cara yang lebih mudah untuk melakukannya, yaitu dengan menggunakan script wildfly. Jadi sekali menekan tombol eksekusi, maka jboss atau wildfly sudah langsung terpasang dan running dengan baik

Script wildfly ini sendiri secara tidak sengaja saya temukan di github seseorang yang saya lupa namanya. jadi kalau kamu merasa ini adalah script wildfly yang kalian buat, langsung komen di kolom komentar ya biar saya tuliskan credit-nya di postingan ini.

Tanpa berlama-lama lagi, berikut ini adalah script-nya:

vi script_wildfly.sh
#!/bin/bash
#title           :wildfly-install.sh
#description     :The script to install Wildfly 10.x
#usage           :/bin/bash wildfly-install.sh
#tested-version1 :10.0.0.Final
#tested-distros1 :Ubuntu 15.10; Debian 7,8; CentOS 7; Fedora 22 
#tested-version2 :10.1.0.Final
#tested-distros2 :Debian 8, Centos 6
 
WILDFLY_VERSION=10.1.0.Final
WILDFLY_FILENAME=wildfly-$WILDFLY_VERSION
WILDFLY_ARCHIVE_NAME=$WILDFLY_FILENAME.tar.gz
WILDFLY_DOWNLOAD_ADDRESS=http://download.jboss.org/wildfly/$WILDFLY_VERSION/$WILDFLY_ARCHIVE_NAME
 
INSTALL_DIR=/opt
WILDFLY_FULL_DIR=$INSTALL_DIR/$WILDFLY_FILENAME
WILDFLY_DIR=$INSTALL_DIR/wildfly
 
WILDFLY_USER="wildfly"
WILDFLY_SERVICE="wildfly"
WILDFLY_MODE="standalone"
WILDFLY_ADMIN_USER="admin"
WILDFLY_ADMIN_PASS="nimda"
 
WILDFLY_STARTUP_TIMEOUT=240
WILDFLY_SHUTDOWN_TIMEOUT=30
 
#SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 
#if [[ $EUID -ne 0 ]]; then
#   echo "This script must be run as root."
#   exit 1
#fi
 
echo "Downloading: $WILDFLY_DOWNLOAD_ADDRESS..."
[ -e "$WILDFLY_ARCHIVE_NAME" ] && echo 'Wildfly archive already exists.'
if [ ! -e "$WILDFLY_ARCHIVE_NAME" ]; then
  wget -q $WILDFLY_DOWNLOAD_ADDRESS
  if [ $? -ne 0 ]; then
    echo "Not possible to download Wildfly."
    exit 1
  fi
fi
 
echo "Cleaning up..."
rm -f "$WILDFLY_DIR"
rm -rf "$WILDFLY_FULL_DIR"
rm -rf "/var/run/$WILDFLY_SERVICE/"
rm -f "/etc/init.d/$WILDFLY_SERVICE"
 
echo "Installation..."
mkdir $WILDFLY_FULL_DIR
tar -xzf $WILDFLY_ARCHIVE_NAME -C $INSTALL_DIR
ln -s $WILDFLY_FULL_DIR/ $WILDFLY_DIR
useradd -s /sbin/nologin $WILDFLY_USER
chown -R $WILDFLY_USER:$WILDFLY_USER $WILDFLY_DIR
chown -R $WILDFLY_USER:$WILDFLY_USER $WILDFLY_DIR/
 
#mkdir -p /var/log/$WILDFLY_SERVICE
 
${WILDFLY_DIR}/bin/add-user.sh -u "${WILDFLY_ADMIN_USER}" -p "${WILDFLY_ADMIN_PASS}"
 
OPTS1='JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0 -Djboss.bind.address=0.0.0.0 -Djboss.http.port=8080"'
grep "${OPTS1}" ${WILDFLY_DIR}/bin/standalone.conf || echo "${OPTS1}" >> ${WILDFLY_DIR}/bin/standalone.conf
 
echo "Registrating Wildfly as service..."
# if should use systemd
if [ -x /bin/systemctl ]; then
    # Script from $WILDFLY_DIR/docs/contrib/scripts/systemd/launch.sh didn't work for me
    cat > $WILDFLY_DIR/bin/launch.sh << "EOF"
#!/bin/sh
if [ "x$WILDFLY_HOME" = "x" ]; then
    WILDFLY_HOME="/opt/wildfly"
fi
if [ "x$1" = "xdomain" ]; then
    echo 'Starting Wildfly in domain mode.'
    $WILDFLY_HOME/bin/domain.sh -c $2 -b $3
    #>> /var/log/$WILDFLY_SERVICE/server-`date +%Y-%m-%d`.log
else
    echo 'Starting Wildfly in standalone mode.'
    $WILDFLY_HOME/bin/standalone.sh -c $2 -b $3
    #>> /var/log/$WILDFLY_SERVICE/server-`date +%Y-%m-%d`.log
fi
EOF
    # $WILDFLY_HOME is not visible here
    sed -i -e 's,WILDFLY_HOME=.*,WILDFLY_HOME='$WILDFLY_DIR',g' $WILDFLY_DIR/bin/launch.sh
    #sed -i -e 's,$WILDFLY_SERVICE,'$WILDFLY_SERVICE',g' $WILDFLY_DIR/bin/launch.sh
    chmod +x $WILDFLY_DIR/bin/launch.sh
 
    cp $WILDFLY_DIR/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/$WILDFLY_SERVICE.service
    WILDFLY_SERVICE_CONF=/etc/default/$WILDFLY_SERVICE
    # To install multiple instances of Wildfly replace all hardcoding in systemd file
    sed -i -e 's,EnvironmentFile=.*,EnvironmentFile='$WILDFLY_SERVICE_CONF',g' /etc/systemd/system/$WILDFLY_SERVICE.service
    sed -i -e 's,User=.*,User='$WILDFLY_USER',g' /etc/systemd/system/$WILDFLY_SERVICE.service
    sed -i -e 's,PIDFile=.*,PIDFile=/var/run/wildfly/'$WILDFLY_SERVICE'.pid,g' /etc/systemd/system/$WILDFLY_SERVICE.service
    sed -i -e 's,ExecStart=.*,ExecStart='$WILDFLY_DIR'/bin/launch.sh $WILDFLY_MODE $WILDFLY_CONFIG $WILDFLY_BIND,g' /etc/systemd/system/$WILDFLY_SERVICE.service
    systemctl daemon-reload
    #systemctl enable $WILDFLY_SERVICE.service
fi
 
# if non-systemd Debian-like distribution
if [ ! -x /bin/systemctl -a -r /lib/lsb/init-functions ]; then
    cp $WILDFLY_DIR/docs/contrib/scripts/init.d/wildfly-init-debian.sh /etc/init.d/$WILDFLY_SERVICE
    sed -i -e 's,NAME=wildfly,NAME='$WILDFLY_SERVICE',g' /etc/init.d/$WILDFLY_SERVICE
    WILDFLY_SERVICE_CONF=/etc/default/$WILDFLY_SERVICE
fi
 
# if non-systemd RHEL-like distribution
if [ ! -x /bin/systemctl -a -r /etc/init.d/functions ]; then
    cp $WILDFLY_DIR/docs/contrib/scripts/init.d/wildfly-init-redhat.sh /etc/init.d/$WILDFLY_SERVICE
    WILDFLY_SERVICE_CONF=/etc/default/wildfly.conf
    chmod 755 /etc/init.d/$WILDFLY_SERVICE
fi
 
# if neither Debian nor RHEL like distribution
if [ ! -x /bin/systemctl -a ! -r /lib/lsb/init-functions -a ! -r /etc/init.d/functions ]; then
cat > /etc/init.d/$WILDFLY_SERVICE << "EOF"
#!/bin/sh
### BEGIN INIT INFO
# Provides:          ${WILDFLY_SERVICE}
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/Stop ${WILDFLY_FILENAME}
### END INIT INFO
WILDFLY_USER=${WILDFLY_USER}
WILDFLY_DIR=${WILDFLY_DIR}
case "$1" in
start)
echo "Starting ${WILDFLY_FILENAME}..."
start-stop-daemon --start --background --chuid $WILDFLY_USER --exec $WILDFLY_DIR/bin/standalone.sh
exit $?
;;
stop)
echo "Stopping ${WILDFLY_FILENAME}..."
start-stop-daemon --start --quiet --background --chuid $WILDFLY_USER --exec $WILDFLY_DIR/bin/jboss-cli.sh -- --connect command=:shutdown
exit $?
;;
log)
echo "Showing server.log..."
tail -500f $WILDFLY_DIR/standalone/log/server.log
;;
*)
echo "Usage: /etc/init.d/wildfly {start|stop}"
exit 1
;;
esac
exit 0
EOF
sed -i -e 's,${WILDFLY_USER},'$WILDFLY_USER',g; s,${WILDFLY_FILENAME},'$WILDFLY_FILENAME',g; s,${WILDFLY_SERVICE},'$WILDFLY_SERVICE',g; s,${WILDFLY_DIR},'$WILDFLY_DIR',g' /etc/init.d/$WILDFLY_SERVICE
chmod 755 /etc/init.d/$WILDFLY_SERVICE
fi
 
if [ ! -z "$WILDFLY_SERVICE_CONF" ]; then
    echo "Configuring service..."
    echo JBOSS_HOME=\"$WILDFLY_DIR\" > $WILDFLY_SERVICE_CONF
    echo JBOSS_USER=$WILDFLY_USER >> $WILDFLY_SERVICE_CONF
    echo WILDFLY_HOME=\"$WILDFLY_DIR\" >> $WILDFLY_SERVICE_CONF
    echo WILDFLY_USER=\"$WILDFLY_USER\" >> $WILDFLY_SERVICE_CONF
    echo STARTUP_WAIT=$WILDFLY_STARTUP_TIMEOUT >> $WILDFLY_SERVICE_CONF
    echo SHUTDOWN_WAIT=$WILDFLY_SHUTDOWN_TIMEOUT >> $WILDFLY_SERVICE_CONF   
    echo WILDFLY_CONFIG=$WILDFLY_MODE.xml >> $WILDFLY_SERVICE_CONF
    echo WILDFLY_MODE=$WILDFLY_MODE >> $WILDFLY_SERVICE_CONF
    echo WILDFLY_BIND=0.0.0.0 >> $WILDFLY_SERVICE_CONF
fi
 
echo "Done."

Catatan untuk script wildfly di atas:

  1. Silakan menyesuaikan versi WildFly dengan yang kalian butuhkan. Ubah pada bagian WILDFLY_VERSION
  2. Saat mengeksekusi script widlfly di atas, kalian juga akan langsung melakukan instalasi admin GUI-nya. Silakan tentukan username dan password untuk admin GUI tersebut pada bagian WILDFLY_ADMIN_USER dan WILDFLY_ADMIN_PASS
  3. Port yang akan digunakan oleh wildfly atau jboss setelah berjalan (pada script ini) adalah 8080 dan 9990 untuk web console

    port yang digunakan oleh service wildfly
  4. Untuk mengeksekusi script wildfly di atas, jalankan perintah sh script_wildfly.sh dan pastikan hasil akhirnya DONE

    Contoh hasil eksekusi yang gagal
  5. Sebelum mengeksekusi script tersebut, pastikan JAVA  sudah terpasang di server kalian. Untuk melakukan instalasi JAVA di CentOS, silakan jalankan perintah berikut:
    yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

    Instalasi openJDK 8
  6. Pastikan yang kalian gunakan adalah JAVA 8 ya. Bila terdapat 2 atau lebih versi JAVA, silakan memilihnya dengan cara mengetikkan perintah:
    alternatives --config java

    Memilih JAVA 8
  7. Untuk melihat versi JAVA yang kalian gunakan, ketikkan perintah:
    java -version

    versi JAVA
  8. Setelah JAVA 8 terinstal, kita akan sedikit me-replace beberapa file yang ada di /usr/lib/jvm/java-1.8.0-openjdk/jre/lib/security. 2 file yang harus di replace adalah local_policy.jar dan US_export_policy.jar. Silakan mengunduhnya DI SINI dan lakukan hal berikut:
    cd /home/user/Downloads
    unzip jce_policy-8.zip
    cp jce_policy-8/UnlimitedJCEPolicyJDK8/local_policy.jar /usr/lib/jvm/java-1.8.0-openjdk/jre/lib/security
    cp jce_policy-8/UnlimitedJCEPolicyJDK8/US_export_policy.jar /usr/lib/jvm/java-1.8.0-openjdk/jre/lib/security

  9. Untuk melihat status dari wildfly, apakah berjalan atau tidak, pasca eksekusi script wildfly, ketikkan perintah berikut:
    service wildfly status

    Melihat status wildfly

Ya, itu tadi sedikit tips untuk mempermudah kalian dalam melakukan instalasi wildfly atau jboss. Semoga informasi di atas bisa berguna ya.

Jika ada pertanyaan, jangan ragu untuk menulisnya di kolom komentar. Sampai jumpa di tutorial selanjutnya 🙂

Facebook Comments Box