diff --git a/CHANGELOG.md b/CHANGELOG.md
index 09947917d0..b108cd0f11 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- Fixed installation of debian packages on distros without preinstalled `at` ([#1216](https://github.com/scm-manager/scm-manager/issues/1216) and [#1217](https://github.com/scm-manager/scm-manager/pull/1217))
+- Fixed restart with deb or rpm installation ([#1222](https://github.com/scm-manager/scm-manager/issues/1222))
## [2.1.1] - 2020-06-23
### Fixed
diff --git a/scm-packaging/deb/pom.xml b/scm-packaging/deb/pom.xml
index 7a3d0c9b47..960225020e 100644
--- a/scm-packaging/deb/pom.xml
+++ b/scm-packaging/deb/pom.xml
@@ -73,30 +73,6 @@
true
-
- copy-jsvc
- prepare-package
-
- unpack
-
-
-
-
- commons-daemon
- commons-daemon-native
- 1.1.0
- tar.gz
-
-
-
-
-
- **/jsvc-linux-*
- ${project.build.directory}/deb/libexec
- false
- true
-
-
copy-webapp
prepare-package
@@ -208,18 +184,6 @@
-
- directory
- ${project.build.directory}/deb/libexec
-
- perm
- /opt/scm-server/libexec
- root
- scm
- 0755
-
-
-
file
src/main/fs/opt/scm-server/var/webapp/docroot/index.html
diff --git a/scm-packaging/deb/src/main/bin/scm-server b/scm-packaging/deb/src/main/bin/scm-server
index 1321985a59..4adbc09294 100755
--- a/scm-packaging/deb/src/main/bin/scm-server
+++ b/scm-packaging/deb/src/main/bin/scm-server
@@ -18,58 +18,14 @@
# Copyright (c) 2001-2002 The Apache Software Foundation. All rights
# reserved.
-# user used to run the daemon (defaults to current user)
-USER="scm"
-
# extra jvm arguments
EXTRA_JVM_ARGUMENTS="-Djava.awt.headless=true -Dlogback.configurationFile=logging.xml"
BASEDIR="/opt/scm-server"
-# set pid path for jsvc
-PIDFILE="/var/run/scm-server.pid"
-
-# set log dir for jsvc
-LOGDIR="/var/log/scm"
-
# load settings from defaults directory
[ -r /etc/default/scm-server ] && . /etc/default/scm-server
-OS=`uname | tr '[:upper:]' '[:lower:]'`
-ARCH=`uname -m`
-
-# OS specific support. $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-case "$OS" in
- sunos*) OS="solaris"
- ARCH=`uname -p`
- ;;
- cygwin*) cygwin=true ;;
- darwin*) darwin=true
- if [ -z "$JAVA_VERSION" ] ; then
- JAVA_VERSION="CurrentJDK"
- else
- echo "Using Java version: $JAVA_VERSION"
- fi
- if [ -z "$JAVA_HOME" ] ; then
- JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Home
- fi
- ;;
-esac
-
-if [ -z "$JAVA_HOME" ] ; then
- if [ -r /etc/gentoo-release ] ; then
- JAVA_HOME=`java-config --jre-home`
- fi
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
# If a specific java binary isn't specified search for the standard 'java' binary
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
@@ -97,96 +53,12 @@ fi
CLASSPATH=$CLASSPATH_PREFIX:"$BASEDIR"/conf:"$REPO"/*
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
- [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
- [ -n "$HOME" ] && HOME=`cygpath --path --windows "$HOME"`
- [ -n "$BASEDIR" ] && BASEDIR=`cygpath --path --windows "$BASEDIR"`
- [ -n "$REPO" ] && REPO=`cygpath --path --windows "$REPO"`
-fi
-
-jsvc=false;
-stop="";
-
-if [ "$1" == "start" ]
-then
- jsvc=true;
-else
- if [ "$1" == "stop" ]
- then
- jsvc=true;
- stop='-stop';
- fi
-fi
-
-USER_ARGUMENT=""
-
-if [ "x$USER" != "x" ]
-then
- USER_ARGUMENT="-user $USER"
-fi
-
-DARWIN_USE_ARCH="false"
-
-if $jsvc; then
-
- JSVCCMD=""
- if [ "$OS" == "darwin" ]; then
- if [ "$DARWIN_USE_ARCH" == "true" ]; then
- JSVCCMD="/usr/bin/arch -arch $ARCH $BASEDIR/libexec/jsvc-$OS"
- else
- JSVCCMD="exec $BASEDIR/libexec/jsvc-$OS"
- fi
- else
- JSVCCMD="exec $BASEDIR/libexec/jsvc-$OS-$ARCH"
- fi
-
- # try to extract JAVA_HOME from JAVACMD
- if [ -z "$JAVA_HOME" ] ; then
- PRG="$JAVACMD"
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG="`dirname "$PRG"`/$link"
- fi
- done
- DIR="$(dirname "$PRG")"
- DIR="$(dirname "$DIR")"
- if [ -d "$DIR" ] ; then
- JAVA_HOME="$DIR"
- fi
- fi
-
- # TODO JVM Arguments
-
- $JSVCCMD -cp "$CLASSPATH" $JAVA_OPTS \
- $EXTRA_JVM_ARGUMENTS $USER_ARGUMENT \
- -outfile "$LOGDIR/scm-server.out" \
- -errfile "$LOGDIR/scm-server.err" \
- -pidfile "$PIDFILE" \
- -jvm server \
- -home "$JAVA_HOME" \
- -Dapp.name="scm-server" \
- -Dapp.pid="$$" \
- -Dapp.repo="$REPO" \
- -Dbasedir="$BASEDIR" \
- $stop sonia.scm.server.ScmServerDaemon \
- "$@"
-
-else
-
- exec "$JAVACMD" $JAVA_OPTS \
- $EXTRA_JVM_ARGUMENTS \
- -classpath "$CLASSPATH" \
- -Dapp.name="scm-server" \
- -Dapp.pid="$$" \
- -Dapp.repo="$REPO" \
- -Dbasedir="$BASEDIR" \
- sonia.scm.server.ScmServerDaemon \
- "$@"
-
-fi
+exec "$JAVACMD" $JAVA_OPTS \
+ $EXTRA_JVM_ARGUMENTS \
+ -classpath "$CLASSPATH" \
+ -Dapp.name="scm-server" \
+ -Dapp.pid="$$" \
+ -Dapp.repo="$REPO" \
+ -Dbasedir="$BASEDIR" \
+ sonia.scm.server.ScmServerDaemon \
+ "$@"
diff --git a/scm-packaging/deb/src/main/fs/etc/default/scm-server b/scm-packaging/deb/src/main/fs/etc/default/scm-server
index 959947d33f..619e61eaf9 100644
--- a/scm-packaging/deb/src/main/fs/etc/default/scm-server
+++ b/scm-packaging/deb/src/main/fs/etc/default/scm-server
@@ -29,21 +29,12 @@ HOST=0.0.0.0
# scm-server port
PORT=8080
-# change user
-USER=scm
-
# home of scm-manager
export SCM_HOME=/var/lib/scm
# force jvm path
# JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
-# path to pid
-PIDFILE=/var/run/scm/scm.pid
-
-# path to log directory
-LOGDIR=/var/log/scm
-
# increase memory
# EXTRA_JVM_ARGUMENTS="$EXTRA_JVM_ARGUMENTS -Xms1g -Xmx1g"
diff --git a/scm-packaging/deb/src/main/fs/etc/scm/logging.xml b/scm-packaging/deb/src/main/fs/etc/scm/logging.xml
index b3f4014265..b048b71c29 100644
--- a/scm-packaging/deb/src/main/fs/etc/scm/logging.xml
+++ b/scm-packaging/deb/src/main/fs/etc/scm/logging.xml
@@ -100,7 +100,8 @@
-
+
+
diff --git a/scm-packaging/deb/src/main/fs/etc/systemd/system/scm-server.service b/scm-packaging/deb/src/main/fs/etc/systemd/system/scm-server.service
index 58ef9de558..e37e8f5ee7 100644
--- a/scm-packaging/deb/src/main/fs/etc/systemd/system/scm-server.service
+++ b/scm-packaging/deb/src/main/fs/etc/systemd/system/scm-server.service
@@ -3,14 +3,19 @@ Description=SCM-Manager Server
After=syslog.target network.target
[Service]
-Type=forking
+Type=simple
User=scm
Group=scm
WorkingDirectory=/opt/scm-server
-ExecStart=/opt/scm-server/bin/scm-server start
-ExecStop=/opt/scm-server/bin/scm-server stop
+ExecStart=/opt/scm-server/bin/scm-server
+Restart=on-failure
+
+# Exit code 143 means that the program received a SIGTERM signal to instruct it to exit,
+# but it did not handle the signal properly.
+# we suppress that warning for now
+SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
diff --git a/scm-packaging/rpm/pom.xml b/scm-packaging/rpm/pom.xml
index fa5743c9c5..6fa1dff083 100644
--- a/scm-packaging/rpm/pom.xml
+++ b/scm-packaging/rpm/pom.xml
@@ -73,30 +73,6 @@
true
-
- copy-jsvc
- prepare-package
-
- unpack
-
-
-
-
- commons-daemon
- commons-daemon-native
- 1.1.0
- tar.gz
-
-
-
-
-
- **/jsvc-linux-*
- ${project.build.directory}/rpm/libexec
- false
- true
-
-
copy-webapp
prepare-package
@@ -163,15 +139,6 @@
scm
0644
-
-
- file
- /opt/scm-server/libexec
-
- root
- scm
- 0755
-
@@ -229,14 +196,6 @@
default
-
- /opt/scm-server/libexec
-
- ${project.build.directory}/rpm/libexec
-
- default
-
-
/opt/scm-server/var/webapp/docroot/index.html
src/main/fs/opt/scm-server/var/webapp/docroot/index.html
diff --git a/scm-packaging/rpm/src/main/bin/scm-server b/scm-packaging/rpm/src/main/bin/scm-server
index 1321985a59..4adbc09294 100755
--- a/scm-packaging/rpm/src/main/bin/scm-server
+++ b/scm-packaging/rpm/src/main/bin/scm-server
@@ -18,58 +18,14 @@
# Copyright (c) 2001-2002 The Apache Software Foundation. All rights
# reserved.
-# user used to run the daemon (defaults to current user)
-USER="scm"
-
# extra jvm arguments
EXTRA_JVM_ARGUMENTS="-Djava.awt.headless=true -Dlogback.configurationFile=logging.xml"
BASEDIR="/opt/scm-server"
-# set pid path for jsvc
-PIDFILE="/var/run/scm-server.pid"
-
-# set log dir for jsvc
-LOGDIR="/var/log/scm"
-
# load settings from defaults directory
[ -r /etc/default/scm-server ] && . /etc/default/scm-server
-OS=`uname | tr '[:upper:]' '[:lower:]'`
-ARCH=`uname -m`
-
-# OS specific support. $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-case "$OS" in
- sunos*) OS="solaris"
- ARCH=`uname -p`
- ;;
- cygwin*) cygwin=true ;;
- darwin*) darwin=true
- if [ -z "$JAVA_VERSION" ] ; then
- JAVA_VERSION="CurrentJDK"
- else
- echo "Using Java version: $JAVA_VERSION"
- fi
- if [ -z "$JAVA_HOME" ] ; then
- JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Home
- fi
- ;;
-esac
-
-if [ -z "$JAVA_HOME" ] ; then
- if [ -r /etc/gentoo-release ] ; then
- JAVA_HOME=`java-config --jre-home`
- fi
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
# If a specific java binary isn't specified search for the standard 'java' binary
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
@@ -97,96 +53,12 @@ fi
CLASSPATH=$CLASSPATH_PREFIX:"$BASEDIR"/conf:"$REPO"/*
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
- [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
- [ -n "$HOME" ] && HOME=`cygpath --path --windows "$HOME"`
- [ -n "$BASEDIR" ] && BASEDIR=`cygpath --path --windows "$BASEDIR"`
- [ -n "$REPO" ] && REPO=`cygpath --path --windows "$REPO"`
-fi
-
-jsvc=false;
-stop="";
-
-if [ "$1" == "start" ]
-then
- jsvc=true;
-else
- if [ "$1" == "stop" ]
- then
- jsvc=true;
- stop='-stop';
- fi
-fi
-
-USER_ARGUMENT=""
-
-if [ "x$USER" != "x" ]
-then
- USER_ARGUMENT="-user $USER"
-fi
-
-DARWIN_USE_ARCH="false"
-
-if $jsvc; then
-
- JSVCCMD=""
- if [ "$OS" == "darwin" ]; then
- if [ "$DARWIN_USE_ARCH" == "true" ]; then
- JSVCCMD="/usr/bin/arch -arch $ARCH $BASEDIR/libexec/jsvc-$OS"
- else
- JSVCCMD="exec $BASEDIR/libexec/jsvc-$OS"
- fi
- else
- JSVCCMD="exec $BASEDIR/libexec/jsvc-$OS-$ARCH"
- fi
-
- # try to extract JAVA_HOME from JAVACMD
- if [ -z "$JAVA_HOME" ] ; then
- PRG="$JAVACMD"
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG="`dirname "$PRG"`/$link"
- fi
- done
- DIR="$(dirname "$PRG")"
- DIR="$(dirname "$DIR")"
- if [ -d "$DIR" ] ; then
- JAVA_HOME="$DIR"
- fi
- fi
-
- # TODO JVM Arguments
-
- $JSVCCMD -cp "$CLASSPATH" $JAVA_OPTS \
- $EXTRA_JVM_ARGUMENTS $USER_ARGUMENT \
- -outfile "$LOGDIR/scm-server.out" \
- -errfile "$LOGDIR/scm-server.err" \
- -pidfile "$PIDFILE" \
- -jvm server \
- -home "$JAVA_HOME" \
- -Dapp.name="scm-server" \
- -Dapp.pid="$$" \
- -Dapp.repo="$REPO" \
- -Dbasedir="$BASEDIR" \
- $stop sonia.scm.server.ScmServerDaemon \
- "$@"
-
-else
-
- exec "$JAVACMD" $JAVA_OPTS \
- $EXTRA_JVM_ARGUMENTS \
- -classpath "$CLASSPATH" \
- -Dapp.name="scm-server" \
- -Dapp.pid="$$" \
- -Dapp.repo="$REPO" \
- -Dbasedir="$BASEDIR" \
- sonia.scm.server.ScmServerDaemon \
- "$@"
-
-fi
+exec "$JAVACMD" $JAVA_OPTS \
+ $EXTRA_JVM_ARGUMENTS \
+ -classpath "$CLASSPATH" \
+ -Dapp.name="scm-server" \
+ -Dapp.pid="$$" \
+ -Dapp.repo="$REPO" \
+ -Dbasedir="$BASEDIR" \
+ sonia.scm.server.ScmServerDaemon \
+ "$@"
diff --git a/scm-packaging/rpm/src/main/fs/etc/default/scm-server b/scm-packaging/rpm/src/main/fs/etc/default/scm-server
index 4a5d2fe86c..8f882580c4 100644
--- a/scm-packaging/rpm/src/main/fs/etc/default/scm-server
+++ b/scm-packaging/rpm/src/main/fs/etc/default/scm-server
@@ -29,21 +29,12 @@ HOST=0.0.0.0
# scm-server port
PORT=8080
-# change user
-USER=scm
-
# home of scm-manager
export SCM_HOME=/var/lib/scm
# force jvm path
# JAVA_HOME="/usr/lib/jvm/jre-11"
-# path to pid
-PIDFILE=/var/run/scm/scm.pid
-
-# path to log directory
-LOGDIR=/var/log/scm
-
# increase memory
# EXTRA_JVM_ARGUMENTS="$EXTRA_JVM_ARGUMENTS -Xms1g -Xmx1g"
diff --git a/scm-packaging/rpm/src/main/fs/etc/scm/logging.xml b/scm-packaging/rpm/src/main/fs/etc/scm/logging.xml
index b3f4014265..b048b71c29 100644
--- a/scm-packaging/rpm/src/main/fs/etc/scm/logging.xml
+++ b/scm-packaging/rpm/src/main/fs/etc/scm/logging.xml
@@ -100,7 +100,8 @@
-
+
+
diff --git a/scm-packaging/rpm/src/main/fs/etc/systemd/system/scm-server.service b/scm-packaging/rpm/src/main/fs/etc/systemd/system/scm-server.service
index 58ef9de558..e37e8f5ee7 100644
--- a/scm-packaging/rpm/src/main/fs/etc/systemd/system/scm-server.service
+++ b/scm-packaging/rpm/src/main/fs/etc/systemd/system/scm-server.service
@@ -3,14 +3,19 @@ Description=SCM-Manager Server
After=syslog.target network.target
[Service]
-Type=forking
+Type=simple
User=scm
Group=scm
WorkingDirectory=/opt/scm-server
-ExecStart=/opt/scm-server/bin/scm-server start
-ExecStop=/opt/scm-server/bin/scm-server stop
+ExecStart=/opt/scm-server/bin/scm-server
+Restart=on-failure
+
+# Exit code 143 means that the program received a SIGTERM signal to instruct it to exit,
+# but it did not handle the signal properly.
+# we suppress that warning for now
+SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
diff --git a/scm-packaging/rpm/src/main/scripts/after-installation.sh b/scm-packaging/rpm/src/main/scripts/after-installation.sh
index 474eae5df9..671d91fdff 100644
--- a/scm-packaging/rpm/src/main/scripts/after-installation.sh
+++ b/scm-packaging/rpm/src/main/scripts/after-installation.sh
@@ -32,8 +32,8 @@ if [ -d "${WORKDIR}" ]; then
fi
# reload systemd and make service available
-systemctl daemon-reload
+systemctl --system daemon-reload >/dev/null || true
# enable and start the service
-sudo systemctl enable scm-server
-sudo systemctl start scm-server
+systemctl enable scm-server
+systemctl start scm-server