繁体   English   中英

如何获得与Puma和Capistrano一起部署的Rails应用程序以重新启动

[英]How to get a Rails App Deployed with Puma and Capistrano to start on reboot

我已经成功使用Capistrano成功部署了Rails 4,Puma,Nginx应用程序。 当我部署cap production deploy一切都很有效。 我的问题是,如果服务器因任何原因重新启动或者它崩溃,它不会重新启动。

我在DigitalOcean上使用的是Debian 8。 看来Debian 8使用的是systemd ,所以我遵循了Puma的指示,但它没有用。 经过一些研究后,我发现了更多的脚本,而且看起来最合理的是:

[Unit]
Description=Rails-Puma Webserver

[Service]
Type=simple
User=myuser
WorkingDirectory=/home/myuser/apps/myapp
ExecStart=/home/myuser/.rvm/rubies/ruby-2.2.2/bin/systemd_rails server -e production
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

我在/etc/systemd/system/rails-puma.service保存了上面的文件然后我启用了它: sudo systemctl enable rails.service并最终启动它: sudo systemctl start rails-puma.service

遗憾的是,这不起作用。 这是sudo systemctl status rails-puma.service

    ● rails-puma.service - Rails-Puma Webserver
   Loaded: loaded (/etc/systemd/system/rails-puma.service; enabled)
   Active: failed (Result: start-limit) since Thu 2016-07-07 12:11:58 EDT; 4s ago
  Process: 4373 ExecStart=/home/myuser/.rvm/rubies/ruby-2.2.2/bin/systemd_rails server -e production (code=exited, status=203/EXEC)
 Main PID: 4373 (code=exited, status=203/EXEC)

Jul 07 12:11:58 mrcProd systemd[1]: rails-puma.service: main process exited, code=exited, status=203/EXEC
Jul 07 12:11:58 mrcProd systemd[1]: Unit rails-puma.service entered failed state.
Jul 07 12:11:58 mrcProd systemd[1]: rails-puma.service start request repeated too quickly, refusing to start.
Jul 07 12:11:58 mrcProd systemd[1]: Failed to start Rails-Puma Webserver.
Jul 07 12:11:58 mrcProd systemd[1]: Unit rails-puma.service entered failed state.

我在这做错了什么?

我有一个类似的服务,但我宣布略有不同的/etc/systemd/system/puma.service

[Unit]
Description=Puma Control
After=network.target auditd.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/puma/puma-start
ExecStop=/etc/puma/puma-stop

[Install]
WantedBy=multi-user.target

然后在/etc/puma/puma-start

#!/bin/bash -

cd /home/changeuser/apps/changeapp/current && ( export RACK_ENV="production" ; /home/changeuser/.rvm/bin/rvm default do bundle exec puma -C /home/changeuser/apps/changeapp/shared/puma.rb --daemon )

并在/etc/puma/puma-stop

#!/bin/bash -

cd /home/changeuser/apps/changeapp/current && ( export RACK_ENV="production" ; /home/changeuser/.rvm/bin/rvm default do bundle exec pumactl -S /home/changeuser/apps/changeapp/shared/tmp/pids/puma.state stop )

设置执行后记得

chmod +x /etc/puma/puma-start
chmod +x /etc/puma/puma-stop
systemctl enable puma

然后去测试

systemctl start puma
systemctl stop puma
systemctl restart puma
systemctl status puma

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM