FEATURED · 精选文章

从代码到生产环境:Dato.RSS使用Capistrano部署上云的完整指南

发布时间 / 2026/8/26 14:33:43
来源 / 创域科博编辑部
栏目 / 资讯中心
从代码到生产环境:Dato.RSS使用Capistrano部署上云的完整指南 从代码到生产环境Dato.RSS使用Capistrano部署上云的完整指南【免费下载链接】dato.rssThe best RSS Search experience you can find项目地址: https://gitcode.com/gh_mirrors/da/dato.rssDato.RSS 是一个开箱即用的 RSS 搜索引擎与 RESTful API 服务它能把你的 RSS/Atom 源变成可搜索、可订阅的数据接口并用机器学习Dandelion为每篇文章自动提取语义与情感标签。本文将带你用 Capistrano 把它从零部署到自己的云服务器上全程大约 30 分钟。 Dato.RSS 的技术栈与部署架构在部署前先了解它运行所依赖的组件这决定了服务器要装哪些软件Ruby on Rails 6.1— 核心 Web 框架提供网页与 JSON APIPostgreSQL— 主数据库同时承担全文搜索pg_search tsvector 索引Redis— 缓存与 Action Cable 的传输层Sidekiq— 后台任务队列负责抓取 Feed、发送 WebhookNginx Phusion Passenger— Capistrano 通过capistrano-passenger插件自动集成Node.js / Yarn— Webpacker 编译前端资源TailwindCSS 等一次部署后Capistrano 会在服务器上按releases目录版本化管理代码支持秒级回滚。⚙️ 一键部署前的服务器准备清单以 Ubuntu 20.04/22.04 为例按下面顺序安装依赖创建专用部署用户与config/deploy/production.rb中的user: deploy保持一致Ruby 环境安装git、rbenv并安装Ruby 3.0.0——版本号由 Capfile 中的set :rbenv_ruby, 3.0.0指定Gemfile 也锁定了同一版本前端依赖Node.js 16 与 Yarn数据库与缓存PostgreSQL启用pgcrypto扩展项目首个迁移会自动安装、RedisWeb 服务器Nginx Phusion Passenger 模块SSH 免密登录把本地公钥写入~/.ssh/authorized_keys 获取代码并配置 Capistrano克隆项目部署账号需对仓库有访问权限git clone https://gitcode.com/gh_mirrors/da/dato.rss cd dato.rss bundle install部署相关文件都集中在两处理解它们就理解了整个流程文件作用Capfile声明使用 deploy、rails、passenger、rbenv 插件与 git 源config/deploy.rb应用名datorss、部署目录/home/deploy/datorss、保留最近 5 个版本config/deploy/production.rb生产服务器地址、用户与角色app / db / web只需把 config/deploy/production.rb 里的 IP 换成你的服务器地址并把 config/deploy.rb 中的repo_url改为你自己的仓库地址即可。几个值得注意的配置细节set :keep_releases, 5— 只保留最近 5 次发布节省磁盘空间append :linked_dirs, log, tmp/pids, ...— 日志与临时目录跨版本软链发布后数据不丢失set :whenever_identifier— 让定时任务标识随环境区分避免多台机器 cron 冲突 执行第一次 Capistrano 部署在本地项目根目录运行cap production deployCapistrano 会依次完成检出代码 →bundle install部署到vendor/bundle→yarn install并预编译 Webpacker 资源 → 自动创建并迁移 PostgreSQL 数据库 → 配置 Passenger 并重启 Nginx。生产环境的数据库连接串通过环境变量DATABASE_URL注入见 config/database.yml生产连接池设为 15。建议把DATABASE_URL、RAILS_MASTER_KEY等写入服务器部署用户的~/.profileCapistrano 执行远程命令时会自动加载。⏰ 让 RSS 自动更新Sidekiq 与定时任务部署完成后别忘了启动引擎启动 Sidekiq生产并发数与队列配置在 config/sidekiq.ymlproduction 并发 10队列为critical/default/low。可用 systemd 管理例如cd /home/deploy/datorss/current bundle exec sidekiq -C config/sidekiq.yml安装定时任务Capfile 引入了whenever/capistrano部署时会自动把 config/schedule.rb 注册为 cron——每 8 小时执行一次rake importer:run该任务lib/tasks/importer.rake会过期待用 Token 并运行Service::Importer全量抓取已订阅的 Feed。这样一来新文章会被自动拉入数据库、建立全文索引并通过 Webhook 推给你的订阅者。✅ 部署验证与常用运维命令部署完成后按下面几步验证浏览器访问https://你的域名应看到 Dato.RSS 首页调用搜索接口curl https://你的域名/api/searches?qruby返回 JSON:API 格式的文章列表访问/feeds/new添加你的第一个 Feed稍后在首页确认条目已被抓取日常运维命令速查场景命令发布新版本cap production deploy一键回滚到上一版本cap production deploy:previous重启应用cap production restart重新编译前端资源cap production assets:precompile查看定时任务cap production whenever:update 部署常见问题排查Passenger 启动失败检查 config/puma.rb 依赖的WEB_CONCURRENCY环境变量以及 Passenger 文档链接是否指向current目录数据库迁移卡住确认服务器上已安装pgcrypto扩展首次迁移会用到前端样式缺失重新执行cap production assets:precompile并检查服务器 Node 版本定时抓取没跑crontab -l查看任务是否存在日志输出在log/schedule.log掌握以上流程后你不仅能让 Dato.RSS 稳定运行也等于掌握了任何 Rails 项目上云的通用套路。祝你部署顺利【免费下载链接】dato.rssThe best RSS Search experience you can find项目地址: https://gitcode.com/gh_mirrors/da/dato.rss创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻