部署 使用 Kamal2 部署 rails 遇到问题

rubyfun · 2024年12月23日 · 最后由 Rei 回复于 2024年12月23日 · 55 次阅读

最近使用 Kamal 2 部署 Rails 应用,应用服务器使用的 unicorn,之前在@Rei所搭建的 geeknote 平台进行了提问,也非常感谢 Rei 帮忙解决了非常多疑惑,之前的帖子如下 https://geeknote.net/ae86/posts/3110 目前 Rails 的服务器可以正常启动,但遇到如下几个问题

  1. unicorn 的日志文件目录,每次部署的时候,都会变化,导致要查询历史日志变得不方便
# unicorn日志文件路径
/var/lib/docker/overlay2/5b02e1e84b80b39d352f233d6922817bbd3a32f67a7070972c3b21e2e672a6d1/merged/home/deployer/rails_test/log

每次执行 kamal deploy部署的时候,随时容器 ID 的变化,unicorn 对应的日志文件目录会随之变化,从而不方便日志收集,我期望的是将日志固定写到目录 /home/deployer/rails_test 这个目录

  1. .camal/secrets 文件里面的环境变量,没有被 Kamal 2 push 到远程的 server 上面,登录远程服务器发现 ~/.kamal/apps/rails_test/env/roles/web.env文件内容为空
  1. Kamal 2 使用 kamal-proxy 进行代理,未使用 Kamal 之前,项目使用的 nginx 作为代理,ActionCable 和 Rails 共同部署,对 ActionCable 的 nginx 配置如下
location /cable {
    proxy_pass http://unix:/home/deployer/rails_test/tmp/sockets/unicorn.sock;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-Proto http;
    proxy_set_header Host $http_host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header X-Real-IP $remote_addr;
  }

请问,怎么在 kamal-proxy 里面实现如果上 nginx 的设置。

Kamal 的部署,我目前主要看了 DHH 有关的介绍,以及在 Youtube 上面的一些视频,但社区的资源较少,因此在 geeknote 提了问,又在 rubychina 上面提问,还请大家理解,也期待大家帮忙来解惑,谢谢。

第一个问题已经解决,在 camal 的 deploy.yml 文件里面,添加

volumes:
  - /home/deployer/rails_test/log:/home/deployer/rails_test/log

环境变量问题,需要在 config/deploy.yml 设置

env:
  clear:
    DB_USER: app
  secret:
    - DB_PASSWORD

这里设置了的环境变量才会 push 到远程服务器。

反向代理问题,单机情况下 kamal_proxy 可以替代 nginx,去掉 nginx。

kaml_proxy 不需要设置就可以满足 rails 需要。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号