| 变量 Key | 填写值 | 为什么配置 |
|---|---|---|
RAILS_ENV | production | 开启 Rails 生产模式,关闭调试页面,安全策略生效。 |
RAILS_MASTER_KEY | cat config/master.key输出完整字符串 | 解密config/credentials.yml.enc加密凭证;缺失直接启动崩溃。master.key 严禁提交 git。 |
RAILS_SERVE_STATIC_FILES | true | Render 没有独立静态 CDN;开启后提供预编译 css/js 图片,否则静态资源 404。 |
需要配置环境变量: AI说:
要在 Render 服务器上运行你的 Ruby on Rails 项目,你需要配置一系列环境变量,并根据项目目前的架构做一些生产环境的优化建议。
- 必须配置的环境变量
根据你的项目文件(特别是 config/environments/production.rb、config/database.yml 和 config/storage.yml),你需要在 Render 的后台面板中设置以下环境变量:
基础配置
•
RAILS_MASTER_KEY: 最重要。用于解密 config/credentials.yml.enc。你可以在本地项目的 config/master.key 文件中找到它的值。
•
DATABASE_URL: 生产环境数据库连接字符串。在 Render 上创建 PostgreSQL 数据库后,它会自动提供这个变量。
•
RAILS_ENV: 设置为 production。
•
NODE_ENV: 设置为 production。
•
SECRET_KEY_BASE: 虽然 Rails 可能会从 credentials 中读取,但在 Render 上显式设置一个随机生成的长字符串可以增加安全性(可以通过 bin/rails secret 生成)。
业务功能相关
•
APP_HOST: 你的线上域名(例如 www.sinowerkitchen.com),用于生成邮件链接和 Active Storage 的 URL。
•
RESEND_API_KEY: 用于邮件发送(Resend 服务)。
•
RAILS_LOG_LEVEL: 建议设置为 info 或 warn(代码中默认 warn),以减少日志量。
文件存储 (Cloudflare R2)
你的项目配置了使用 Cloudflare R2 作为生产环境存储,需要提供以下变量:
•
CLOUDFLARE_R2_ACCESS_KEY_ID
•
CLOUDFLARE_R2_SECRET_ACCESS_KEY
•
CLOUDFLARE_R2_BUCKET
•
CLOUDFLARE_R2_ENDPOINT - 部署建议与注意事项
数据库迁移
•
你的 Procfile 已经包含 bin/rails db:prepare。这很好,它会在每次部署时自动运行迁移文件。
静态资源预编译
•
Render 默认的 Ruby 构建命令通常会自动运行 bundle exec rails assets:precompile。由于你使用了 Tailwind CSS 和 Importmap,请确保构建命令包含了这一步。
数据库选择
•
虽然你在开发环境使用 SQLite,但生产环境配置(database.yml)指定了 postgresql。在 Render 上,请务必创建一个 PostgreSQL 数据库实例。
安全性 (Rack::Attack)
•
你项目中配置了 rack-attack 来防止暴力破解和恶意扫描。
•
注意:Render 的负载均衡器会通过 X-Forwarded-For 传递客户端 IP。如果 rack-attack 拦截到了错误的 IP(比如 Render 内部 IP),你可能需要在 config/application.rb 中配置 config.middleware.use Rack::Attack 并在 production.rb 中正确配置受信任的代理。
性能建议
•
Solid Cache: 你的项目使用了 solid_cache。在生产环境中,这会把缓存存入数据库。对于小规模流量这没问题,但如果访问量增大,建议在 Render 上增加一个 Redis 实例,并将 cache_store 改为 :redis_cache_store 以减轻数据库压力。
•
Active Job: 目前你的 queue_adapter 是 :inline,这意味着后台任务会同步执行,可能会阻塞 Web 请求。如果将来有耗时的任务(如发送大量邮件),建议改用 solid_queue 或 sidekiq。
健康检查
•
你代码中配置了 /up 路径作为健康检查。在 Render 的服务设置里,可以将 Health Check Path 设置为 /up,这样 Render 只有在应用完全启动后才会切换流量。
总结 Checklist:
[ ] 复制 config/master.key 的内容到 Render 的 RAILS_MASTER_KEY。
2.
[ ] 在 Render 创建 PostgreSQL 数据库。
3.
[ ] 填入 Cloudflare R2 和 Resend 的 API Key。
4.
[ ] 确保 APP_HOST 设置为你的最终域名。