如何在 Linux 上部署 Rust 编写的服务

林舟
林舟
发布时间:2026-08-23| 20人浏览过
原创

前言

在 Linux 上部署 Rust 服务,真正容易卡住的往往不是代码能不能编过,而是发布版二进制放在哪里、systemd 单元怎么写、启动后该用什么方式判断是否正常运行。下面按实际部署顺序把编译、托管、开机自启和日志排查串起来,方便你一次走通流程,也能在出错时迅速定位问题。

在 Linux 上部署 Rust 服务,真正容易出问题的通常不是编译本身,而是二进制路径、systemd 单元配置和后续的启动排查是否连贯。下面按“编译产物在哪、服务怎么托管、出了问题看哪里”的顺序整理一遍,照着做可以把一个本地项目接入常见的 Linux 服务管理流程,也能判断每一步是否已经生效。

编译 Rust 发布版程序

开始之前,先确认机器上已经安装好 Rust 和 Cargo。若还没有安装,可以直接执行下面这条命令:

展示 Rust 服务从发布版编译到生成 systemd ExecStart 路径的关系图
发布版二进制与路径定位先确认发布版二进制的生成位置,再把它准确写入 systemd 配置,是后续启动成功的前提。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

随后进入 Rust 项目根目录,编译发布版程序:

cd /path/to/your/rust/project
cargo build --release

编译完成后,可执行文件会出现在 target/release 目录中,文件名通常对应 Cargo.toml 里定义的包名。后面在 systemd 配置里要填写的 ExecStart,就是这个发布版二进制的完整路径。

为 Rust 服务创建 systemd 单元文件

大多数现代 Linux 发行版都使用 systemd 管理后台服务,因此部署 Rust 服务时,最常见的做法是为它单独创建一个 service 单元文件。例如新建:

展示 systemd 单元文件关键字段与启动管理命令对应关系的结构图
systemd 单元配置与管理命令部署 Rust 服务时,systemd 单元文件负责定义运行用户、启动命令和自动重启策略。

/etc/systemd/system/my-rust-service.service

内容可以参考下面这个模板:

[Unit]
Description=My Rust Service
After=network.target

[Service]
User=<your-user>
Group=<your-group>
ExecStart=/path/to/your/rust/project/target/release/my-rust-service
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

这里有几个位置需要按实际环境替换:

  • User=<your-user> 和 Group=<your-group>:改成你希望运行该服务的用户和组。
  • ExecStart=...:改成发布版二进制的真实绝对路径。
  • my-rust-service:改成你自己的服务名称。

Restart=always 通常值得保留。它表示服务异常退出后会自动重启,而 RestartSec=3 则指定重启前等待 3 秒,这对于常驻型 Rust 服务是比较常见的基础配置。

重载配置并启动服务

单元文件写好之后,systemd 不会自动立刻识别新配置,需要先重载一次:

sudo systemctl daemon-reload

然后启动服务:

sudo systemctl start my-rust-service

如果这一步没有报错,说明 systemd 已经成功尝试拉起你的 Rust 服务。至于服务是否真正进入稳定运行状态,还需要继续查看状态与日志。

设置开机自启动

如果希望机器重启后服务自动恢复运行,可以继续执行:

sudo systemctl enable my-rust-service

这一步会把服务加入 systemd 的开机启动流程。对于线上长期运行的服务来说,通常会和 start 一起配置,而不是只手动启动一次。

检查服务状态与日志

部署完成后,最直接的检查方式是先看 systemd 记录的服务状态:

sudo systemctl status my-rust-service

如果服务启动失败、反复重启,或者看起来已经启动但没有按预期工作,再进一步查看日志:

journalctl -u my-rust-service

这两条命令通常就能覆盖大部分初次部署排查场景:前者用来确认当前状态,后者用来追踪具体报错信息。只要编译产物路径、运行用户权限和单元文件配置没有写错,Rust 服务通常就能比较稳定地在 Linux 上跑起来。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。