This repository has been archived on 2025-05-16. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
pi-race-timer/install.sh
2025-04-29 23:48:06 +02:00

89 lines
2.6 KiB
Bash

#!/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..."
# 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
# 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
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
echo "Richte systemd-Dienst ein..."
sudo systemctl daemon-reexec
sudo systemctl enable $SERVICE_NAME
sudo systemctl start $SERVICE_NAME
echo "✅ Installation abgeschlossen. Webinterface erreichbar unter: http://<raspberry-ip>:5000"