一、准备工作:安装Rust工具链与系统依赖 在Debian系统上部署Rust项目前,需先安装Rust编译工具链及必要的系统依赖。打开终端,依次执行以下命令:
rustup安装Rust(官方推荐的版本管理工具):curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env # 加载环境变量
rustc --version # 应输出Rust编译器版本(如1.75.0)
cargo --version # 应输出Cargo包管理器版本
build-essential用于编译C/C++依赖,libssl-dev用于SSL支持):sudo apt update && sudo apt install -y build-essential libssl-dev
二、构建Rust项目(Release版本) Rust项目需编译为优化后的二进制文件才能部署。进入项目根目录,执行:
cargo build --release
编译完成后,可执行文件会生成在target/release/目录下(如your_project)。
三、打包为Debian包(.deb格式)
使用cargo-deb工具可将Rust项目快速打包为符合Debian规范的.deb文件,便于系统级安装与管理。
cargo-deb:cargo install cargo-deb
cargo deb
默认情况下,包会生成在target/debian/目录下,命名格式为<项目名>_<版本号>-1_<架构>.deb(如my_app_0.1.0-1_amd64.deb)。Cargo.toml中添加[package.metadata.deb] section。例如:[package.metadata.deb]
maintainer = "Your Name <you@example.com>"
depends = "libc6 (>= 2.28), libssl1.1 (>= 1.1.1)"
extra_files = ["README.md", "config/default.conf"] # 包含额外文件
四、安装与部署Debian包
生成.deb包后,可通过dpkg工具安装到系统中:
sudo dpkg -i target/debian/your_project_*.deb
若安装过程中提示缺少依赖,运行以下命令自动修复:
sudo apt-get install -f
五、运行与管理Rust应用
target/release/目录,执行编译好的二进制文件:./your_project
/etc/systemd/system/your_project.service):[Unit]
Description=Your Rust Project
After=network.target
[Service]
User=your_user # 替换为实际用户(如ubuntu)
Group=your_group # 替换为实际组(如ubuntu)
ExecStart=/path/to/your_project/target/release/your_project
Restart=always # 崩溃后自动重启
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable your_project # 开机自启
sudo systemctl start your_project # 立即启动
sudo systemctl status your_project
六、可选:使用Docker部署(跨环境一致性) 若需避免依赖系统环境差异,可使用Docker容器化部署。
Dockerfile(项目根目录):FROM rust:1.75 as builder
WORKDIR /app
COPY . .
RUN cargo build --release
FROM debian:bullseye-slim
WORKDIR /app
COPY --from=builder /app/target/release/your_project .
COPY configs /app/configs # 复制配置文件(可选)
EXPOSE 8080 # 替换为应用端口
CMD ["./your_project"]
docker build -t your_project .
docker run -d -p 8080:8080 --name your_project_container your_project
七、注意事项
openssl),需在Cargo.toml中通过[dependencies]声明,并在package.metadata.deb中添加对应的系统依赖(如libssl1.1)。cargo deb会剥离调试符号。若需保留,可添加--separate-debug-symbols选项,调试符号会安装到/usr/lib/debug/目录下。cargo deb命令添加到CI/CD流水线(如GitHub Actions),实现自动化打包与发布。