Einleitung
\n\nSie haben eine tolle Anwendung in Rust geschrieben. Sie ist schnell, sicher und stürzt nicht ab. Aber wie sorgen Sie dafür, dass sie 24/7 auf einem entfernten Server läuft und für Benutzer verfügbar ist? Die Bereitstellung einer Rust-Anwendung auf einem VPS (Virtual Private Server) ist ein Prozess, der die Kompilierung der Binärdatei, die Einrichtung der Umgebung, den Start als Systemdienst und oft die Installation eines Reverse Proxy umfasst.
\n\nIn diesem Artikel gehen wir den gesamten Weg von Null bis zu einer voll funktionsfähigen Rust-Anwendung, die auf einem VPS mit Ubuntu bereitgestellt wird. Sie erfahren, wie Sie den Server vorbereiten, das Projekt erstellen, den automatischen Start konfigurieren und die Sicherheit gewährleisten. Diese Anleitung eignet sich sowohl für Webserver (Actix-web, Axum, Rocket) als auch für andere Rust-Daemons.
\n\nLassen Sie uns beginnen.
\n\n1. Server- und Umgebungsvorbereitung
\n\nBevor Sie Code bereitstellen, müssen Sie den „Boden“ vorbereiten. Wir verwenden Ubuntu 22.04 LTS, aber die Anweisungen gelten auch für Debian.
\n\nVerbindung zum Server und grundlegende Einrichtung
\n\nVerbinden Sie sich per SSH mit Ihrem VPS:
\n\nssh root@ihre-server-ip\n\nAktualisieren Sie die Pakete und erstellen Sie einen Benutzer (als root zu arbeiten ist keine gute Praxis):
\n\napt update && apt upgrade -y\nadduser deployer\nusermod -aG sudo deployer\n\nRichten Sie SSH-Schlüssel für den neuen Benutzer ein, um nicht jedes Mal ein Passwort eingeben zu müssen.
\n\nInstallation von Rust auf dem Server
\n\nDie zuverlässigste Methode ist die Verwendung des offiziellen Skripts rustup. Wechseln Sie zum Benutzer deployer und führen Sie Folgendes aus:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n\nStarten Sie nach der Installation die Shell neu oder führen Sie Folgendes aus:
\n\nsource $HOME/.cargo/env\n\nÜberprüfen Sie die Version:
\n\nrustc --version\n\nFür die Produktionserstellung benötigen wir statisches Linken (damit die Binärdatei auf jedem Linux ohne zusätzliche Bibliotheken funktioniert). Installieren Sie musl-tools:
\n\nsudo apt install musl-tools -y\nrustup target add x86_64-unknown-linux-musl\n\n2. Erstellung und Übertragung der Binärdatei auf den Server
\n\nEs ist besser, die Anwendung auf Ihrem lokalen Rechner (oder in CI/CD) zu erstellen und dann die fertige Binärdatei auf den Server zu kopieren. Das ist schneller und belastet den VPS nicht.
\n\nErstellung der Produktionsversion
\n\nFühren Sie auf Ihrem lokalen Computer im Projektordner Folgendes aus:
\n\ncargo build --release --target x86_64-unknown-linux-musl\n\nDies erstellt eine statisch gelinkte Binärdatei ohne Abhängigkeiten von glibc. Die Größe wird größer sein, aber sie wird auf jedem Linux laufen.
\n\nBeispiel eines einfachen Webservers mit Actix-web zum Testen (Datei src/main.rs):
use actix_web::{web, App, HttpServer, Responder};\n\nasync fn hello() -> impl Responder {\n "Hello from Rust on VPS!"\n}\n\n#[actix_web::main]\nasync fn main() -> std::io::Result<()> {\n HttpServer::new(|| {\n App::new().route("/", web::get().to(hello))\n })\n .bind("0.0.0.0:8080")?\n .run()\n .await\n}\n\nKopieren auf den Server
\n\nVerwenden Sie scp zum sicheren Kopieren:
scp ./target/x86_64-unknown-linux-musl/release/ihr_projekt deployer@ihre-server-ip:/home/deployer/\n\nVerschieben Sie die Binärdatei auf dem Server nach /usr/local/bin:
sudo mv /home/deployer/ihr_projekt /usr/local/bin/my-rust-app\nsudo chmod +x /usr/local/bin/my-rust-app\n\n3. Konfiguration von systemd für den automatischen Start
\n\nDamit die Anwendung beim Systemstart startet, nach einem Absturz neu startet und im Hintergrund läuft, erstellen wir einen systemd-Dienst.
\n\nErstellen Sie die Dienstdatei:
\n\nsudo nano /etc/systemd/system/rust-app.service\n\nFügen Sie die folgende Konfiguration ein (ersetzen Sie deployer durch Ihren Benutzer):
[Unit]\nDescription=Rust Application\nAfter=network.target\n\n[Service]\nType=simple\nUse