PHP-App deployen: LAMP und LEMP Stack Anleitung
Vollständige Anleitung zum Deployen von PHP-Anwendungen auf einem VPS. LAMP vs LEMP Vergleich, Apache/Nginx + PHP-FPM + MySQL Setup, Virtual Host Konfiguration und PHP-Versionsverwaltung.
Vollständige Anleitung zum Deployen von Node.js-Anwendungen auf einem VPS. Node.js-Installation mit nvm, PM2 Process Manager, Nginx Reverse Proxy, SSL-Zertifikat und Umgebungsvariablen.
Das Deployen von Node.js-Anwendungen in einer Produktionsumgebung ist mit den richtigen Tools und der richtigen Konfiguration ein systematischer Prozess. Diese Anleitung behandelt alles von der Node.js-Installation mit nvm über den PM2 Process Manager bis hin zur Nginx Reverse Proxy-Konfiguration und SSL-Zertifikat-Einrichtung.
nvm (Node Version Manager) ermöglicht die Verwaltung mehrerer Node.js-Versionen und wird für Produktionsumgebungen empfohlen.
# nvm-Installationsskript herunterladen und ausführen
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# Shell neu laden
source ~/.bashrc
# nvm-Version prüfen
nvm --version
# Neueste LTS-Version installieren
nvm install --lts
# Bestimmte Version installieren
nvm install 20.11.0
# Standardversion festlegen
nvm use --lts
nvm alias default node
# Node.js und npm Versionen prüfen
node --version
npm --version
Verwenden Sie in der Produktion immer die LTS-Version (Long Term Support). LTS-Versionen erhalten länger Sicherheitsupdates.
# Anwendungsverzeichnis erstellen
sudo mkdir -p /var/www/myapp
sudo chown $USER:$USER /var/www/myapp
# Repository klonen
cd /var/www
git clone https://github.com/benutzer/myapp.git
cd myapp
# Abhängigkeiten installieren (Produktion)
npm install --production
# .env-Datei erstellen
nano /var/www/myapp/.env
NODE_ENV=production
PORT=3000
DATABASE_URL=postgresql://user:password@localhost:5432/mydb
JWT_SECRET=ihr-geheimer-schluessel
REDIS_URL=redis://localhost:6379
# .env-Datei absichern
chmod 600 /var/www/myapp/.env
Fügen Sie die .env-Datei niemals zu Ihrem Git-Repository hinzu. Fügen Sie .env zu Ihrer .gitignore-Datei hinzu.
PM2 ist das beliebteste Tool zur Verwaltung von Node.js-Anwendungen in der Produktion. Es bietet automatische Neustarts, Log-Verwaltung und Cluster-Modus.
# PM2 global installieren
npm install -g pm2
# PM2-Version prüfen
pm2 --version
# Einfacher Start
pm2 start app.js --name myapp
# Mit npm start
pm2 start npm --name myapp -- start
# Cluster-Modus (Instanzen gleich CPU-Kerne)
pm2 start app.js --name myapp -i max
module.exports = {
apps: [
{
name: 'myapp',
script: './app.js',
instances: 'max',
exec_mode: 'cluster',
env_production: {
NODE_ENV: 'production',
PORT: 3000
},
error_file: '/var/log/pm2/myapp-error.log',
out_file: '/var/log/pm2/myapp-out.log',
max_memory_restart: '500M',
autorestart: true
}
]
};
# Mit Ecosystem-Datei starten
pm2 start ecosystem.config.js --env production
# PM2 Grundbefehle
pm2 list # Laufende Apps auflisten
pm2 logs myapp # Logs anzeigen
pm2 restart myapp # Neu starten
pm2 reload myapp # Zero-Downtime-Reload
pm2 stop myapp # Stoppen
pm2 monit # Echtzeit-Überwachung
# Startup-Skript generieren
pm2 startup
# Ausgegebenen Befehl ausführen
# Aktuelle PM2-Liste speichern
pm2 save
# Nginx installieren
sudo apt update
sudo apt install nginx -y
# Konfigurationsdatei erstellen
sudo nano /etc/nginx/sites-available/myapp
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
# Site aktivieren
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
# Certbot installieren
sudo apt install certbot python3-certbot-nginx -y
# SSL-Zertifikat erhalten
sudo certbot --nginx -d example.com -d www.example.com
# Automatische Erneuerung testen
sudo certbot renew --dry-run
# Neuen Code holen
cd /var/www/myapp
git pull origin main
# Abhängigkeiten aktualisieren
npm install --production
# Zero-Downtime-Neustart mit PM2
pm2 reload myapp
# Logs prüfen
pm2 logs myapp --lines 50
Auf REXE-Servern können Sie Port 3000 über das Path Panel schließen. Da Nginx den Traffic von Port 80/443 weiterleitet, ist kein externer Zugriff auf den Node.js-Port erforderlich.
Ihre Node.js-Anwendung läuft jetzt in einer Produktionsumgebung, die von PM2 verwaltet wird, hinter einem Nginx Reverse Proxy und mit SSL gesichert. Mit dem Cluster-Modus von PM2 können Sie CPU-Kerne voll ausnutzen und mit pm2 reload Zero-Downtime-Updates durchführen.
Überprüfen Sie die PM2-Logs mit 'pm2 logs myapp'. Häufige Ursachen: fehlende Umgebungsvariablen, Port-Konflikt oder Syntaxfehler. Überwachen Sie CPU/RAM-Nutzung in Echtzeit mit 'pm2 monit'. Bei einem Speicherleck fügen Sie den Parameter 'max_memory_restart' zur ecosystem.config.js hinzu.
Dieser Fehler bedeutet normalerweise, dass die Node.js-Anwendung nicht läuft. Prüfen Sie mit 'pm2 status', ob die App im Status 'running' ist. Überprüfen Sie Fehlermeldungen mit 'pm2 logs'. Verifizieren Sie mit 'sudo nginx -t', dass Nginx zum richtigen Port proxyt.
Jede Anwendung muss einen anderen Port verwenden (3000, 3001, 3002 usw.). Geben Sie jedem in PM2 einen eindeutigen Namen. Erstellen Sie in Nginx für jede Domain einen separaten Server-Block und proxyen Sie zum entsprechenden Port. Alle Apps sind über Port 80/443 durch Nginx erreichbar.
Seien Sie beim Wechseln von Versionen mit nvm vorsichtig. Installieren Sie die neue Version, testen Sie Ihre Anwendung, dann aktualisieren Sie den Standard mit 'nvm alias default'. Möglicherweise müssen Sie auch das PM2-Startup-Skript mit dem neuen Node.js-Pfad neu generieren.
Vollständige Anleitung zum Deployen von PHP-Anwendungen auf einem VPS. LAMP vs LEMP Vergleich, Apache/Nginx + PHP-FPM + MySQL Setup, Virtual Host Konfiguration und PHP-Versionsverwaltung.
Anleitung zur Installation und Optimierung von WordPress auf einem VPS. LEMP Stack Setup, wp-config.php Einstellungen, Dateiberechtigungen, SSL, OPcache Performance-Optimierung und Sicherheitshärtung.
Anleitung zum Deployen von Python/Django-Anwendungen auf einem VPS. Virtualenv-Setup, Django-Produktionseinstellungen, Gunicorn WSGI-Server, Nginx Reverse Proxy, systemd-Dienst und statische Dateiverwaltung.