chore: complete update
This commit is contained in:
69
deploy.sh
Normal file
69
deploy.sh
Normal file
@@ -0,0 +1,69 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Konfiguration
|
||||
SERVER_USER="deploy"
|
||||
SERVER_IP="94.16.110.151"
|
||||
REMOTE_PATH="/var/www/michaelschiemer"
|
||||
LOCAL_PATH="."
|
||||
EXCLUDES="--exclude=.git --exclude=node_modules --exclude=vendor --exclude=.env"
|
||||
SSH_OPTS="-o StrictHostKeyChecking=no"
|
||||
|
||||
# Farben für Ausgabe
|
||||
GREEN="\e[32m"
|
||||
YELLOW="\e[33m"
|
||||
RED="\e[31m"
|
||||
RESET="\e[0m"
|
||||
|
||||
echo -e "${YELLOW}Deployment auf ${SERVER_IP} starten...${RESET}"
|
||||
|
||||
# 1. Temporäres Verzeichnis erstellen
|
||||
TMP_DIR=$(mktemp -d)
|
||||
echo -e "${YELLOW}Temporäres Verzeichnis erstellt: ${TMP_DIR}${RESET}"
|
||||
|
||||
# 2. Dateien in temporäres Verzeichnis kopieren (ohne Ausschlüsse)
|
||||
echo -e "${YELLOW}Kopiere Projektdateien...${RESET}"
|
||||
rsync -a $EXCLUDES "$LOCAL_PATH/" "$TMP_DIR/"
|
||||
|
||||
# 3. Archiv erstellen
|
||||
echo -e "${YELLOW}Erstelle Archiv...${RESET}"
|
||||
TMP_ARCHIVE="/tmp/project-$(date +%Y%m%d-%H%M%S).tar.gz"
|
||||
tar -czf "$TMP_ARCHIVE" -C "$TMP_DIR" .
|
||||
|
||||
# 4. Verzeichnisse auf dem Server erstellen
|
||||
echo -e "${YELLOW}Erstelle Verzeichnisse auf dem Server...${RESET}"
|
||||
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "mkdir -p $REMOTE_PATH"
|
||||
|
||||
# 5. Archiv auf den Server übertragen
|
||||
echo -e "${YELLOW}Übertrage Dateien auf den Server...${RESET}"
|
||||
scp $SSH_OPTS "$TMP_ARCHIVE" "$SERVER_USER@$SERVER_IP:/tmp/project.tar.gz"
|
||||
|
||||
# 6. Archiv auf dem Server entpacken
|
||||
echo -e "${YELLOW}Entpacke Dateien auf dem Server...${RESET}"
|
||||
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "tar -xzf /tmp/project.tar.gz -C $REMOTE_PATH"
|
||||
|
||||
# 7. Umgebungsdatei erstellen, falls nicht vorhanden
|
||||
echo -e "${YELLOW}Überprüfe/erstelle .env Datei...${RESET}"
|
||||
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "[ -f $REMOTE_PATH/.env ] || cp $REMOTE_PATH/.env.example $REMOTE_PATH/.env"
|
||||
|
||||
# 8. Berechtigungen setzen
|
||||
echo -e "${YELLOW}Setze Berechtigungen...${RESET}"
|
||||
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "chmod -R 775 $REMOTE_PATH/storage $REMOTE_PATH/cache"
|
||||
|
||||
# 9. Abhängigkeiten installieren und Build ausführen
|
||||
echo -e "${YELLOW}Installiere Abhängigkeiten und baue Assets...${RESET}"
|
||||
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "cd $REMOTE_PATH && composer install --no-dev && npm ci && npm run build"
|
||||
|
||||
# 10. Docker Container neu starten
|
||||
echo -e "${YELLOW}Starte Docker Container neu...${RESET}"
|
||||
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "cd $REMOTE_PATH && docker compose up -d"
|
||||
|
||||
# 11. Aufräumen
|
||||
echo -e "${YELLOW}Räume auf...${RESET}"
|
||||
rm -rf "$TMP_DIR" "$TMP_ARCHIVE"
|
||||
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "rm /tmp/project.tar.gz"
|
||||
|
||||
echo -e "${GREEN}Deployment abgeschlossen!${RESET}"
|
||||
echo -e "${YELLOW}Docker Container Status:${RESET}"
|
||||
ssh $SSH_OPTS "$SERVER_USER@$SERVER_IP" "cd $REMOTE_PATH && docker compose ps"
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user