部署

在 Loco 中部署非常简单,这也是为什么本指南如此简短的原因。虽然在开发过程中大多数时候你都在使用 cargo,但在部署时,你使用的是已编译的二进制文件,目标服务器上不需要 cargo 或 Rust。

要部署,请为你的相关服务器架构构建生产二进制文件:

cargo build --release

然后将你的二进制文件连同你的 config/ 文件夹复制到服务器。之后你可以在你的服务器上运行 myapp start

就这些!

我们特别注意将你的所有工作都嵌入到单个二进制文件中,因此除了它之外,你在服务器上不需要任何其他东西。

检查你的生产配置

在部署到生产环境时,有几个配置部分非常重要,需要检查并进行相应的设置:

  • Logger:
# 应用程序日志配置
logger:
  # 启用或禁用日志记录。
  enable: true
  # 启用漂亮的错误回溯 (设置 RUST_BACKTRACE=1)
  pretty_backtrace: true
  # 日志级别,选项:trace, debug, info, warn 或 error。
  level: debug
  # 定义日志格式。选项:compact, pretty 或 json
  format: compact
  # 默认情况下,logger 仅过滤来自你的代码或来自 `loco` 框架的日志。要查看所有第三方库的日志
  # 取消注释下面这行配置可以覆盖并查看所有第三方库的日志。
  # override_filter: trace
  • Server:
server:
  # 服务器监听的端口。服务器绑定为 0.0.0.0:{PORT}
  port: 
  # 邮件程序将指向的 UI 主机名或 IP 地址。
  host: http://localhost
  • Database:
database:
  # 数据库连接 URI
  uri: 
  # 启用后,将记录 sql 查询。
  enable_logging: false
  # 设置获取连接时的超时时长。
  connect_timeout: 500
  # 设置关闭连接前的空闲时长。
  idle_timeout: 500
  # 连接池的最小连接数。
  min_connections: 1
  # 连接池的最大连接数。
  max_connections: 1
  # 应用程序加载时运行数据库迁移
  auto_migrate: true
  # 应用程序加载时截断数据库。这是一个危险的操作,请确保仅在开发环境或测试模式下使用此标志
  dangerously_truncate: false
  # 应用程序加载时重新创建架构。这是一个危险的操作,请确保仅在开发环境或测试模式下使用此标志
  dangerously_recreate: false
  • Mailer:
mailer:
  # SMTP 邮件程序配置。
  smtp:
    # 启用/禁用 smtp 邮件程序。
    enable: true
    # SMTP 服务器主机。例如 localhost, smtp.gmail.com
    host: 
    # SMTP 服务器端口
    port: 1025
    # 使用安全连接 (SSL/TLS)。
    secure: false
    # auth:
    #   user:
    #   password:
  • Queue:
queue:
  kind: Redis
  # Redis 连接 URI
  uri: 
  # 启动时危险地刷新 Redis 中的所有数据。危险操作,请确保仅在开发环境或测试模式下使用此标志
  dangerously_flush: false
  • JWT secret:
auth:
  # JWT 认证
  jwt:
    # 用于令牌生成和验证的密钥
    secret: PqRwLF2rhHe8J22oBeHy
    # 令牌过期时间,单位为秒
    expiration: 604800 # 7 天

运行 loco doctor

你可以在你的服务器上运行 loco doctor 来检查你的环境的连接健康状况。

$ myapp doctor --production

生成

Loco 提供了一个部署模板,可以创建部署基础设施。

cargo loco generate deployment
? ❯ Choose your deployment ›
 Docker
 Shuttle
 Nginx

..
 ❯ Choose your deployment · Docker
skipped (exists): "dockerfile"
added: ".dockerignore"

部署选项:

  1. Docker:
  • 生成一个 Dockerfile,可以用于构建和部署。
  • 创建一个 .dockerignore 文件。
  1. Shuttle:
  • 生成一个 shuttle main 函数。
  • 添加 shuttle-runtimeshuttle-axum 作为依赖项。
  • 为部署添加一个 bin 入口点。
  1. Nginx:
  • 生成一个 nginx 配置文件,用于反向代理。

选择最适合你部署需求的选项。祝你部署顺利!

如果你希望在不同的云平台上部署,请随时发起 pull request。非常欢迎你的贡献!