1. 准备Ubuntu环境
在Ubuntu上部署Rust项目前,需确保系统已安装Rust工具链(rustc编译器、Cargo包管理器)及必要依赖。推荐使用rustup(Rust官方工具链管理器)安装,步骤如下:
# 安装curl(若未安装)
sudo apt install curl
# 下载并运行rustup安装脚本
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 按提示完成安装,重启终端或执行以下命令激活环境
source $HOME/.cargo/env
# 验证安装(显示Rust版本则成功)
rustc --version && cargo --version
若需配置国内镜像加速(如清华、中科大镜像),可修改~/.cargo/config.toml文件,添加以下内容:
[source.crates-io]
replace-with = 'ustc' # 使用中科大镜像
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index/"
此步骤可显著提升依赖下载速度。
2. 构建Rust项目
进入项目根目录(含Cargo.toml文件的目录),执行以下命令构建发布版本(优化性能,适合生产环境):
cargo build --release
构建完成后,可执行文件会生成在target/release/目录下(文件名与项目名称一致,如my_project)。
若需调试版本(包含符号信息,便于排查问题),可使用cargo build,生成的可执行文件位于target/debug/目录。
3. 部署可执行文件
将target/release/下的可执行文件传输到目标Ubuntu服务器。常用工具为scp(安全拷贝),命令示例:
scp target/release/my_project user@your_server_ip:/path/to/deploy
其中,user为服务器用户名,your_server_ip为服务器IP地址,/path/to/deploy为目标路径(如/opt/my_rust_app)。
4. 配置服务器环境
sudo apt install libpq-dev
export命令临时设置,或写入~/.bashrc(用户级)或/etc/environment(系统级)文件。例如:export DATABASE_URL="postgres://user:password@localhost:5432/my_db"
export RUST_LOG="info" # 设置Rust日志级别
执行source ~/.bashrc使临时变量生效。5. 运行Rust项目
在服务器目标路径下,直接执行可执行文件:
cd /path/to/deploy
./my_project
若需后台运行(避免占用终端),可使用nohup命令:
nohup ./my_project > app.log 2>&1 &
此命令会将输出重定向到app.log文件,并在后台运行。
6. 使用systemd管理服务(可选,推荐)
为确保项目在服务器重启后自动启动,或在崩溃时自动重启,可使用systemd创建服务。步骤如下:
sudo nano /etc/systemd/system/my_rust_app.service
[Unit]
Description=My Rust Application
After=network.target
[Service]
Type=simple
User=ubuntu # 替换为运行项目的用户(如ubuntu、www-data)
WorkingDirectory=/opt/my_rust_app # 项目部署路径
ExecStart=/opt/my_rust_app/my_project # 可执行文件路径
Restart=on-failure # 崩溃时自动重启
RestartSec=5s # 重启间隔5秒
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload # 重新加载systemd配置
sudo systemctl start my_rust_app # 启动服务
sudo systemctl enable my_rust_app # 设置开机自启动
sudo systemctl status my_rust_app
若显示“active (running)”,则表示服务已成功运行。7. (可选)容器化部署(Docker)
若需跨平台部署或隔离环境,可使用Docker容器化Rust项目。步骤如下:
sudo apt update
sudo apt install docker.io
sudo systemctl start docker && sudo systemctl enable docker
Dockerfile文件,内容如下:FROM rust:1.70 # 使用官方Rust镜像(版本根据项目需求调整)
WORKDIR /app
COPY . . # 复制项目文件到容器
RUN cargo build --release # 构建项目
EXPOSE 8080 # 暴露端口(根据项目实际端口修改)
CMD ["./target/release/my_project"] # 运行可执行文件
docker build -t my_rust_app .
docker run -d -p 8080:8080 --name my_rust_container my_rust_app
此命令会将容器的8080端口映射到服务器的8080端口,通过http://your_server_ip:8080访问应用。