Ubuntu下Rust项目如何部署
在Ubuntu上部署Rust项目,先安装Rust工具链,用cargobuild--release编译,再通过scp传输可执行文件。需配置环境变量和系统依赖,推荐使用systemd管理服务以支持开机自启与自动重启,亦可用Docker容器化部署保障环境一致性。
在Ubuntu上部署Rust项目:从环境准备到生产级落地
把Rust项目部署到Ubuntu服务器上,这件事说难不难,说简单也不简单。从环境搭建、项目构建,到生产环境下的进程管理和监控,每一步都有不少细节值得留意。这篇指南把整个过程梳理了一遍,希望能帮你少走一些弯路。
1. 准备Ubuntu环境
在部署之前,先确保系统里已经装好了Rust工具链——包括rustc编译器和Cargo包管理器,以及一些必要的依赖。官方推荐的安装方式是使用rustup,这套工具链管理器用起来最顺手。

安装步骤大致如下:
# 安装curl(如果还没安装的话)
sudo apt install curl
# 下载并运行rustup安装脚本
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 按提示完成安装,重启终端或执行以下命令激活环境
source $HOME/.cargo/env
# 验证安装(显示Rust版本则说明没问题)
rustc --version && cargo --version
另外,由于国内网络环境的特殊性,建议提前配置好国内镜像源(比如清华或中科大的镜像),这一步能极大提升依赖下载的速度。修改~/.cargo/config.toml文件,添加以下内容即可:
[source.crates-io]
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index/"
2. 构建Rust项目
进入项目根目录(就是包含Cargo.toml的那个文件夹),执行下面这条命令来构建发布版本——编译时会开启优化,生成的可执行文件更适合直接扔到生产环境去跑:
cargo build --release
构建完成后,可执行文件会乖乖待在target/release/目录里,文件名就是你在Cargo.toml里定义的项目名。比如项目叫my_project,那生成的就是target/release/my_project。如果只是想调试,用cargo build就行,生成的文件在target/debug/目录下,会包含符号信息,排查问题更方便。
3. 部署可执行文件
把target/release/下的可执行文件传到目标服务器上。最常用的工具是scp,命令长这样:
scp target/release/my_project user@your_server_ip:/path/to/deploy
记得把user换成实际的服务器用户名,your_server_ip换成IP地址,/path/to/deploy是你想放文件的位置(比如/opt/my_rust_app)。路径别搞错了,后面的步骤都得基于这个路径来操作。
4. 配置服务器环境
这一步其实很容易被忽视,但恰恰很关键。如果项目依赖了外部库(比如PostgreSQL客户端、OpenSSL之类的),那服务器上也得装上对应的系统级依赖。举个例子,如果项目需要连PostgreSQL:
sudo apt install libpq-dev
另外,环境变量的配置也不能马虎。比如数据库连接字符串、API密钥、日志级别这些,都可以通过export命令临时设置,或者直接写到~/.bashrc(用户级)或/etc/environment(系统级)文件里。示例如下:
export DATABASE_URL="postgres://user:password@localhost:5432/my_db"
export RUST_LOG="info"
执行source ~/.bashrc就能让这些变量立即生效。
5. 运行Rust项目
在服务器上进入到目标路径,直接执行可执行文件即可:
cd /path/to/deploy
./my_project
不过这种前台运行的方式并不适合生产环境,一关终端程序就停了。想让它在后台托管运行,可以用nohup:
nohup ./my_project > app.log 2>&1 &
这样标准输出和错误输出都会被重定向到app.log文件里,方便后续查看日志。
6. 使用systemd管理服务(推荐)
如果希望项目能在服务器重启后自动启动,或者程序崩溃后自动恢复运行,那用systemd来管理是最靠谱的选择。具体操作如下:
- 创建服务文件:
sudo nano /etc/systemd/system/my_rust_app.service
- 填入以下配置(记得根据实际情况修改路径和用户名):
[Unit]
Description=My Rust Application
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/opt/my_rust_app
ExecStart=/opt/my_rust_app/my_project
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
- 重新加载systemd配置,启动服务并设置开机自启:
sudo systemctl daemon-reload
sudo systemctl start my_rust_app
sudo systemctl enable my_rust_app
- 查看服务状态:
sudo systemctl status my_rust_app
如果输出显示“active (running)”,那就说明服务已经跑起来了。这一步是生产环境部署的标配,强烈建议用起来。
7. (可选)容器化部署(Docker)
如果你的应用需要跨平台部署,或者希望有更彻底的环境隔离,那用Docker容器化是一个不错的选择。做法如下:
- 安装Docker:
sudo apt update
sudo apt install docker.io
sudo systemctl start docker && sudo systemctl enable docker
- 在项目根目录下创建
Dockerfile,内容参考:
FROM rust:1.70
WORKDIR /app
COPY . .
RUN cargo build --release
EXPOSE 8080
CMD ["./target/release/my_project"]
- 构建镜像:
docker build -t my_rust_app .
- 运行容器:
docker run -d -p 8080:8080 --name my_rust_container my_rust_app
把容器的8080端口映射到服务器的8080端口,然后就可以通过http://your_server_ip:8080访问应用了。这种方式的优势在于,环境的强一致性几乎杜绝了“在我这好好的,到你那就不行了”这种问题。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















