Ubuntu Rust项目如何部署上线
【摘要】 Ubuntu Rust项目如何部署上线
Ubuntu Rust项目如何部署上线
上线地址
http://xx.xx.xx:3300/
1、打包构建项目
cargo build --release
这个时候在我们的项目路径下就生成可执行文件
生成的可执行文件位于target/release/目录
2、部署服务器
这里我们以Ubuntu服务器为例子进行部署上线
进入我们的控制台,这里我使用xshell进行连接,连接成功以后进入我们的根目录下载,这个过程持续挺久的
环境安装
//更新服务器
apt list --upgradable
//更新系统
sudo apt upgrade -y
//更新系统
sudo apt update && sudo apt upgrade -y
//安装必要工具
sudo apt install -y curl wget build-essential
sudo apt install -y curl wget build-essential git
// 安装Rust环境
使用rustup安装Rust工具链,自动配置环境变量
//使用官方安装脚本
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
// 使用阿里云安装脚本
curl --proto '=https' --tlsv1.2 -sSf https://mirrors.aliyun.com/repo/rust/rustup-init.sh | sh
提示我们的信息,这里我安装了几次才成功,安装稳定版本
latest update on 2025-11-10, rust version 1.91.1
rustup default stable
// 提示信息
stable-x86_64-unknown-linux-gnu installed - rustc 1.91.1 (ed61e7d7e 2025-11-07)
验证安装:
rustc --version
// 提示信息
// rustc 1.91.1 (ed61e7d7e 2025-11-07)
cargo --version
// 提示信息
// cargo 1.91.1 (ea2d97820 2025-10-10)
项目编译运行
接下来我们的项目传到我们服务器上,然后进入项目跟目录进行编译
// 没有编译的先在自己项目中编译一下
cargo build --release
ubuntu系统编译完成以后我们的项目是这样子的,注意这是在服务器ubuntu上编译完成的
/opt/nexus-rust-api/target/release
nexus-rust-api
nexus-rust-api.d
服务器命令行操作上传项目
// 创建目录
mkdir -p ~/nexus-api
// 使用 SCP 上传编译好的二进制文件
// 在 XShell 中执行以下命令(替换 your_username 为你的服务器用户名):
scp D:/LTB/code/NexusRustApi/target/release 用户名@服务器IP:~/nexus-api/
这个时候给了我一个这个提示
Host key verification failed.
原因
ubuntu 系统不能root操作,需要新给一个用户
# 替换 username 为你想要的用户名
sudo useradd -m 新用户名称
//添加用户密码
sudo passwd 新用户名称
//输入新的密码
// 将用户添加到 sudo 组(可选,但推荐)
sudo usermod -aG sudo 新用户名称
// 切换到新用户
su - 新用户名称
密码xxx
# 使用 -o 选项跳过主机密钥检查
scp -o StrictHostKeyChecking=no
D:/LTB/code/NexusRustApi/target/release root@xxx:~/nexus-api/
部署方案
使用反向代理 + Rust 应用(推荐方案)
Nginx + Rust 应用(Linux)
安装 Nginx
# Ubuntu
sudo apt install nginx
// 配置 Nginx
sudo nano /etc/nginx/sites-available/nexusrust
# 先在本地打包项目
tar -czf nexusrust.tar.gz -C path/to/your/rust/project .
# 然后上传到服务器
scp nexusrust.tar.gz username@39.102.58.130:/home/username/nexusrust
# 在服务器上解压
tar -xzf nexusrust.tar.gz
添加用户
# 创建新用户,这里以"rustuser"为例
sudo adduser lintaibai
# 将用户添加到sudo组,以便必要时可以执行管理员命令
sudo usermod -aG sudo lintaibai
# 切换到新用户
su - lintaibai
环境配置
使用 nexus-rust-api 作为项目名
# 更新系统
sudo apt update
# 安装基础工具
sudo apt install -y build-essential curl git
# 安装MySQL客户端
sudo apt install -y mysql-client
# 安装开发工具
sudo apt install -y pkg-config libssl-dev
# 安装Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
curl --proto '=https' --tlsv1.2 -sSf
https://mirrors.aliyun.com/repo/rust/rustup-init.sh | sh
rustup default stable
服务文件配置
# 部署项目
sudo mkdir -p /opt/nexus-rust-api
sudo chown $USER:$USER /opt/nexus-rust-api
# 复制编译好的二进制文件
cp target/release/nexus-rust-api /opt/nexus-rust-api/
sudo chmod +x /opt/nexus-rust-api/nexus-rust-api
sudo chmod +x /opt/nexus-rust-api/nexus-rust-api.exe
# 重命名文件
sudo mv /opt/nexus-rust-api/nexus-rust-api.exe /opt/nexus-rust-api/nexus-rust-api
# 设置正确的权限
sudo chmod +x /opt/nexus-rust-api/nexus-rust-api
sudo chown $USER:$USER /opt/nexus-rust-api/nexus-rust-api
# 创建服务文件
sudo nano /etc/systemd/system/nexus-rust-api.service
// 配置文件
[Unit]
Description=Nexus Rust API
After=network.target
[Service]
Type=simple
User=$USER
WorkingDirectory=/opt/nexus-rust-api
ExecStart=/opt/nexus-rust-api/target/release/nexus-rust-api
Restart=always
RestartSec=10
Environment=DATABASE_URL=mysql://数据库用户名:数据库密码@localhost:3306/nexus
Environment=BASE_URL=http://localhost:3300
Environment=BASE_URL_PREFIX=/api
Environment=PORT=3300
Environment=HOST=0.0.0.0
[Install]
WantedBy=multi-user.target
// 启动
# 启动服务
# 重新加载systemd配置
sudo systemctl daemon-reload
# 关闭再启动
sudo systemctl enable nexus-rust-api
sudo systemctl start nexus-rust-api
# 检查服务状态
sudo systemctl status nexus-rust-api
# 查看日志
sudo journalctl -u nexus-rust-api -f
# 实时查看日志
sudo journalctl -u nexus-rust-api.service -f
// 查看完整前端日志信息
sudo journalctl -u nexus-rust-api.service -n 50
# 停止服务
sudo systemctl stop nexus-rust-api
// 5配置防火墙
# 开放端口
sudo ufw allow 3300
sudo ufw enable
# 重启服务
sudo systemctl restart nexus-rust-api
浏览器直接打开测试一下我们的接口,这个时候我们接口已经可以成功访问了
http://服务器IP:3300/
3、Ubuntu服务器常用命令
df //磁盘空间概览
df -h //磁盘空间概览
//查看当前路径
pwd
// 查看文件是否存在
ls -la /opt/nexus-rust-api/
# 查看当前用户
whoami
# 检查服务配置中的用户
grep User /etc/systemd/system/nexus-rust-api.service
# 重新加载systemd
sudo systemctl daemon-reload
# 重启服务
sudo systemctl restart nexus-rust-api
# 检查状态
sudo systemctl status nexus-rust-api
# 检查防火墙状态
sudo ufw status
适配当前的架构重新编译
# 确认目标架构
rustup target list
rustup target add x86_64-unknown-linux-gnu # 如果是x86_64系统
# 清理之前的构建
cargo clean
# 编译 Linux 版本
cargo build --release --target x86_64-unknown-linux-gnu
4、docker部署项目
上面传统部署项目的缺点很容易我们就可以看出来 ,就是项目的依赖过大的时候,我们无法在服务器端加载和部署如此之大的依赖。
还有就是不同服务器我们需要安装和打不同的包,这时候我们就感受到了docker的魅力
使用官方 Docker 安装方式
win11电脑本地化部署docker
线下docker环境部署
// windows电脑docker下载地址
https://download.docker.com/win/static/stable/x86_64/
在本地构建镜像
docker build -t nexus-rust-api .
4、Docker部署
文件配置
根目录新建一个Dockerfile写入
# 构建阶段
FROM rust:1.70 as builder
WORKDIR /app
COPY Cargo.toml ./
RUN mkdir src && echo "fn main() {}" > src/main.rs && cargo build --release
RUN rm -rf src
COPY src ./src
RUN cargo build --release
# 运行阶段 - 使用最小的基础镜像
FROM scratch
# 从构建阶段复制编译好的二进制文件
COPY --from=builder /app/target/release/nexus-rust-api /nexus-rust-api
# 暴露端口
EXPOSE 3300
# 运行应用
CMD ["/nexus-rust-api"]
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)