From 6dfd3ca915c3cc7469d50f9c84cbba4452f2b341 Mon Sep 17 00:00:00 2001 From: Arksine Date: Sun, 6 Dec 2020 06:25:50 -0500 Subject: [PATCH] scripts: install Moonraker as a systemd service This allows users to view the log using the journalctl command. Signed-off-by: Eric Callahan --- scripts/install-moonraker.sh | 61 ++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/scripts/install-moonraker.sh b/scripts/install-moonraker.sh index ef5c11a..571398b 100755 --- a/scripts/install-moonraker.sh +++ b/scripts/install-moonraker.sh @@ -3,6 +3,7 @@ # Raspbian/Raspberry Pi OS based distributions. PYTHONDIR="${HOME}/moonraker-env" +SYSTEMDDIR="/etc/systemd/system" REBUILD_ENV="n" FORCE_DEFAULTS="n" CONFIG_PATH="${HOME}/moonraker.conf" @@ -19,7 +20,19 @@ check_klipper() } -# Step 2: Install packages +# Step 2: Clean up legacy installation +cleanup_legacy() { + if [ -f "/etc/init.d/moonraker" ]; then + # Stop Moonraker Service + echo "#### Cleanup legacy install script" + sudo systemctl stop moonraker + sudo update-rc.d -f moonraker remove + sudo rm -f /etc/init.d/moonraker + sudo rm -f /etc/default/moonraker + fi +} + +# Step 3: Install packages install_packages() { PKGLIST="python3-virtualenv python3-dev nginx libopenjp2-7 python3-libgpiod" @@ -33,7 +46,7 @@ install_packages() sudo apt-get install --yes ${PKGLIST} } -# Step 3: Create python virtual environment +# Step 4: Create python virtual environment create_virtualenv() { report_status "Installing python virtual environment..." @@ -50,39 +63,41 @@ create_virtualenv() ${PYTHONDIR}/bin/pip install -r ${SRCDIR}/scripts/moonraker-requirements.txt } -# Step 4: Install startup script +# Step 5: Install startup script install_script() { +# Create systemd service file + SERVICE_FILE="${SYSTEMDDIR}/moonraker.service" + [ -f $SERVICE_FILE ] && [ $FORCE_DEFAULTS = "n" ] && return report_status "Installing system start script..." - sudo cp "${SRCDIR}/scripts/moonraker-start.sh" /etc/init.d/moonraker - sudo update-rc.d moonraker defaults -} + sudo /bin/sh -c "cat > ${SERVICE_FILE}" << EOF +#Systemd service file for moonraker +[Unit] +Description=Starts Moonraker on startup +After=network.target -# Step 5: Install startup script config -install_config() -{ - DEFAULTS_FILE=/etc/default/moonraker - [ -f $DEFAULTS_FILE ] && [ $FORCE_DEFAULTS = "n" ] && return - - report_status "Installing system start configuration..." - sudo /bin/sh -c "cat > $DEFAULTS_FILE" <