diff --git a/install.sh b/install.sh index 3bfd837..88dec17 100644 --- a/install.sh +++ b/install.sh @@ -1,27 +1,89 @@ #!/bin/bash +# Projektpfad und venv-Verzeichnis definieren +PROJECT_PATH="/home/pi/pi-race-timer" +VENV_PATH="$PROJECT_PATH/venv" +SERVICE_NAME="pi-race-timer.service" +INSTALLER_PATH="/home/pi/install.sh" + +# Funktion für das Skript-Neustarten +restart_installer() { + echo "🔄 Installer wurde geändert, Neustart erfolgt..." + exec $SHELL "$INSTALLER_PATH" +} + echo "📦 Projekt wird installiert..." -# System aktualisieren -sudo apt update && sudo apt upgrade -y -sudo apt install python3-venv git -y +# Prüfen, ob das Projektverzeichnis existiert +if [ -d "$PROJECT_PATH" ]; then + echo "Projektverzeichnis gefunden. Führe Git Pull aus..." + + # Projekt aktualisieren + cd $PROJECT_PATH + git pull origin main -# Projekt klonen -git clone https://git.geigernet.eu/rainer/pi-race-timer.git /home/pi/pi-race-timer -cd /home/pi/pi-race-timer + # Prüfen, ob das Installations-Skript selbst geändert wurde + if [ "$(git log -1 --pretty=%H -- $INSTALLER_PATH)" != "$(cat $INSTALLER_PATH.sha)" ]; then + # Installer wurde geändert, daher neu starten + echo "Installationsskript wurde geändert." + git log -1 --pretty=%H -- $INSTALLER_PATH > $INSTALLER_PATH.sha + restart_installer + fi + + # Virtuelle Umgebung löschen + if [ -d "$VENV_PATH" ]; then + echo "Lösche vorhandene virtuelle Umgebung..." + rm -rf $VENV_PATH + fi + + # Systemd-Dienst entfernen + echo "Entferne alten systemd-Dienst..." + sudo systemctl stop $SERVICE_NAME + sudo systemctl disable $SERVICE_NAME + sudo rm /etc/systemd/system/$SERVICE_NAME +else + # Projekt klonen, wenn es nicht existiert + echo "Projektverzeichnis nicht gefunden. Klone das Projekt..." + git clone https://git.geigernet.eu/rainer/pi-race-timer.git $PROJECT_PATH + cd $PROJECT_PATH + git log -1 --pretty=%H -- $INSTALLER_PATH > $INSTALLER_PATH.sha +fi # Virtuelle Umgebung einrichten -python3 -m venv venv -source venv/bin/activate +echo "Erstelle virtuelle Umgebung..." +python3 -m venv $VENV_PATH +source $VENV_PATH/bin/activate # Python-Abhängigkeiten installieren +echo "Installiere Python-Abhängigkeiten..." pip install -U pip pip install -r requirements.txt +# Erstelle die systemd-Service-Datei +echo "Erstelle systemd-Service-Datei..." +echo "[Unit] +Description=Pi Race Timer +After=network.target + +[Service] +Type=simple +User=pi +WorkingDirectory=$PROJECT_PATH +ExecStart=$VENV_PATH/bin/python $PROJECT_PATH/app.py +Environment=\"PATH=$VENV_PATH/bin:$PATH\" +Environment=\"VIRTUAL_ENV=$VENV_PATH\" +Restart=always +RestartSec=5 +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=multi-user.target" | sudo tee /etc/systemd/system/$SERVICE_NAME > /dev/null + # systemd-Dienst einrichten -sudo cp pi-race-timer.service /etc/systemd/system/ +echo "Richte systemd-Dienst ein..." sudo systemctl daemon-reexec -sudo systemctl enable pi-race-timer -sudo systemctl start pi-race-timer +sudo systemctl enable $SERVICE_NAME +sudo systemctl start $SERVICE_NAME echo "✅ Installation abgeschlossen. Webinterface erreichbar unter: http://:5000" diff --git a/pi-race-timer.service b/pi-race-timer.service deleted file mode 100644 index 38ba75f..0000000 --- a/pi-race-timer.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Race Timer Webserver -After=network.target - -[Service] -ExecStart=/home/pi/pi-race-timer/venv/bin/python3 /home/pi/pi-race-timer/main.py -WorkingDirectory=/home/pi/pi-race-timer -Restart=always -User=pi - -[Install] -WantedBy=multi-user.target