在VPS上部署Rust应用:分步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么 Rust 是生产环境的理想选择

Rust 不仅仅是一种时髦的编程语言。它的主要优势在于内存安全、高性能和可预测的行为。当你用 Rust 编写代码时,你会得到一个二进制文件,无需安装虚拟机或解释器即可在任何 Linux 服务器上运行。这使得在 VPS 上部署 Rust 应用程序变得异常简单和高效。

在本文中,我们将分解完整流程:从项目构建到使用 Nginx 和 systemd 配置生产环境。你将学习如何正确编译应用程序、配置自动启动以及确保安全性。

准备 VPS 和环境

选择并配置服务器

任何运行 Linux(Ubuntu 22.04 LTS 是最佳选择)的 VPS 都适合部署 Rust 应用程序。最低要求:1 vCPU、1 GB RAM、20 GB SSD。这对于大多数基于 Rust 的 Web 服务来说已经足够。

首先,通过 SSH 连接到服务器:

ssh root@你的-ip-地址

更新软件包并安装必要的工具:

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

在服务器上安装 Rust

虽然我们将在本地构建二进制文件,但有时直接在服务器上编译也很方便。安装 Rust:

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

验证安装:

rustc --version
cargo --version

为生产环境构建 Rust 应用程序

优化构建

对于生产环境,需要使用 --release 标志构建应用程序。这会启用优化,从而减小二进制文件大小并提高其运行速度。在 Cargo.toml 中添加以下设置:

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true
  • opt-level = 3 — 最大速度优化
  • lto = true — 链接时优化,减小大小并提高速度
  • codegen-units = 1 — 增加构建时间,但改善优化效果
  • strip = true — 移除调试信息,将二进制文件减小 30-50%

构建二进制文件

在本地机器(或 CI 服务器)上执行命令:

cargo build --release

准备好的二进制文件位于 target/release/项目名称。其大小应该很小——对于典型的 Web 应用程序来说,大约在 2 到 10 MB 之间。

复制到服务器

使用 scp 或 rsync 传输文件:

scp target/release/你的-应用程序 root@你的-ip-地址:/opt/app/

提前在服务器上创建 /opt/app 目录:

mkdir -p /opt/app
mkdir -p /opt/app/static   # 如果有静态文件

配置 systemd 以实现自动启动

创建服务

Systemd 是 Linux 中的标准服务管理器。它会在服务器重启后自动启动你的应用程序,并在崩溃时重新启动它。

创建服务文件:

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

添加配置:

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

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/opt/app
ExecStart=/opt/app/你的-应用程序
Restart=always
RestartSec=5
Environment=RUST_LOG=info
Environment=DATABASE_URL=postgres://user:pass@localhost/dbname

[Install]
WantedBy=multi-user.target

重要参数:

  • User — 以非特权用户 www-data 身份运行
  • Restart=always — 自动重启

博客

书籍推荐