Last active
October 2, 2019 14:35
-
-
Save oc/b0e77b6575903b2303648e37e9599a40 to your computer and use it in GitHub Desktop.
/etc/init.d/enonic-xp-{{site}}
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- 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') }} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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