Skip to content

Instantly share code, notes, and snippets.

@oc
Last active October 2, 2019 14:35
Show Gist options
  • Save oc/b0e77b6575903b2303648e37e9599a40 to your computer and use it in GitHub Desktop.
Save oc/b0e77b6575903b2303648e37e9599a40 to your computer and use it in GitHub Desktop.
/etc/init.d/enonic-xp-{{site}}
#!/bin/bash
### BEGIN INIT INFO
# Provides: kmd - enonic xp instance
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start enonic xp daemon at boot time
# Description: Enable kmd enonic xp instance provided by daemon.
### END INIT INFO
# Short-Description: Regular background program processing daemon
# Description: Runs Enonic XP for kmd
# /var/enonic-xp/kmd
#
#
### END INIT INFO
# /opt/xp_install/bin/enonic ...
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/enonic-xp-linux-server-7.1.0/bin
NAME=enonic-xp-kmd
WORKDIR=/var/enonic-xp/kmd
XP_HOME=/var/enonic-xp/kmd
XP_INSTALL=/opt/enonic-xp-linux-server-7.1.0
JAVA_OPTS="-XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark"
RUNAS=kmd
CMD="/opt/enonic-xp-linux-server-7.1.0/jdk/bin/java"
CLASSPATH=$(JARS=(/opt/enonic-xp-linux-server-7.1.0/lib/*); IFS=:; echo "${JARS[*]}")
unset IFS
export XP_HOME CLASSPATH XP_INSTALL
CMD_ARGS="${JAVA_OPTS} -Dxp.install=/opt/enonic-xp-linux-server-7.1.0 -Dxp.home=/var/enonic-xp/kmd -Dfile.encoding=UTF8 -Dnashorn.args=--no-deprecation-warning ${XP_OPTS} -Dmapper.allow_dots_in_name=true --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED -classpath ${CLASSPATH} com.enonic.xp.launcher.LauncherMain"
PIDFILE="/var/run/enonic-xp/${NAME}.pid"
LOGFILE="/var/enonic-xp/kmd/logs/kmd.console.log"
ERRFILE="/var/enonic-xp/kmd/logs/kmd.error.log"
function prepareDir() {
target=$1
mkdir -p $target
chown $RUNAS $target
}
prepareDir $(dirname $PIDFILE)
prepareDir $(dirname $LOGFILE)
prepareDir $(dirname $ERRFILE)
# Prepare log files XXX
touch $LOGFILE
touch $ERRFILE
chown $RUNAS $LOGFILE
chown $RUNAS $ERRFILE
. /lib/lsb/init-functions
if [[ `id -u` -ne 0 ]]; then
log_failure_msg "You need root privileges to run this script"
exit 1
fi
if [ ! -d "$WORKDIR" ]; then
log_failure_msg "WORKDIR not found - please set it"
exit 1
fi
if [ ! -d "$XP_INSTALL" ]; then
log_failure_msg "XP_INSTALL not found - please set it"
exit 1
fi
case "$1" in
start)
if [ -f $PIDFILE ]; then
PFPID=$(cat $PIDFILE)
kill -0 $PFPID >/dev/null 2>&1
if [[ "$?" = 0 ]]; then
log_success_msg "$NAME already running with pid: $PFPID"
exit 0
else
rm $PIDFILE
log_success_msg "$NAME restarting..."
fi
fi
log_daemon_msg "Starting $NAME"
[[ -f ${WORKDIR}/.env ]] && {
source ${WORKDIR}/.env
}
set +e
/sbin/start-stop-daemon --start --background --no-close --pidfile $PIDFILE \
--make-pidfile --chdir $WORKDIR --chuid $RUNAS \
--umask 022 --exec $CMD -- $CMD_ARGS 1>>${LOGFILE} 2>>${ERRFILE}
set -e
log_end_msg 0
;;
stop)
set +e
if [[ -f "$PIDFILE" ]]; then
log_daemon_msg "Stopping $NAME"
/sbin/start-stop-daemon -K -p $PIDFILE -R TERM/10/KILL/5 --user $RUNAS >/dev/null
EXITCODE=$?
if [[ "$EXITCODE" = "1" ]]; then
log_warning_msg "$NAME wasn't running"
elif [[ "$EXITCODE" = "3" ]]; then
log_failure_msg "$NAME oops.. couldn't stop PID: $(cat $PIDFILE)"
fi
rm -f $PIDFILE
log_end_msg 0
exit $EXITCODE
else
log_success_msg "$NAME doesn't seem to be running (no pidfile)"
fi
set -e
;;
restart)
$0 stop
sleep 5
$0 start
;;
status)
if [[ -f "$PIDFILE" ]]; then
PFPID=$(cat $PIDFILE)
kill -0 $PFPID >/dev/null 2>&1
[[ "$?" = 0 ]] && {
log_success_msg "$NAME running with pid: $PFPID"
exit 0
}
log_failure_msg "$NAME $PIDFILE exists, but PID: $PFPID was dead. Removing PIDFILE."
rm $PIDFILE
exit 1
else
log_success_msg "$NAME not running"
exit 1
fi
set -e
;;
*)
log_success_msg "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
- defaults:
name: {{ site.name }}
home_dir: {{ site.user_home }}
xp_install: {{ xp_install }}
xp_version: {{ xp_version }}
user: {{ site.user }}
java_bin: {{xp_install}}/jdk/bin/java
java_opts: {{ site.get('java_opts', '-XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark') }}
#!/bin/bash
### BEGIN INIT INFO
# Provides: {{name}} - enonic xp instance
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start enonic xp daemon at boot time
# Description: Enable {{name}} enonic xp instance provided by daemon.
### END INIT INFO
# Short-Description: Regular background program processing daemon
# Description: Runs Enonic XP for {{name}}
# {{home_dir}}
#
#
### END INIT INFO
# /opt/xp_install/bin/enonic ...
PATH=/bin:/usr/bin:/sbin:/usr/sbin:{{xp_install}}/bin
NAME=enonic-xp-{{name}}
WORKDIR={{home_dir}}
XP_HOME={{home_dir}}
XP_INSTALL={{ xp_install }}
JAVA_OPTS="{{java_opts}}"
RUNAS={{user}}
CMD="{{java_bin}}"
CLASSPATH=$(JARS=({{xp_install}}/lib/*); IFS=:; echo "${JARS[*]}")
unset IFS
export XP_HOME CLASSPATH XP_INSTALL
CMD_ARGS="${JAVA_OPTS} -Dxp.install={{xp_install}} -Dxp.home={{home_dir}} -Dfile.encoding=UTF8 -Dnashorn.args=--no-deprecation-warning ${XP_OPTS} -Dmapper.allow_dots_in_name=true --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED -classpath ${CLASSPATH} com.enonic.xp.launcher.LauncherMain"
PIDFILE="/var/run/enonic-xp/${NAME}.pid"
LOGFILE="{{home_dir}}/logs/{{name}}.console.log"
ERRFILE="{{home_dir}}/logs/{{name}}.error.log"
function prepareDir() {
target=$1
mkdir -p $target
chown $RUNAS $target
}
prepareDir $(dirname $PIDFILE)
prepareDir $(dirname $LOGFILE)
prepareDir $(dirname $ERRFILE)
# Prepare log files XXX
touch $LOGFILE
touch $ERRFILE
chown $RUNAS $LOGFILE
chown $RUNAS $ERRFILE
. /lib/lsb/init-functions
if [[ `id -u` -ne 0 ]]; then
log_failure_msg "You need root privileges to run this script"
exit 1
fi
if [ ! -d "$WORKDIR" ]; then
log_failure_msg "WORKDIR not found - please set it"
exit 1
fi
if [ ! -d "$XP_INSTALL" ]; then
log_failure_msg "XP_INSTALL not found - please set it"
exit 1
fi
case "$1" in
start)
if [ -f $PIDFILE ]; then
PFPID=$(cat $PIDFILE)
kill -0 $PFPID >/dev/null 2>&1
if [[ "$?" = 0 ]]; then
log_success_msg "$NAME already running with pid: $PFPID"
exit 0
else
rm $PIDFILE
log_success_msg "$NAME restarting..."
fi
fi
log_daemon_msg "Starting $NAME"
[[ -f ${WORKDIR}/.env ]] && {
source ${WORKDIR}/.env
}
set +e
/sbin/start-stop-daemon --start --background --no-close --pidfile $PIDFILE \
--make-pidfile --chdir $WORKDIR --chuid $RUNAS \
--umask 022 --exec $CMD -- $CMD_ARGS 1>>${LOGFILE} 2>>${ERRFILE}
set -e
log_end_msg 0
;;
stop)
set +e
if [[ -f "$PIDFILE" ]]; then
log_daemon_msg "Stopping $NAME"
/sbin/start-stop-daemon -K -p $PIDFILE -R TERM/10/KILL/5 --user $RUNAS >/dev/null
EXITCODE=$?
if [[ "$EXITCODE" = "1" ]]; then
log_warning_msg "$NAME wasn't running"
elif [[ "$EXITCODE" = "3" ]]; then
log_failure_msg "$NAME oops.. couldn't stop PID: $(cat $PIDFILE)"
fi
rm -f $PIDFILE
log_end_msg 0
exit $EXITCODE
else
log_success_msg "$NAME doesn't seem to be running (no pidfile)"
fi
set -e
;;
restart)
$0 stop
sleep 5
$0 start
;;
status)
if [[ -f "$PIDFILE" ]]; then
PFPID=$(cat $PIDFILE)
kill -0 $PFPID >/dev/null 2>&1
[[ "$?" = 0 ]] && {
log_success_msg "$NAME running with pid: $PFPID"
exit 0
}
log_failure_msg "$NAME $PIDFILE exists, but PID: $PFPID was dead. Removing PIDFILE."
rm $PIDFILE
exit 1
else
log_success_msg "$NAME not running"
exit 1
fi
set -e
;;
*)
log_success_msg "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment