Bereitstellung einer Rust-Anwendung auf einem 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

Einleitung: Warum Rust ideal für die Produktion ist

Rust ist nicht nur eine trendige Programmiersprache. Seine Hauptvorteile sind Speichersicherheit, hohe Leistung und vorhersagbares Verhalten. Wenn Sie in Rust schreiben, erhalten Sie eine Binärdatei, die auf jedem Linux-Server ohne Installation einer virtuellen Maschine oder eines Interpreters ausgeführt werden kann. Dies macht die Bereitstellung von Rust-Anwendungen auf VPS unglaublich einfach und effizient.

In diesem Artikel werden wir den gesamten Prozess durchgehen: vom Bau des Projekts bis zur Einrichtung einer Produktionsumgebung mit Nginx und systemd. Sie lernen, wie Sie die Anwendung richtig kompilieren, den automatischen Start konfigurieren und die Sicherheit gewährleisten.

Vorbereitung des VPS und der Umgebung

Auswahl und Einrichtung des Servers

Jeder VPS mit Linux (Ubuntu 22.04 LTS ist die optimale Wahl) eignet sich für die Bereitstellung einer Rust-Anwendung. Mindestanforderungen: 1 vCPU, 1 GB RAM, 20 GB SSD. Dies ist für die meisten Webdienste in Rust ausreichend.

Verbinden Sie sich zunächst per SSH mit dem Server:

ssh root@your-ip-address

Aktualisieren Sie die Pakete und installieren Sie die notwendigen Werkzeuge:

apt update && apt upgrade -y
apt install curl git build-essential pkg-config libssl-dev -y

Installation von Rust auf dem Server

Obwohl wir die Binärdatei lokal erstellen werden, ist es manchmal praktisch, direkt auf dem Server zu kompilieren. Installieren Sie Rust:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

Überprüfen Sie die Installation:

rustc --version
cargo --version

Erstellen der Rust-Anwendung für die Produktion

Optimierung des Builds

Für die Produktion müssen Sie die Anwendung mit dem --release-Flag erstellen. Dies aktiviert Optimierungen, die die Binärgröße reduzieren und ihre Ausführung beschleunigen. Fügen Sie die folgenden Einstellungen zu Cargo.toml hinzu:

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true
  • opt-level = 3 — maximale Geschwindigkeitsoptimierung
  • lto = true — Link Time Optimization, reduziert die Größe und beschleunigt
  • codegen-units = 1 — erhöht die Build-Zeit, verbessert aber die Optimierung
  • strip = true — entfernt Debug-Informationen, reduziert die Binärdatei um 30-50%

Erstellen der Binärdatei

Führen Sie den Befehl auf Ihrem lokalen Rechner (oder CI-Server) aus:

cargo build --release

Die fertige Binärdatei befindet sich in target/release/project-name. Ihre Größe sollte klein sein — 2 bis 10 MB für eine typische Webanwendung.

Kopieren auf den Server

Verwenden Sie scp oder rsync, um die Datei zu übertragen:

scp target/release/your-application root@your-ip-address:/opt/app/

Erstellen Sie das Verzeichnis /opt/app vorab auf dem Server:

mkdir -p /opt/app
mkdir -p /opt/app/static   # falls statische Dateien vorhanden sind

Einrichten von systemd für den automatischen Start

Erstellen des Dienstes

Systemd ist der Standard-Dienstmanager in Linux. Es startet Ihre Anwendung automatisch nach einem Server-Neustart und startet sie bei einem Absturz neu.

Erstellen Sie die Dienstdatei:

nano /etc/systemd/system/rust-app.service

Fügen Sie die Konfiguration hinzu:

[Unit]
Description=Rust Web Application
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/opt/app
ExecStart=/opt/app/your-application
Restart=always
RestartSec=5
Environment=RUST_LOG=info
Environment=DATABASE_URL=postgres://user:pass@localhost/dbname

[Install]
WantedBy=multi-user.target

Wichtige Parameter:

  • User — als unprivilegierter Benutzer www-data ausführen
  • Restart=always — automatischer Neustart

Blogs

Buchempfehlungen