89 lines
2.6 KiB
Bash
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"
|