Bereitstellung einer Rust-Anwendung auf einem VPS: Schritt-für-Schritt-Anleitung von A bis Z

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

Einleitung: Warum Rust ideal für die Produktion ist und wie man es bereitstellt

Rust ist eine Systemprogrammiersprache, die die Leistung von C++ mit Speichersicherheit kombiniert. Dank des Fehlens eines Garbage Collectors und der Möglichkeit, in eine native Binärdatei zu kompilieren, eignen sich Rust-Anwendungen ideal für die Bereitstellung auf einem VPS (Virtual Private Server). In diesem Artikel durchlaufen wir den gesamten Bereitstellungszyklus: vom Erstellen des Projekts bis zur Konfiguration des Reverse Proxy und der Überwachung. Sie erfahren, wie Sie Ihre Rust-Anwendung in einen stabilen Produktionsdienst verwandeln.



1. Vorbereitung: Erstellen der Rust-Anwendung für den VPS

Der erste Schritt besteht darin, eine optimierte Binärdatei zu erstellen. Dazu benötigen wir das Rust-Toolkit auf Ihrem lokalen Rechner (oder auf dem Server).



1.1. Kompilierung im Release-Modus

Führen Sie im Stammverzeichnis des Projekts den folgenden Befehl aus:

cargo build --release

Dadurch wird eine optimierte Binärdatei im Ordner target/release/ erstellt. Für Webanwendungen mit actix-web oder rocket kann die Dateigröße 5-15 MB betragen. Um die Größe zu reduzieren, können Sie Folgendes zu Cargo.toml hinzufügen:

[profile.release]opt-level = 3lto = truecodegen-units = 1strip = true


1.2. Konfiguration der Umgebungsvariablen

Erstellen Sie eine Datei .env.prod für die Produktionskonfiguration. Beispiel für einen Webserver:

DATABASE_URL=postgres://user:pass@localhost:5432/mydbRUST_LOG=infoSERVER_HOST=0.0.0.0SERVER_PORT=8080


1.3. Übertragen der Dateien auf den VPS

Kopieren Sie die Binärdatei, die statischen Dateien und die Konfiguration auf den Server. Verwenden Sie scp oder rsync:

scp target/release/myapp user@your-vps-ip:/home/user/app/scp -r static/ user@your-vps-ip:/home/user/app/static/scp .env.prod user@your-vps-ip:/home/user/app/.env


2. Serverkonfiguration: systemd und Nginx

Für den automatischen Start der Anwendung beim Neustart des Servers und für die Sicherheit verwenden wir systemd und Nginx.



2.1. Erstellen eines systemd-Dienstes

Erstellen Sie eine Datei /etc/systemd/system/myapp.service:

[Unit]Description=Rust web applicationAfter=network.target

[Service]User=www-dataWorkingDirectory=/home/user/appExecStart=/home/user/app/myappRestart=alwaysRestartSec=10EnvironmentFile=/home/user/app/.env

[Install]WantedBy=multi-user.target

Aktivieren Sie den Dienst:

sudo systemctl daemon-reloadsudo systemctl enable myappsudo systemctl start myappsudo systemctl status myapp


2.2. Konfiguration von Nginx als Reverse Proxy

Die Rust-Anwendung wird Port 8080 (intern) abhören, während Nginx externe Anfragen auf Port 80/443 entgegennimmt. Erstellen Sie die Konfiguration /etc/nginx/sites-available/myapp:

server {    listen 80;    server_name your-domain.com;

location / { proxy_pass http://127.0.0.1:8080; 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; }

location /static/ { alias /home/user/app/static/; expires 30d; }}

Aktivieren Sie die Website:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginx


2.3. HTTPS-Konfiguration (optional)

Installieren Sie Certbot und erhalten Sie ein SSL-Zertifikat:

sudo apt install certbot python3-certbot-nginxsudo certbot --nginx -d your-domain.com


3. Datenbankverwaltung und Migrationen

Wenn Ihre Rust-Anwendung eine Datenbank verwendet (z. B. PostgreSQL mit diesel oder sqlx), richten Sie diese auf dem VPS ein.



3.1. Installation von PostgreSQL

sudo apt updatesudo apt install postgresql postgres                

Blogs

Buchempfehlungen