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 --releaseDadurch 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 = true1.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=80801.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/.env2. 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.targetAktivieren Sie den Dienst:
sudo systemctl daemon-reloadsudo systemctl enable myappsudo systemctl start myappsudo systemctl status myapp2.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 nginx2.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.com3. 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