Systemd和Puma处于无限启动循环中

时间:2017-06-19 02:57:02

标签: ruby-on-rails ruby ubuntu systemd puma

我用美洲狮和系统将我的头撞在墙上。我使用foreman来设置我的systemd文件,但是不能从它的重启循环中获得puma。 Ubuntu 16。

Jun 19 02:48:12 ip-172-31-28-225 systemd[1]: Stopped rajlogviewer-web.service.
Jun 19 02:48:12 ip-172-31-28-225 systemd[1]: Started rajlogviewer-web.service.
Jun 19 02:48:12 ip-172-31-28-225 rajlogviewer-web.service[8954]: APP_DIR = /home/ubuntu/rajlogviewer, SHARED_DIR /home/ubuntu/rajlogviewer/shared
Jun 19 02:48:12 ip-172-31-28-225 rajlogviewer-web.service[8954]: [8954] Puma starting in cluster mode...
Jun 19 02:48:12 ip-172-31-28-225 rajlogviewer-web.service[8954]: [8954] * Version 3.6.0 (ruby 2.3.3-p222), codename: Sleepy Sunday Serenity
Jun 19 02:48:12 ip-172-31-28-225 rajlogviewer-web.service[8954]: [8954] * Min threads: 1, max threads: 6
Jun 19 02:48:12 ip-172-31-28-225 rajlogviewer-web.service[8954]: [8954] * Environment: production
Jun 19 02:48:12 ip-172-31-28-225 rajlogviewer-web.service[8954]: [8954] * Process workers: 2
Jun 19 02:48:12 ip-172-31-28-225 rajlogviewer-web.service[8954]: [8954] * Preloading application
Jun 19 02:48:14 ip-172-31-28-225 rajlogviewer-web.service[8954]: [8954] * Listening on tcp://0.0.0.0:3000
Jun 19 02:48:14 ip-172-31-28-225 rajlogviewer-web.service[8954]: [8954] * Listening on unix:///home/ubuntu/rajlogviewer/shared/tmp/sockets/puma.sock
Jun 19 02:48:14 ip-172-31-28-225 rajlogviewer-web.service[8954]: [8954] * Daemonizing...
Jun 19 02:48:24 ip-172-31-28-225 systemd[1]: rajlogviewer-web.service: Service hold-off time over, scheduling restart.
Jun 19 02:48:24 ip-172-31-28-225 systemd[1]: Stopped rajlogviewer-web.service.
Jun 19 02:48:24 ip-172-31-28-225 systemd[1]: Started rajlogviewer-web.service.

它会无限期地重新启动。这是我的systemd init文件 /etc/systemd/system/rajlogviewer-web.service

[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/rajlogviewer/current
#Environment=PATH=/home/ubuntu/.rvm/gems/ruby-2.3.3@rajlogsViewer/bin:$PATH
WorkingDirectory=/home/ubuntu/rajlogviewer/current/
ExecStart=/bin/bash -lc 'PATH=/home/ubuntu/.rvm/gems/ruby-2.3.3@rajlogsViewer/bin:$PATH exec /home/ubuntu/.rvm/bin/rvm ruby-2.3.3 do bundle exec puma -C /home/ubuntu/rajlogviewer
/shared/config/puma.rb --daemon'
Restart=no
RestartSec=10
StandardInput=null
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=%n
KillMode=mixed
TimeoutStopSec=5

应用程序通常在启动时使用'cap production puma:start'启动时启动5秒,因此RestartSec = 10应该可以正常工作。制作20秒没有任何区别。

puma.stderr.log和puma.stdout.log没什么好玩的。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您应该从systemd中删除--daemon选项,有几种类型的单位:

  

配置影响的单元进程启动类型   ExecStart的功能和相关选项。其中之一:

     

简单 -   默认值。以ExecStart开始的过程是主要过程   的服务。

     

分叉 - 从ExecStart开始的过程产生了一个   子进程成为服务的主要进程。父母   启动完成后进程退出。

     

oneshot - 此类型是   类似于简单,但过程在开始之前退出   单位。 dbus - 这种类型与简单类似,但随后的单位是   仅在主进程获得D-Bus名称后启动。

     

通知 - 这个   type类似于simple,但后续单元仅在之后启动   通过sd_notify()函数发送通知消息。

     

空闲 -   类似于简单,服务二进制文件的实际执行是   延迟到所有工作完成,这避免了混合状态   输出与shell输出服务。

默认值为简单,为了使用puma配置,您使用的--daemon选项与systemd配置相矛盾。