Bereitstellung einer JavaScript-Anwendung auf der VPS: Schritt-für-Schritt-Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten
Here is the translated HTML article in German, with all HTML tags, code, and specific terms preserved exactly as instructed.

Einleitung: Warum VPS die beste Wahl für die Produktion ist

Die Entwicklung einer JavaScript-Anwendung mit Node.js ist nur die halbe Miete. Der zweite, ebenso wichtige Teil ist das Deployment auf einem Produktionsserver. Viele Anfänger-Entwickler nutzen kostenlose Hosting-Dienste (Heroku, Render, Vercel), aber für ernsthafte Projekte wird irgendwann ein VPS (Virtual Private Server) benötigt.

Ein VPS gibt Ihnen die volle Kontrolle über die Umgebung: Sie wählen die Node.js-Version, konfigurieren den Webserver, verwalten Prozesse und Ressourcen. In diesem Artikel gehen wir Schritt für Schritt durch den Prozess des Deployments einer JavaScript-Anwendung auf einem VPS mit modernen Werkzeugen: Nginx als Reverse Proxy, PM2 für die Prozessverwaltung, Let's Encrypt für SSL und GitHub Actions für die Automatisierung.



Schritt 1: Servervorbereitung und Installation der benötigten Software

Der erste Schritt ist die Verbindung zu Ihrem VPS (normalerweise per SSH) und die Installation eines grundlegenden Werkzeugsatzes. Nehmen wir an, Sie verwenden Ubuntu 22.04 LTS.

# Update packagessudo apt update && sudo apt upgrade -y

# Install Node.js (recommended via NodeSource)curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -sudo apt install -y nodejs

# Check versionsnode -vnpm -v

# Install Git (if not already installed)sudo apt install git -y

# Install Nginxsudo apt install nginx -y

Konfigurieren Sie außerdem unbedingt eine grundlegende Firewall (UFW):

sudo ufw allow OpenSSHsudo ufw allow 'Nginx Full'sudo ufw enable


Schritt 2: Repository klonen und die Anwendung konfigurieren

Jetzt müssen Sie den Anwendungscode auf den Server übertragen. Der einfachste Weg ist, das Repository von GitHub/GitLab zu klonen.

# Navigate to the /var/www directory (standard for web projects)cd /var/www

# Clone the repository (replace with your URL)sudo git clone https://github.com/your-username/your-repository.git myapp

# Give permissions to the current usersudo chown -R $USER:$USER /var/www/myapp

# Navigate to the application foldercd /var/www/myapp

# Install dependenciesnpm install --production

Erstellen Sie eine .env-Datei für Umgebungsvariablen (Port, API-Schlüssel, Datenbank-Verbindungszeichenfolge):

# Example .envPORT=3000NODE_ENV=productionDATABASE_URL=mongodb://localhost:27017/myappJWT_SECRET=your-secret-key


Schritt 3: PM2 für die Prozessverwaltung konfigurieren

PM2 ist ein Prozessmanager für Node.js, der die Anwendung automatisch neu startet, falls sie abstürzt, und sie im Hintergrund am Laufen hält.

# Install PM2 globallysudo npm install -g pm2

# Start the application (if entry point is app.js or server.js)pm2 start app.js --name "myapp"

# Save the process list for auto-start on rebootpm2 savepm2 startup systemd

Nach der Ausführung von pm2 startup sehen Sie einen Befehl, der mit Root-Rechten ausgeführt werden muss. Kopieren Sie ihn und führen Sie ihn aus.

Sie können den Status mit dem Befehl pm2 status überprüfen. Wenn die Anwendung läuft, ist sie unter http://your-ip:3000 (dem Port aus .env) erreichbar.



Schritt 4: Nginx als Reverse Proxy konfigurieren

Der direkte Zugriff auf Node.js über Port 3000 ist keine empfohlene Vorgehensweise. Es ist besser, Nginx als Proxyserver zu verwenden, der Anfragen auf Port 80 (HTTP) entgegennimmt und an Ihre Anwendung weiterleitet.

Erstellen Sie eine Konfigurationsdatei für Ihre Domain (oder IP):

sudo nano /etc/nginx/sites-available/myapp

Fügen Sie den folgenden Code ein:

server {    listen 80;    server_name your-domain.ru www.your-domain.ru;

location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connectio

Blogs

Buchempfehlungen