Füge UndergroundWorker hinzu und implementiere Logik für unterirdische Aufgaben. Aktualisiere CMakeLists.txt, um neue Quell- und Header-Dateien einzuschließen. Verbessere die Fehlerbehandlung in der Datenbank und sende Benachrichtigungen nach bestimmten Ereignissen. Integriere Hilfsfunktionen zur sicheren Verarbeitung von Daten.
This commit is contained in:
committed by
Torsten (PC)
parent
1451225978
commit
23c07a3570
203
deploy.sh
203
deploy.sh
@@ -1,36 +1,183 @@
|
||||
# YourPart Daemon Deployment Script für Ubuntu 22
|
||||
# Verwendung: ./deploy.sh [server_ip] [ssh_user]
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Farben für Output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Konfiguration
|
||||
SERVER_IP="${1:-your-part.de}"
|
||||
SSH_USER="${2:-root}"
|
||||
DAEMON_USER="yourpart"
|
||||
PROJECT_NAME="yourpart-daemon"
|
||||
REMOTE_DIR="/opt/yourpart"
|
||||
SERVICE_NAME="yourpart-daemon"
|
||||
|
||||
# Funktionen
|
||||
log_info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
log_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Prüfe ob wir im richtigen Verzeichnis sind
|
||||
if [ ! -f "CMakeLists.txt" ] || [ ! -f "daemon.conf" ]; then
|
||||
log_error "Bitte führen Sie dieses Script aus dem Projektverzeichnis aus!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_info "Starte Deployment für YourPart Daemon..."
|
||||
log_info "Server: $SERVER_IP"
|
||||
log_info "SSH User: $SSH_USER"
|
||||
|
||||
# 1. Lokales Build
|
||||
log_info "Baue Projekt lokal..."
|
||||
if [ ! -d "build" ]; then
|
||||
mkdir build
|
||||
fi
|
||||
|
||||
cd build
|
||||
cmake .. -DCMAKE_BUILD_TYPE=Release
|
||||
make -j$(nproc)
|
||||
cd ..
|
||||
|
||||
log_success "Lokaler Build abgeschlossen"
|
||||
|
||||
# 2. Erstelle Deployment-Paket
|
||||
log_info "Erstelle Deployment-Paket..."
|
||||
DEPLOY_DIR="deploy_package"
|
||||
rm -rf "$DEPLOY_DIR"
|
||||
mkdir -p "$DEPLOY_DIR"
|
||||
|
||||
# Kopiere Binärdatei
|
||||
cp build/yourpart-daemon "$DEPLOY_DIR/"
|
||||
|
||||
# Kopiere Konfigurationsdatei
|
||||
cp daemon.conf "$DEPLOY_DIR/"
|
||||
|
||||
# Kopiere Service-Datei
|
||||
cp yourpart-daemon.service "$DEPLOY_DIR/"
|
||||
|
||||
# Erstelle Installations-Script
|
||||
cat > "$DEPLOY_DIR/install.sh" << 'EOF'
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "=== YourPart Deployment Script ==="
|
||||
echo ""
|
||||
# Farben
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Prüfen ob wir im richtigen Verzeichnis sind
|
||||
if [ ! -f "package.json" ]; then
|
||||
echo "Error: Please run this script from the YourPart3 root directory"
|
||||
exit 1
|
||||
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
||||
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
|
||||
log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
|
||||
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
||||
|
||||
DAEMON_USER="yourpart"
|
||||
REMOTE_DIR="/opt/yourpart"
|
||||
SERVICE_NAME="yourpart-daemon"
|
||||
|
||||
log_info "Installiere YourPart Daemon..."
|
||||
|
||||
# Erstelle Benutzer falls nicht vorhanden
|
||||
if ! id "$DAEMON_USER" &>/dev/null; then
|
||||
log_info "Erstelle Benutzer $DAEMON_USER..."
|
||||
useradd --system --shell /bin/false --home-dir "$REMOTE_DIR" --create-home "$DAEMON_USER"
|
||||
log_success "Benutzer $DAEMON_USER erstellt"
|
||||
else
|
||||
log_info "Benutzer $DAEMON_USER existiert bereits"
|
||||
fi
|
||||
|
||||
# Prüfen ob sudo verfügbar ist
|
||||
if ! command -v sudo &> /dev/null; then
|
||||
echo "Error: sudo is required but not installed"
|
||||
exit 1
|
||||
fi
|
||||
# Erstelle Verzeichnisse
|
||||
log_info "Erstelle Verzeichnisse..."
|
||||
mkdir -p "$REMOTE_DIR"/{logs,config}
|
||||
mkdir -p /etc/yourpart
|
||||
mkdir -p /var/log/yourpart
|
||||
|
||||
# Backend deployen
|
||||
echo ""
|
||||
echo "=== Deploying Backend ==="
|
||||
./deploy-backend.sh
|
||||
# Kopiere Dateien
|
||||
log_info "Kopiere Dateien..."
|
||||
cp yourpart-daemon /usr/local/bin/
|
||||
cp daemon.conf /etc/yourpart/
|
||||
cp yourpart-daemon.service /etc/systemd/system/
|
||||
|
||||
# Frontend bauen und deployen
|
||||
echo ""
|
||||
echo "=== Building and Deploying Frontend ==="
|
||||
./deploy-frontend.sh
|
||||
# Setze Berechtigungen
|
||||
chmod +x /usr/local/bin/yourpart-daemon
|
||||
chown -R "$DAEMON_USER:$DAEMON_USER" "$REMOTE_DIR"
|
||||
chown -R "$DAEMON_USER:$DAEMON_USER" /var/log/yourpart
|
||||
chmod 600 /etc/yourpart/daemon.conf
|
||||
|
||||
echo ""
|
||||
echo "=== Deployment Completed! ==="
|
||||
echo "Your application should now be available at:"
|
||||
echo " HTTP: http://your-part.de (redirects to HTTPS)"
|
||||
echo " HTTPS: https://www.your-part.de"
|
||||
echo ""
|
||||
echo "To check logs:"
|
||||
echo " Backend: sudo journalctl -u yourpart.service -f"
|
||||
echo " Apache: sudo tail -f /var/log/apache2/yourpart.*.log"
|
||||
# Lade systemd neu
|
||||
log_info "Lade systemd Konfiguration neu..."
|
||||
systemctl daemon-reload
|
||||
|
||||
# Aktiviere Service
|
||||
log_info "Aktiviere Service..."
|
||||
systemctl enable "$SERVICE_NAME"
|
||||
|
||||
log_success "Installation abgeschlossen!"
|
||||
log_info "Verwenden Sie 'systemctl start $SERVICE_NAME' um den Service zu starten"
|
||||
log_info "Verwenden Sie 'systemctl status $SERVICE_NAME' um den Status zu prüfen"
|
||||
log_info "Verwenden Sie 'journalctl -u $SERVICE_NAME -f' um die Logs zu verfolgen"
|
||||
EOF
|
||||
|
||||
chmod +x "$DEPLOY_DIR/install.sh"
|
||||
|
||||
# Erstelle Tarball
|
||||
tar -czf "${PROJECT_NAME}_deploy.tar.gz" -C "$DEPLOY_DIR" .
|
||||
|
||||
log_success "Deployment-Paket erstellt: ${PROJECT_NAME}_deploy.tar.gz"
|
||||
|
||||
# 3. Upload zum Server
|
||||
log_info "Lade Dateien zum Server hoch..."
|
||||
scp "${PROJECT_NAME}_deploy.tar.gz" "$SSH_USER@$SERVER_IP:/tmp/"
|
||||
|
||||
# 4. Installation auf dem Server
|
||||
log_info "Installiere auf dem Server..."
|
||||
ssh "$SSH_USER@$SERVER_IP" << EOF
|
||||
set -euo pipefail
|
||||
|
||||
# Entpacke Deployment-Paket
|
||||
cd /tmp
|
||||
tar -xzf "${PROJECT_NAME}_deploy.tar.gz"
|
||||
|
||||
# Führe Installation aus
|
||||
./install.sh
|
||||
|
||||
# Starte Service
|
||||
systemctl start $SERVICE_NAME
|
||||
|
||||
# Prüfe Status
|
||||
systemctl status $SERVICE_NAME --no-pager
|
||||
|
||||
# Aufräumen
|
||||
rm -f "${PROJECT_NAME}_deploy.tar.gz"
|
||||
rm -rf /tmp/yourpart-daemon /tmp/daemon.conf /tmp/yourpart-daemon.service /tmp/install.sh
|
||||
|
||||
echo "Deployment erfolgreich abgeschlossen!"
|
||||
EOF
|
||||
|
||||
# 5. Aufräumen
|
||||
log_info "Räume lokale Dateien auf..."
|
||||
rm -rf "$DEPLOY_DIR"
|
||||
rm -f "${PROJECT_NAME}_deploy.tar.gz"
|
||||
|
||||
log_success "Deployment erfolgreich abgeschlossen!"
|
||||
log_info "Der YourPart Daemon läuft jetzt auf $SERVER_IP"
|
||||
log_info "Verwenden Sie 'ssh $SSH_USER@$SERVER_IP systemctl status $SERVICE_NAME' um den Status zu prüfen"
|
||||
|
||||
Reference in New Issue
Block a user