在目标Ubuntu服务器上,需先安装构建工具和依赖库(若项目需动态链接)。打开终端执行以下命令:
sudo apt update && sudo apt install -y build-essential curl git
此步骤确保系统具备编译Rust项目的能力(如gcc、make),并安装常用依赖库(如openssl、libc)。
推荐使用rustup(Rust官方工具链管理器)安装最新稳定版Rust,避免系统包管理器的版本滞后:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
按提示完成安装后,重新加载Shell环境(或重启终端):
source "$HOME/.cargo/env"
验证安装是否成功:
rustc --version # 查看Rust编译器版本
cargo --version # 查看Cargo包管理器版本
若需固定Rust版本(如项目要求),可通过rustup default <version>设置。
将本地Rust项目上传至Ubuntu服务器(如通过scp或Git克隆),进入项目根目录:
cd /path/to/your/rust-project
编译Release版本(优化性能,适合生产环境):
cargo build --release
编译完成后,可执行文件会生成在target/release/目录下(文件名与项目同名,如my_app)。
将编译好的可执行文件传输至目标部署目录(如/opt/my_rust_app):
scp target/release/my_app user@your_server_ip:/opt/my_rust_app
登录服务器后,设置可执行权限:
chmod +x /opt/my_rust_app/my_app
直接运行测试(验证功能是否正常):
/opt/my_rust_app/my_app
若项目依赖环境变量(如数据库连接字符串、API密钥),需在部署环境中设置。可通过以下方式之一配置:
export DATABASE_URL="postgres://user:password@localhost:5432/my_db"
export RUST_LOG="info" # 启用Rust日志
~/.bashrc或~/.zshrc文件,添加上述export语句,然后执行source ~/.bashrc生效。为确保应用开机自启动、崩溃自动重启,建议用systemd创建服务:
sudo nano /etc/systemd/system/my_rust_app.service
[Unit]
Description=My Rust Application
After=network.target # 确保网络就绪后启动
[Service]
Type=simple
User=ubuntu # 运行应用的系统用户(避免使用root)
WorkingDirectory=/opt/my_rust_app # 应用工作目录
ExecStart=/opt/my_rust_app/my_app # 可执行文件路径
Restart=on-failure # 崩溃时自动重启(可选:on-abort、always)
[Install]
WantedBy=multi-user.target # 多用户模式下启动
sudo systemctl daemon-reload
sudo systemctl start my_rust_app
sudo systemctl enable my_rust_app
sudo systemctl status my_rust_app
静态链接:若需避免依赖目标系统的动态库(如glibc),可使用musl工具链编译静态二进制文件。先安装musl目标:
rustup target add x86_64-unknown-linux-musl
修改.cargo/config.toml(项目根目录):
[target.x86_64-unknown-linux-musl]
rustflags = ["-C", "target-feature=+crt-static"]
编译静态可执行文件:
cargo build --target x86_64-unknown-linux-musl --release
此时生成的二进制文件可直接在大多数Linux系统上运行(无需安装Rust或依赖库)。
Docker部署:若项目依赖复杂(如需要特定版本的openssl),可使用Docker容器化部署。编写Dockerfile(示例):
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y libssl-dev ca-certificates && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY target/release/my_app .
CMD ["./my_app"]
构建并运行Docker容器:
docker build -t my_rust_app .
docker run -d --name my_app_container -p 8080:8080 my_rust_app
通过以上步骤,即可完成Rust项目在Ubuntu上的部署。根据项目需求选择直接运行、systemd管理或Docker容器化方案,确保应用稳定、可靠地运行。