Linux Rust项目部署上线实操指南
一 准备与构建
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh,然后 source $HOME/.cargo/env,验证 rustc --version。也可使用发行版包管理器安装(如 Ubuntu:sudo apt install cargo)。cargo build --release,可执行文件位于 target/release/,该模式会启用优化以提升性能。ldd target/release/your_app 检查动态依赖是否缺失。二 上线方式
方式一 直接部署可执行文件
scp target/release/your_app user@server:/path/to/deployrsync -avz target/release/your_app user@server:/path/to/deploychmod +x /path/to/deploy/your_appexport DATABASE_URL=postgres://...、export RUST_LOG=info.env 文件配合 dotenv crate./your_appnohup ./your_app > app.log 2>&1 &方式二 Docker 容器化
FROM rust:latest
WORKDIR /usr/src/myapp
COPY . .
RUN cargo build --release
EXPOSE 8080
CMD ["./target/release/myapp"]
docker build -t myapp .docker run -d -p 8080:8080 myapp三 进程守护与反向代理
systemd 服务示例(将路径、用户、环境变量替换为实际值):
[Unit]
Description=Your Rust Project
After=network.target
[Service]
User=your_user
WorkingDirectory=/path/to/deploy
ExecStart=/path/to/deploy/your_app
Restart=always
RestartSec=5s
Environment="DATABASE_URL=postgres://user:pass@localhost:5432/mydb"
Environment="RUST_LOG=info"
[Install]
WantedBy=multi-user.target
常用命令:
sudo systemctl daemon-reloadsudo systemctl start your_app && sudo systemctl enable your_appsudo systemctl status your_app、sudo journalctl -u your_app -fNginx 反向代理与 HTTPS(示例,将域名与端口替换为实际值):
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
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;
}
}
sudo apt install nginx;CentOS/RHEL:sudo yum install nginxsudo systemctl restart nginxsudo certbot --nginx -d your_domain.com防火墙放行(示例):
sudo ufw allow 80/tcpsudo firewall-cmd --permanent --add-port=80/tcp && sudo firewall-cmd --reload四 运维与更新
日志与监控:
sudo journalctl -u your_app -fhtop、iotop 等系统工具安全与密钥:
发布策略:
更新流程简述:
cargo build --release)→ 上传新可执行文件 → systemctl restart your_appdocker build -t myapp . && docker rm -f myapp && docker run -d -p 8080:8080 myapp可选进阶:
rustup target add x86_64-unknown-linux-gnu,或使用 cross 简化:cross build --target x86_64-unknown-linux-gnucargo-deb、cargo-rpm 生成 .deb/.rpm 便于标准化安装