CentOS下Rust项目的构建流程是什么

CentOS 下 Rust 项目的构建流程一 准备环境安装 Rust 工具链(rustup),这是官方推荐方式,安装后自带 cargo:执行安装:curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh使环境变量生效:source $HOME/.cargo/env验证版本:rustc –version、cargo –ve

CentOS 下 Rust 项目的构建流程

一 准备环境

  • 安装 Rust 工具链(rustup),这是官方推荐方式,安装后自带 cargo
    • 执行安装:curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh
    • 使环境变量生效:source $HOME/.cargo/env
    • 验证版本:rustc –version、cargo –version
  • 安装基础构建工具(很多 crate 需要 C 编译器与系统链接器):
    • CentOS 7:sudo yum groupinstall -y “Development Tools”
    • CentOS 8/Stream:sudo dnf groupinstall -y “Development Tools”
  • 可选优化:配置 Cargo 国内镜像(提升依赖下载速度),在 ~/.cargo/config.toml 中添加:
    • [source.crates-io] replace-with = ‘tuna’
    • [source.tuna] registry = “https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git”

二 构建与运行

  • 创建项目(可选):cargo new myapp && cd myapp
  • 调试构建与运行:cargo build、cargo run(产物在 target/debug/
  • 发布构建(优化):cargo build –release(产物在 target/release/
  • 常用辅助命令:
    • 仅检查能否编译:cargo check(更快,不产出二进制)
    • 运行测试:cargo test
    • 代码格式化与静态检查:cargo fmt、cargo clippy
  • 产物位置与运行示例:
    • 二进制可执行文件:target/release/myapp(或 target/debug/myapp)
    • 运行:./target/release/myapp

三 交叉编译与 Docker 构建

  • 交叉编译(示例为 x86_64-unknown-linux-gnu):
    • 安装 cross:cargo install cross –git https://github.com/cross-rs/cross
    • 构建:cross build –target x86_64-unknown-linux-gnu
    • 产物路径:target/x86_64-unknown-linux-gnu/release/…
  • Docker 多阶段构建(减小镜像体积,示例):
    • Dockerfile:
      • FROM rust:latest AS builder
      • WORKDIR /usr/src/app
      • COPY Cargo.toml Cargo.lock ./
      • RUN mkdir src && echo “fn main(){println!("placeholder")}” > src/main.rs
      • RUN cargo build –release
      • COPY src ./src
      • FROM debian:buster-slim
      • COPY –from=builder /usr/src/app/target/x86_64-unknown-linux-gnu/release/myapp /usr/local/bin/myapp
      • ENTRYPOINT [“myapp”]
    • 构建与运行:docker build -t myapp . && docker run -d myapp

四 部署为系统服务

  • 创建 systemd 服务文件:sudo nano /etc/systemd/system/myapp.service
    • [Unit]
      • Description=My Rust App
      • After=network.target
    • [Service]
      • User=myuser
      • Group=mygroup
      • ExecStart=/path/to/target/release/myapp
      • Restart=always
      • RestartSec=3
    • [Install]
      • WantedBy=multi-user.target
  • 启动与开机自启:
    • sudo systemctl daemon-reload
    • sudo systemctl start myapp && sudo systemctl enable myapp
    • 查看状态与日志:sudo systemctl status myapp、sudo journalctl -u myapp -f
  • 如监听 8080 端口,放行防火墙:
    • sudo firewall-cmd –zone=public –add-port=8080/tcp –permanent
    • sudo firewall-cmd –reload

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1464581.html

(0)
派派
上一篇 2025-12-03
下一篇 2025-12-03

发表回复

登录后才能评论