optimizied installer.sh
This commit is contained in:
parent
4f8b859c36
commit
584fa3331e
2 changed files with 73 additions and 23 deletions
84
install.sh
84
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://<raspberry-ip>:5000"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
Reference in a new issue