111 lines
4.3 KiB
Bash
111 lines
4.3 KiB
Bash
#!/bin/bash
|
|
# Projektarbeit-MYP Startskript für Linux
|
|
# Dieses Skript startet alle notwendigen Dienste für das MYP-Projekt
|
|
|
|
echo -e "\e[32mStarte MYP-Projekt...\e[0m"
|
|
|
|
# SSH-Server prüfen und aktivieren
|
|
echo -e "\e[33mPrüfe SSH-Server-Status...\e[0m"
|
|
if command -v systemctl > /dev/null; then
|
|
# Prüfen, ob SSH-Server installiert ist
|
|
if ! systemctl list-unit-files | grep -q ssh.service; then
|
|
echo -e "\e[33mSSH-Server scheint nicht installiert zu sein. Versuche zu installieren...\e[0m"
|
|
if command -v apt-get > /dev/null; then
|
|
sudo apt-get update && sudo apt-get install -y openssh-server
|
|
elif command -v yum > /dev/null; then
|
|
sudo yum install -y openssh-server
|
|
else
|
|
echo -e "\e[31mPacket-Manager nicht gefunden. Bitte installieren Sie openssh-server manuell.\e[0m"
|
|
fi
|
|
fi
|
|
|
|
# SSH-Server aktivieren und starten
|
|
echo -e "\e[33mAktiviere SSH-Server beim Systemstart...\e[0m"
|
|
sudo systemctl enable ssh.service || sudo systemctl enable sshd.service
|
|
|
|
# SSH-Server starten, falls nicht bereits läuft
|
|
if ! systemctl is-active --quiet ssh.service && ! systemctl is-active --quiet sshd.service; then
|
|
echo -e "\e[33mStarte SSH-Server...\e[0m"
|
|
sudo systemctl start ssh.service || sudo systemctl start sshd.service
|
|
else
|
|
echo -e "\e[32mSSH-Server läuft bereits.\e[0m"
|
|
fi
|
|
else
|
|
echo -e "\e[31mSystemctl nicht gefunden. Bitte aktivieren Sie den SSH-Server manuell.\e[0m"
|
|
fi
|
|
|
|
# Überprüfen, ob Docker läuft
|
|
if ! docker info > /dev/null 2>&1; then
|
|
echo -e "\e[33mDocker scheint nicht zu laufen. Versuche Docker zu starten...\e[0m"
|
|
|
|
# Versuchen, Docker zu starten (funktioniert auf Systemen mit systemd)
|
|
if command -v systemctl > /dev/null; then
|
|
sudo systemctl start docker
|
|
sleep 5
|
|
|
|
if ! docker info > /dev/null 2>&1; then
|
|
echo -e "\e[31mDocker konnte nicht gestartet werden. Bitte starten Sie Docker manuell und führen Sie dieses Skript erneut aus.\e[0m"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo -e "\e[31mDocker ist nicht gestartet und konnte nicht automatisch gestartet werden.\e[0m"
|
|
echo -e "\e[31mBitte starten Sie Docker manuell und führen Sie dieses Skript erneut aus.\e[0m"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "\e[32mDocker wurde erfolgreich gestartet.\e[0m"
|
|
fi
|
|
|
|
# Überprüfen, ob die Container bereits laufen
|
|
RUNNING_CONTAINERS=$(docker ps --format "{{.Names}}" | grep -E "myp-backend|myp-rp|myp-caddy" | wc -l)
|
|
|
|
if [ "$RUNNING_CONTAINERS" -eq 3 ]; then
|
|
echo -e "\e[32mAlle MYP-Container laufen bereits.\e[0m"
|
|
else
|
|
# Container starten
|
|
echo -e "\e[33mStarte MYP-Container...\e[0m"
|
|
|
|
# Ins Projektverzeichnis wechseln
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# Docker-Compose ausführen
|
|
docker-compose up -d
|
|
|
|
# Warten, bis alle Container laufen
|
|
echo -e "\e[33mWarte, bis alle Container bereit sind...\e[0m"
|
|
ALL_RUNNING=false
|
|
RETRY_COUNT=0
|
|
MAX_RETRIES=30
|
|
|
|
while [ "$ALL_RUNNING" = false ] && [ "$RETRY_COUNT" -lt "$MAX_RETRIES" ]; do
|
|
sleep 5
|
|
RETRY_COUNT=$((RETRY_COUNT + 1))
|
|
|
|
BACKEND_HEALTH=$(docker inspect --format='{{.State.Health.Status}}' myp-backend 2>/dev/null)
|
|
FRONTEND_HEALTH=$(docker inspect --format='{{.State.Health.Status}}' myp-rp 2>/dev/null)
|
|
|
|
if [ "$BACKEND_HEALTH" = "healthy" ] && [ "$FRONTEND_HEALTH" = "healthy" ]; then
|
|
ALL_RUNNING=true
|
|
fi
|
|
done
|
|
|
|
if [ "$ALL_RUNNING" = true ]; then
|
|
echo -e "\e[32mAlle MYP-Container sind bereit und laufen.\e[0m"
|
|
else
|
|
echo -e "\e[33mZeitüberschreitung beim Warten auf Container. Bitte überprüfen Sie den Status mit 'docker ps'.\e[0m"
|
|
fi
|
|
fi
|
|
|
|
# Informationen zur Anwendung anzeigen
|
|
echo -e "\n\e[36mMYP-Anwendung ist jetzt verfügbar unter:\e[0m"
|
|
echo -e " * http://localhost"
|
|
echo -e " * http://192.168.0.5:5000 (Backend API direkt)"
|
|
echo -e "\n\e[36mDas Backend ist unter der festen IP 192.168.0.5 erreichbar.\e[0m"
|
|
echo -e "\e[36mDie API kann über http://localhost/api/ angesprochen werden.\e[0m"
|
|
echo -e "\n\e[36mSSH-Server ist aktiviert und wird beim Systemstart automatisch gestartet.\e[0m"
|
|
|
|
echo -e "\n\e[33mZum Beenden der Anwendung verwenden Sie: docker-compose down\e[0m"
|
|
|
|
# Ausführbare Rechte setzen
|
|
chmod +x "$0" |