Implementiere Benutzerverbindungskontrolle und verbessere Nachrichtenverwaltung
- Füge die Methode `removeUserDisconnected` in der ChatRoom-Klasse hinzu, um Benutzer bei Verbindungsabbrüchen zu entfernen und entsprechende Nachrichten zu senden. - Aktualisiere die ChatUser-Klasse, um einen Token-Getter bereitzustellen und die Verbindungsprüfung zu optimieren. - Ändere die Server-Klasse, um die Benutzerverwaltung bei Raumwechseln zu verbessern und Debug-Informationen hinzuzufügen. - Optimiere die Socket-Optionen für eine schnellere Fehlererkennung und verbessere die Handhabung von Anfragen.
This commit is contained in:
197
deploy/README.md
Normal file
197
deploy/README.md
Normal file
@@ -0,0 +1,197 @@
|
||||
# YourChat Deployment Scripts
|
||||
|
||||
Diese Scripts ermöglichen das einfache Deployment von YourChat auf Ubuntu 22.04 Servern.
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- Ubuntu 22.04 LTS Server
|
||||
- Sudo-Rechte
|
||||
- Internetverbindung für Paket-Downloads
|
||||
|
||||
## Scripts Übersicht
|
||||
|
||||
### 1. `deploy.sh` - Vollständiges Deployment
|
||||
**Verwendung:** `./deploy/deploy.sh`
|
||||
|
||||
Führt alle Deploy-Schritte automatisch aus:
|
||||
- Installation der Abhängigkeiten
|
||||
- Bauen der Anwendung
|
||||
- Installation als Systemdienst
|
||||
- Konfigurations-Setup
|
||||
|
||||
### 2. `install_dependencies.sh` - Abhängigkeiten installieren
|
||||
**Verwendung:** `./deploy/install_dependencies.sh`
|
||||
|
||||
Installiert alle benötigten Pakete:
|
||||
- GCC-13 (als Standard-Compiler)
|
||||
- CMake, Build-Tools
|
||||
- OpenSSL, jsoncpp, pqxx
|
||||
- PostgreSQL (optional)
|
||||
|
||||
### 3. `build.sh` - Anwendung bauen
|
||||
**Verwendung:** `./deploy/build.sh`
|
||||
|
||||
Baut die Anwendung mit aktiviertem Debug-Flag:
|
||||
- Erstellt `build/` Verzeichnis
|
||||
- Konfiguriert CMake mit `YC_DEBUG=ON`
|
||||
- Kompiliert mit allen verfügbaren CPU-Kernen
|
||||
|
||||
### 4. `install.sh` - Anwendung installieren
|
||||
**Verwendung:** `./deploy/install.sh`
|
||||
|
||||
Installiert die Anwendung als Systemdienst:
|
||||
- Erstellt `/opt/yourchat/` Verzeichnis
|
||||
- Kopiert Binaries und Konfiguration
|
||||
- Erstellt systemd Service
|
||||
- Erstellt `yourchat` Benutzer
|
||||
- Aktiviert Service
|
||||
|
||||
### 5. `update_config.sh` - Konfiguration aktualisieren
|
||||
**Verwendung:** `./deploy/update_config.sh`
|
||||
|
||||
Aktualisiert die Konfiguration sicher:
|
||||
- Überschreibt **keine** bestehenden Einträge
|
||||
- Ergänzt nur fehlende Konfigurationsoptionen
|
||||
- Erstellt automatisch Backups
|
||||
- Zeigt Änderungen an
|
||||
|
||||
### 6. `update.sh` - Anwendung aktualisieren
|
||||
**Verwendung:** `./deploy/update.sh`
|
||||
|
||||
Für zukünftige Updates:
|
||||
- Stoppt Service
|
||||
- Baut neue Version
|
||||
- Aktualisiert Binaries
|
||||
- Aktualisiert Konfiguration
|
||||
- Startet Service neu
|
||||
|
||||
## Schnellstart
|
||||
|
||||
1. **Repository klonen/übertragen:**
|
||||
```bash
|
||||
# Auf dem Ubuntu Server
|
||||
git clone <your-repo-url>
|
||||
cd YourChat
|
||||
```
|
||||
|
||||
2. **Vollständiges Deployment:**
|
||||
```bash
|
||||
chmod +x deploy/*.sh
|
||||
./deploy/deploy.sh
|
||||
```
|
||||
|
||||
3. **Service starten:**
|
||||
```bash
|
||||
sudo systemctl start yourchat
|
||||
sudo systemctl status yourchat
|
||||
```
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Die Konfiguration wird unter `/opt/yourchat/config/chatconfig.json` installiert.
|
||||
|
||||
**Wichtige Einstellungen:**
|
||||
- `server.port`: Port für den Chat-Server (Standard: 1235)
|
||||
- `database.*`: Datenbankverbindung
|
||||
- `rooms`: Vordefinierte Chat-Räume
|
||||
|
||||
**Konfiguration bearbeiten:**
|
||||
```bash
|
||||
sudo nano /opt/yourchat/config/chatconfig.json
|
||||
```
|
||||
|
||||
## Service-Verwaltung
|
||||
|
||||
```bash
|
||||
# Service starten
|
||||
sudo systemctl start yourchat
|
||||
|
||||
# Service stoppen
|
||||
sudo systemctl stop yourchat
|
||||
|
||||
# Service neu starten
|
||||
sudo systemctl restart yourchat
|
||||
|
||||
# Status prüfen
|
||||
sudo systemctl status yourchat
|
||||
|
||||
# Logs anzeigen
|
||||
sudo journalctl -u yourchat -f
|
||||
|
||||
# Service deaktivieren (startet nicht automatisch)
|
||||
sudo systemctl disable yourchat
|
||||
```
|
||||
|
||||
## Firewall
|
||||
|
||||
Falls eine Firewall aktiv ist, den Port freigeben:
|
||||
```bash
|
||||
sudo ufw allow 1235/tcp
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Service startet nicht
|
||||
```bash
|
||||
# Logs prüfen
|
||||
sudo journalctl -u yourchat -n 50
|
||||
|
||||
# Konfiguration prüfen
|
||||
sudo cat /opt/yourchat/config/chatconfig.json | python3 -m json.tool
|
||||
```
|
||||
|
||||
### Port bereits belegt
|
||||
```bash
|
||||
# Prüfen welcher Prozess den Port verwendet
|
||||
sudo netstat -tlnp | grep 1235
|
||||
|
||||
# Port in Konfiguration ändern
|
||||
sudo nano /opt/yourchat/config/chatconfig.json
|
||||
```
|
||||
|
||||
### Berechtigungsprobleme
|
||||
```bash
|
||||
# Berechtigungen korrigieren
|
||||
sudo chown -R yourchat:yourchat /opt/yourchat
|
||||
sudo chmod 755 /opt/yourchat
|
||||
sudo chmod 644 /opt/yourchat/config/chatconfig.json
|
||||
```
|
||||
|
||||
## Backup & Wiederherstellung
|
||||
|
||||
### Backup erstellen
|
||||
```bash
|
||||
# Konfiguration
|
||||
sudo cp /opt/yourchat/config/chatconfig.json /backup/chatconfig.json.backup
|
||||
|
||||
# Datenbank (falls lokal)
|
||||
sudo pg_dump yourchat > /backup/database.backup
|
||||
```
|
||||
|
||||
### Wiederherstellung
|
||||
```bash
|
||||
# Konfiguration
|
||||
sudo cp /backup/chatconfig.json.backup /opt/yourchat/config/chatconfig.json
|
||||
sudo chown yourchat:yourchat /opt/yourchat/config/chatconfig.json
|
||||
|
||||
# Service neu starten
|
||||
sudo systemctl restart yourchat
|
||||
```
|
||||
|
||||
## Updates
|
||||
|
||||
Für zukünftige Updates:
|
||||
```bash
|
||||
# Code aktualisieren
|
||||
git pull
|
||||
|
||||
# Anwendung updaten
|
||||
./deploy/update.sh
|
||||
```
|
||||
|
||||
## Sicherheit
|
||||
|
||||
- Die Anwendung läuft als dedizierter `yourchat` Benutzer
|
||||
- Konfigurationsdateien haben restriktive Berechtigungen
|
||||
- Service startet nicht automatisch nach Reboot (kann mit `systemctl enable` aktiviert werden)
|
||||
- Logs werden über systemd journal verwaltet
|
||||
Reference in New Issue
Block a user