一、服务器环境准备
sudo apt update && sudo apt upgrade -y 或 sudo dnf update -y)。sudo apt install build-essential curl -ysudo dnf install cmake gcc curl -y二、安装Rust工具链
1):curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
安装完成后,重新加载环境变量以生效:source $HOME/.cargo/env
验证安装是否成功:rustc --version # 查看Rust编译器版本
cargo --version # 查看包管理器版本
sudo dnf install rust-toolset -y
安装后同样需验证版本三、部署Rust项目到服务器
scp(本地终端)或git clone(服务器终端)将项目传输至服务器:# 本地终端执行(替换路径和IP)
scp -r ./your-rust-project user@your-server-ip:/home/user/
# 或服务器终端执行(需提前初始化Git仓库)
git clone https://your-git-repo.git
cd your-rust-project
cargo build --release编译优化后的可执行文件(生成于target/release/目录):cargo build --release
四、配置systemd服务(实现开机自启与进程管理)
/etc/systemd/system/目录下新建服务文件(如my_rust_app.service),内容如下(按需修改User、WorkingDirectory、ExecStart):[Unit]
Description=My Rust Application
After=network.target
[Service]
Type=simple
User=your_username # 替换为运行服务的用户(避免使用root)
WorkingDirectory=/home/your_username/your-rust-project # 项目根目录
ExecStart=/home/your_username/your-rust-project/target/release/your_binary_name # 可执行文件路径
Restart=always # 崩溃时自动重启
RestartSec=5 # 重启间隔5秒
Environment=RUST_BACKTRACE=1 # 开启错误回溯(调试用)
[Install]
WantedBy=multi-user.target # 设置为多用户模式启动
sudo systemctl daemon-reload # 重新加载systemd配置
sudo systemctl enable my_rust_app # 设置开机自启
sudo systemctl start my_rust_app # 立即启动服务
sudo systemctl status my_rust_app # 查看服务运行状态
journalctl -u my_rust_app -f # 实时查看应用日志(按Ctrl+C退出)
五、开放防火墙端口(允许外部访问) 若Rust应用监听特定端口(如HTTP服务的8080端口、游戏服务器的28015端口),需配置防火墙放行:
sudo firewall-cmd --permanent --add-port=8080/tcp # 永久添加端口
sudo firewall-cmd --reload # 重新加载防火墙规则
sudo ufw allow 8080/tcp # 允许TCP流量
sudo ufw enable # 启用ufw(若未启用)
六、可选优化:容器化部署(Docker) 若需隔离环境或简化部署,可使用Docker容器化运行Rust应用:
sudo dnf install docker -y # OpenCloudOS
sudo systemctl start docker && sudo systemctl enable docker
FROM rust:latest # 使用官方Rust镜像
WORKDIR /app
COPY . .
RUN cargo build --release
CMD ["/app/target/release/your_binary_name"]
docker build -t my-rust-app . # 构建镜像(标签为my-rust-app)
docker run -d -p 8080:8080 --name rust-server my-rust-app # 运行容器(映射端口)