CentOS 上 Rust 项目的管理实践
一 环境准备与工具链管理
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shsource $HOME/.cargo/envrustup update、rustup show、rustup toolchain list、rustup default <version>、rustup component add rust-src二 依赖与版本管理
[dependencies] 添加依赖(如:serde = { version = "1.0", features = ["derive"] })cargo update(遵循 SemVer,更新 Cargo.lock 中解析到的具体版本)cargo tree[package] version 维护(如:0.1.0)git tag -a v0.1.0 -m "Release 0.1.0"三 构建与运行
cargo buildcargo build --release(产物在 target/release/)cargo run 或执行 ./target/release/<your-app>cargo testcargo clean(清理构建缓存)四 运行与发布部署
sudo nano /etc/systemd/system/<your-app>.service[Unit]
Description=Your Rust Application
After=network.target
[Service]
Type=simple
User=your-user
Group=your-group
ExecStart=/path/to/target/release/<your-app>
Restart=always
RestartSec=3
Environment=RUST_LOG=info
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload && sudo systemctl enable --now <your-app>sudo journalctl -u <your-app> -fsudo firewall-cmd --zone=public --add-port=8080/tcp --permanent && sudo firewall-cmd --reloadserver {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
scp target/release/<your-app> user@host:/opt/<app>/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
RUN cargo build --release
FROM debian:buster-slim
COPY --from=builder /usr/src/app/target/x86_64-unknown-linux-gnu/release/<your-app> /usr/local/bin/<your-app>
ENTRYPOINT ["<your-app>"]
docker build -t <your-app> . && docker run -d <your-app>五 日常维护与质量保障
cargo benchcargo-flamegraphtokio-consolecargo-machetecargo tree 或 cargo-deps 生成依赖图