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-dataausführen - Restart=always — automatischer Neustart