在VPS上部署Rust应用程序:从A到Z的分步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么Rust是生产环境的理想选择以及如何部署它

Rust是一种系统编程语言,它结合了C++的性能和内存安全性。由于没有垃圾回收器并且可以编译为原生二进制文件,Rust应用程序非常适合部署在VPS(虚拟专用服务器)上。在本文中,我们将走完完整的部署流程:从项目编译到配置反向代理和监控。您将学习如何将您的Rust应用程序转变为一个稳定的生产级服务。



1. 准备工作:为VPS编译Rust应用程序

第一步是编译一个优化的二进制文件。为此,我们需要在本地机器(或服务器)上安装Rust工具链。



1.1. 以release模式编译

在项目根目录下执行命令:

cargo build --release

这将在target/release/文件夹中创建一个优化的二进制文件。对于基于actix-web或rocket的Web应用程序,文件大小可能在5-15 MB之间。为了减小体积,可以在Cargo.toml中添加:

[profile.release]opt-level = 3lto = truecodegen-units = 1strip = true


1.2. 配置环境变量

创建一个.env.prod文件用于生产环境配置。Web服务器示例:

DATABASE_URL=postgres://user:pass@localhost:5432/mydbRUST_LOG=infoSERVER_HOST=0.0.0.0SERVER_PORT=8080


1.3. 将文件传输到VPS

将二进制文件、静态文件和配置文件复制到服务器。使用scp或rsync:

scp target/release/myapp user@your-vps-ip:/home/user/app/scp -r static/ user@your-vps-ip:/home/user/app/static/scp .env.prod user@your-vps-ip:/home/user/app/.env


2. 服务器配置:systemd和Nginx

为了在服务器重启时自动启动应用程序并确保安全,我们使用systemd和Nginx。



2.1. 创建systemd服务

创建文件/etc/systemd/system/myapp.service:

[Unit]Description=Rust web applicationAfter=network.target

[Service]User=www-dataWorkingDirectory=/home/user/appExecStart=/home/user/app/myappRestart=alwaysRestartSec=10EnvironmentFile=/home/user/app/.env

[Install]WantedBy=multi-user.target

激活服务:

sudo systemctl daemon-reloadsudo systemctl enable myappsudo systemctl start myappsudo systemctl status myapp


2.2. 配置Nginx作为反向代理

Rust应用程序将监听8080端口(内部),而Nginx将接收来自80/443端口的外部请求。创建配置文件/etc/nginx/sites-available/myapp:

server {    listen 80;    server_name your-domain.com;

location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }

location /static/ { alias /home/user/app/static/; expires 30d; }}

激活站点:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginx


2.3. 配置HTTPS(可选)

安装Certbot并获取SSL证书:

sudo apt install certbot python3-certbot-nginxsudo certbot --nginx -d your-domain.com


3. 数据库管理和迁移

如果您的Rust应用程序使用数据库(例如,使用diesel或sqlx的PostgreSQL),请在VPS上进行配置。



3.1. 安装PostgreSQL

sudo apt updatesudo apt install postgresql postgres                

博客

书籍推荐