商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Ubuntu下Rust项目如何部署

Ubuntu下Rust项目如何部署

  发布于2026-07-04 阅读(0)

扫一扫,手机访问

在Ubuntu上部署Rust项目:从环境准备到生产级落地

把Rust项目部署到Ubuntu服务器上,这件事说难不难,说简单也不简单。从环境搭建、项目构建,到生产环境下的进程管理和监控,每一步都有不少细节值得留意。这篇指南把整个过程梳理了一遍,希望能帮你少走一些弯路。

1. 准备Ubuntu环境

在部署之前,先确保系统里已经装好了Rust工具链——包括rustc编译器和Cargo包管理器,以及一些必要的依赖。官方推荐的安装方式是使用rustup,这套工具链管理器用起来最顺手。

Ubuntu下Rust项目如何部署

安装步骤大致如下:

# 安装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访问应用了。这种方式的优势在于,环境的强一致性几乎杜绝了“在我这好好的,到你那就不行了”这种问题。

本文转载于:https://www.yisu.com/ask/40070469.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注