加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

ruby-on-rails – 如何让systemd用Puma重启Rails App

发布时间:2020-12-13 21:28:09 所属栏目:Nginx 来源:网络整理
导读:我一直在努力这一周,现在似乎找不到答案.我已经用Capistrano部署了我的Rails应用程序.我使用Puma作为服务器. 部署时,一切正常.问题是让Puma在重启和/或崩溃时启动. 为了获得部署设置,我使用了这个tutorial.我也在使用RVM.我似乎得到的问题是让服务启动Puma.

我一直在努力这一周,现在似乎找不到答案.我已经用Capistrano部署了我的Rails应用程序.我使用Puma作为服务器.

部署时,一切正常.问题是让Puma在重启和/或崩溃时启动.

为了获得部署设置,我使用了这个tutorial.我也在使用RVM.我似乎得到的问题是让服务启动Puma.这是我用过的(服务文件):

[Unit]
Description=Puma HTTP Server
After=network.target

[Service]
Type=simple

#User=my-user

WorkingDirectory=/home/my-user/apps/MyApp/current

ExecStart=/home/my-user/apps/MyApp/current/sbin/puma -C /home/my-user/apps/MyApp/shared/puma.rb

Restart=always

[Install]
WantedBy=multi-user.target

这不起作用.我开始认为问题是没有为所有用户安装Ruby,所以我为所有用户安装了RVM,但仍然遇到了同样的问题.我的服务器只有root和my-user.

看看Capistrano如何部署,它运行的命令是:cd / home / my-user / apps / MyApp / current&& (RACK_ENV = production /home/my-user/.rvm/bin/rvm default do bundle exec puma -C /home/my-user/apps/MyApp/shared/puma.rb –daemon).如果我使用上述命令,我会收到来自Systmd的错误,抱怨缺少参数.所以我用它编写了一个脚本,并获得了服务文件来调用这个脚本来启动应用程序.

这也行不通.请注意,如果我从服务器上的任何地方调用脚本,脚本会启动应用程序,因此它在配置Systemd时出现问题,但我无法弄清楚出了什么问题,我不确定如何调试它.我在System的网站上看过调试页面,但它对我没有帮助.如果我运行systemctl status puma.service,它会告诉我服务处于失败状态,但它并没有告诉我如何或为什么.

另外值得注意的是:如果我从我的App文件夹运行bundle exec puma -C /home/my-user/apps/MyApp/shared/puma.rb它可以正常工作,那么如何用Systemd服务复制这个命令呢?

最佳答案
你看过Foreman吗?
如果有多个流程,Foreman可以轻松启动和停止您的应用程序.
顺便提一下,它还提供了一个export函数,可以生成一些systemd或upstart脚本,以便(重新)启动和停止应用程序.

由于您已经在使用capistrano,因此可以使用capistrano-foreman将所有这些与capistrano完美地集成在一起.

我希望你能在这些资源中找到一些用处

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读