Problem:
- 502 Proxy Error bei WebSocket-Verbindungen zu /ws/
- Apache konnte nicht mit Daemon-Service auf Port 4551 verbinden
Lösung:
- upgrade=websocket Parameter zu ProxyPass hinzugefügt
- Reihenfolge der RewriteRules und ProxyPass optimiert
- WebSocket-Upgrade-Requests werden jetzt korrekt behandelt
Konfiguration:
- RewriteRules für WebSocket-Upgrade vor ProxyPass
- ProxyPass mit upgrade=websocket für /ws/ → ws://localhost:4551/
- Daemon-Service läuft auf Port 4551 und akzeptiert nur WebSocket-Verbindungen
Problem:
- Socket.io-Verbindungen scheiterten mit NS_ERROR_WEBSOCKET_CONNECTION_REFUSED
- Apache hatte keine WebSocket-Upgrade-Header für /socket.io/ konfiguriert
Lösung:
- WebSocket-Upgrade-Header für /socket.io/ hinzugefügt
- RewriteRule für Socket.io WebSocket-Upgrades konfiguriert
- Doppelte RewriteEngine on Zeile entfernt
Jetzt sollten Socket.io WebSocket-Verbindungen über Apache korrekt
an den Backend-Server auf Port 2020 weitergeleitet werden.
Problem:
- Frontend versuchte native WebSocket-Verbindung zu /ws/ aufzubauen
- Backend hat nur Socket.io, keine native WebSocket-Unterstützung für /ws/
Lösung:
- Daemon WebSocket verwendet jetzt Socket.io statt native WebSocket
- Beide Verbindungen (Socket.io und Daemon) verwenden jetzt Socket.io
- Event-Handler von WebSocket auf Socket.io umgestellt
Dies löst die WebSocket-Verbindungsfehler, da der Backend-Server
nur Socket.io unterstützt, keine nativen WebSockets.
Apache-Konfiguration:
- Füge WebSocket-Proxy für /ws/ Pfad hinzu
- Leite WebSocket-Upgrade-Header korrekt weiter
Frontend-Konfiguration:
- Socket.io verwendet jetzt VITE_API_BASE_URL (über /socket.io/ Proxy)
- Daemon WebSocket verwendet wss://www.your-part.de/ws
- Chat WebSocket verwendet wss://www.your-part.de/ws
Dies löst die 'operation is insecure' Fehler und ermöglicht
WebSocket-Verbindungen über HTTPS.
Frontend:
- Lösche dist/ vor Build
- Lösche /opt/yourpart/frontend/dist vollständig vor Deploy
- Erstelle Zielverzeichnis neu nach dem Löschen
Backend:
- Lösche /opt/yourpart/backend vollständig vor Deploy
- Erstelle Backend-Verzeichnis neu nach dem Löschen
Dies stellt sicher, dass keine alten Dateien zurückbleiben.
- .env.local: Verwendet localhost:3001 für lokale Entwicklung
- .env.server: Verwendet wss:// für Produktionsumgebung
- Entferne backend/dist/ aus Git-Tracking
- Erweitere .gitignore um backend/dist/
- Hinzufügen von Konsolenprotokollen zur Überwachung der Verbindungsstatus für Socket.io und WebSocket.
- Fehlerbehandlung für Verbindungsfehler und -abbrüche verbessert.
- Sicherstellen, dass die Verbindungsversuche bei Fehlern korrekt behandelt werden.
- Änderung der Socket-URL von VITE_API_BASE_URL zu VITE_DAEMON_SOCKET zur Verbesserung der Sicherheit.
- Setzen von 'secure' auf true, um eine sichere Verbindung zu gewährleisten.
- Hinzufügen von Optionen für die WebSocket-Verbindung, um die Sicherheit und die Transportmethoden zu verbessern.
- Setzen von 'secure' auf false und Festlegen der Transports auf 'websocket' und 'polling'.
- Änderung des Verzeichnispfades im Deployment-Skript für das Frontend.
- Aktualisierung der API- und WebSocket-URLs in der .env.local-Datei auf die Produktionsumgebung.
- Entfernen des Standardwerts für die API-Basis-URL, um die Konfiguration flexibler zu gestalten.
- Sicherstellung, dass die URL korrekt auf die Backend-API verweist.
- Korrektur des Kopiervorgangs für die .env-Datei, um die richtige Datei im Zielverzeichnis zu verwenden.
- Vereinheitlichung der Pfade für das Kopieren der Server-Umgebungsvariablen und der .env-Datei.
- Hinzufügen eines Schrittes zum Kopieren der .env-Datei in das Zielverzeichnis.
- Anpassung der Berechtigungen für die .env-Datei und das Frontend-Verzeichnis.
- Hinzufügen von Schritten zum Kopieren der Server-Umgebungsvariablen vor dem Neuaufbau des Frontends.
- Anpassung der Schritte zur Erstellung des Zielverzeichnisses und zum Löschen des alten Frontends.
- Wiederherstellung der lokalen .env-Datei nach dem Deployment.
- Hinzufügen eines Neustarts des yourpart-Dienstes nach der Datenbanksynchronisation.
- Implementierung einer Statusprüfung des Dienstes nach dem Neustart, um sicherzustellen, dass der Dienst ordnungsgemäß läuft.
- Hinzufügen von Konsolenausgaben zur Nachverfolgung des Ladevorgangs von Lagertypen und zur Überprüfung, ob neue Lagertypen hinzugefügt werden können.
- Anpassung der Bedingungen zur Anzeige des Hinzufügen-Buttons basierend auf dem Vorhandensein von Lagertypen und bestehenden Stocks in den Branches.
- Entfernen des Inhaltsverzeichnisses vor dem Kopieren des Backends, um sicherzustellen, dass nur die neuesten Dateien übertragen werden.
- Änderung der Berechtigungen für das Backend und die .env-Datei, um den aktuellen Benutzer zu verwenden.
- Aktualisierung der Abhängigkeiten in package.json und package-lock.json, einschließlich der neuesten Versionen von dotenv, jsdom, sharp und uuid.
- Entfernen der Erstellung der Verzeichnisstruktur und der Installation von Systemd- und Apache-Konfigurationen.
- Integration des Frontend-Deployments über ein separates Skript.
- Hinzufügen einer neuen Anzeige für den Fall, dass alle verfügbaren Lagertypen bereits vorhanden sind.
- Anpassung der Logik zur Überprüfung, ob neue Lagertypen hinzugefügt werden können.
- Aktualisierung der Übersetzungen in den Sprachdateien für die neuen Meldungen zur Lagerverwaltung.
- Implementierung von Methoden zur Hinzufügung und Abfrage von Lagerbeständen im AdminController und AdminService.
- Erweiterung der Routen im AdminRouter zur Unterstützung der neuen Lagerverwaltungsfunktionen.
- Anpassung der Benutzeroberfläche zur Integration eines Dialogs für die Lagerhinzufügung und zur Anzeige von Lagertypen.
- Aktualisierung der Übersetzungen in den Sprachdateien für die neuen Funktionen und Fehlermeldungen.
- Hinzufügen von Routen und Methoden zur Verwaltung von Niederlassungen und Lagerbeständen im AdminController und AdminService.
- Implementierung der Logik zum Abrufen von Niederlassungen und Aktualisieren von Lagerbeständen.
- Anpassung der Benutzeroberfläche zur Unterstützung der neuen Funktionen, einschließlich eines Tab-Systems zur Anzeige von Benutzerdaten und Niederlassungen.
- Aktualisierung der Übersetzungen für die neuen Funktionen in den Sprachdateien.
- Die Erstellung von Branches und Lagerbeständen wurde umstrukturiert, um die Abhängigkeiten zwischen den Objekten klarer zu gestalten.
- Der Lagerbestand wird nun mit einer Menge von 20 erstellt und ist mit dem entsprechenden Branch verknüpft, um die Datenintegrität zu verbessern.
- Hinzufügen von Kommentaren zur Unterscheidung zwischen öffentlichen und geschützten Routen im Authentifizierungsrouter.
- Temporäre Deaktivierung des E-Mail-Versands für Aktivierungs-E-Mails im E-Mail-Dienst zur Unterstützung des Deployments.
- Anpassung der Datenbankinitialisierung zur Vermeidung von Duplikaten bei Adelstiteln.
- Anpassung des SQL-Statements zur Verwendung des korrekten Tabellennamens 'type.user_param_visibility_type' anstelle von 'type.user_param_visibility' für die Sichtbarkeitseinstellungen.
- Verbesserung der Datenintegrität bei der Erstellung von Benutzerparametern.
- Import der neuen Modelle für das Match3-Minispiel, einschließlich Kampagnen, Levels, Tile-Typen und Benutzerfortschritt.
- Aktualisierung der Exportstruktur, um die neuen Modelle zu integrieren und die Übersichtlichkeit zu verbessern.
- Die Erstellung der Kampagne erfolgt nun vor dem Löschen und der Neuanlage der Levels, um die Logik der Initialisierung zu verbessern.
- Konsolenausgaben wurden aktualisiert, um den Fortschritt der Kampagnenerstellung und das Löschen der existierenden Levels klarer darzustellen.
- Hinzufügen einer Fehlerbehandlung für den Fall, dass die Match3-Tabellen nicht existieren, um die Robustheit der Initialisierung zu erhöhen.
- Anpassung der Konsolenausgaben zur besseren Nachverfolgbarkeit des Initialisierungsprozesses.
- Aktualisierung des Kommentars zur Klarstellung der Reihenfolge der Initialisierung nach der Erstellung aller Tabellen.
- Die Funktion zur Aktualisierung der bestehenden Match3-Levels wurde nach der Initialisierung von Match3-Daten verschoben, um sicherzustellen, dass die Levels korrekt aktualisiert werden.
- Konsolenausgaben wurden angepasst, um die Änderungen klarer zu dokumentieren.
- Die Funktion zur Initialisierung der Adelstitel wurde von initializeFalukantPredefines.js nach initializeFalukantTypes.js verschoben, um die Struktur und Lesbarkeit des Codes zu verbessern.
- Konsolenausgaben zur Bestätigung der erfolgreichen Initialisierung wurden hinzugefügt.
- Hinzufügen einer Fehlerbehandlung für fehlende minimale Adelstitel während der Erstellung von Haustypen.
- Verbesserung der Konsolenausgaben zur besseren Nachverfolgbarkeit von Warnungen und Fehlern.
- Sicherstellung, dass nur gültige Haustypen erstellt werden, um Dateninkonsistenzen zu vermeiden.
- Sicherstellung, dass die Sprachwerte für Deutsch und Englisch existieren, und Erstellung fehlender Werte.
- Aktualisierung der Logik zur Ermittlung der Sprach-ID, um die neuen Sprachwerte zu berücksichtigen.
- Verbesserung der Konsolenausgaben zur besseren Nachverfolgbarkeit bei der Erstellung von Interessen und Fehlern.
- Umbenennung der Indexfelder von camelCase auf snake_case in verschiedenen Modelldateien zur Verbesserung der Konsistenz mit den Datenbankkonventionen.
- Verbesserung der Regex-Logik zur Erkennung und Ersetzung von Index-Definitionen und Feld-Arrays im Skript zur automatischen Korrektur.
- Implementierung eines neuen Skripts, das camelCase-Feldnamen in snake_case für alle Modelldateien im models-Verzeichnis konvertiert.
- Anpassung der Indexdefinitionen in mehreren Modelldateien zur Verbesserung der Konsistenz mit den Datenbankkonventionen.
- Verbesserung der Konsolenausgaben zur Nachverfolgbarkeit der durchgeführten Änderungen.
- Umbenennung der Indexfelder von 'userId' und 'paramTypeId' auf 'user_id' und 'param_type_id' zur Verbesserung der Konsistenz mit den Datenbankkonventionen.
- Hinzufügen von SQL-Abfragen zur Erstellung mehrerer Datenbankschemas während des Deployments.
- Anpassung der Logik, um nur Schemas zu erstellen, ohne Modelle zu synchronisieren.
- Verbesserung der Konsolenausgaben zur besseren Nachverfolgbarkeit der Schema-Initialisierung.
- Einführung eines optionalen Parameters STAGE im Deployment-Skript zur flexiblen Handhabung von Umgebungen.
- Anpassung der Datenbank-Synchronisation, um immer Schema-Updates im Deployment-Modus durchzuführen.
- Umbenennung der Synchronisationsfunktion für Klarheit und bessere Lesbarkeit.
- Erweiterung der Konsolenausgaben zur besseren Nachverfolgbarkeit während des Deployments.
- Hinzufügen einer Umgebungsvariablen STAGE für Schema-Updates während der Datenbank-Synchronisation.
- Verbesserung des Deployment-Prozesses durch gezielte Anpassungen für Entwicklungsumgebungen.
- Anpassung des Imports von cleanupDatabaseConstraints, um die Standard-Importsyntax zu verwenden.
- Verbesserung der Lesbarkeit und Konsistenz im Code.
- Implementierung eines neuen Skripts zur Datenbank-Synchronisation im deploy-backend.sh.
- Hinzufügen eines npm-Skripts "sync-db" in package.json zur Ausführung der Synchronisation.
- Verbesserung des Deployment-Prozesses durch automatisierte Datenbankaktualisierungen.