在目标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容器化方案,确保应用稳定、可靠地运行。