Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何让systemd使用Puma重新启动Rails应用程序_Ruby On Rails_Linux_Nginx_Puma_Systemd - Fatal编程技术网

Ruby on rails 如何让systemd使用Puma重新启动Rails应用程序

Ruby on rails 如何让systemd使用Puma重新启动Rails应用程序,ruby-on-rails,linux,nginx,puma,systemd,Ruby On Rails,Linux,Nginx,Puma,Systemd,我已经为此挣扎了一周,似乎真的找不到答案。我已经用Capistrano部署了Rails应用程序。我使用Puma作为服务器 部署时,一切正常。问题是让Puma在重新启动和/或崩溃时启动 为了获得部署设置,我使用了这个。我也在使用RVM。我似乎遇到的问题是让服务启动Puma。以下是我使用的(服务文件): 那不行。我开始认为问题是Ruby没有为所有用户安装,所以我为所有用户安装了RVM,但仍然会遇到同样的问题。我的服务器只有root用户和我的用户 看看Capistrano是如何部署的,它运行的命令是:

我已经为此挣扎了一周,似乎真的找不到答案。我已经用Capistrano部署了Rails应用程序。我使用Puma作为服务器

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

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

那不行。我开始认为问题是Ruby没有为所有用户安装,所以我为所有用户安装了RVM,但仍然会遇到同样的问题。我的服务器只有root用户和我的用户

看看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时会出现问题,但我无法找出问题所在,也不确定如何调试它。我在系统的网站上看到了调试页面,但它对我没有帮助。如果我运行
systemctl status puma.service
它只会告诉我服务处于失败状态,但不会告诉我如何或为什么

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

您研究过吗? 如果应用程序有多个进程,Foreman可以轻松启动和停止应用程序。 顺便提一下,它还提供了一个函数,可以生成一些
systemd
upstart
脚本,供您(重新)启动和停止应用程序

由于您已经在使用capistrano,您可以使用它将所有这些与capistrano很好地集成


我希望您能在这些资源中找到一些用处。最后,问题有两个:1)没有为所有用户正确安装rvm,这意味着deployer用户没有可用的ruby/bundle/etc,其次,脚本也是错误的。以下是对我有效的修订脚本供参考:

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

[Service]
Type=simple

User=deployer

WorkingDirectory=/var/www/apps/MRCbe/current

ExecStart=/bin/bash -lc 'bundle exec puma -C /var/www/apps/MRCbe/shared/puma.rb'

Restart=always

[Install]
WantedBy=multi-user.target

我会调查一下工头,然后再回来(如果工作正常的话,可能会做标记作为答案)。谢谢你的链接。对我有用!我整个上午都在找!嗨,我在ubuntu16.04上遇到了同样的问题,这对我也很有效。非常感谢。为我工作,谢谢你,伙计!
[Unit]
Description=Puma HTTP Server
After=network.target

[Service]
Type=simple

User=deployer

WorkingDirectory=/var/www/apps/MRCbe/current

ExecStart=/bin/bash -lc 'bundle exec puma -C /var/www/apps/MRCbe/shared/puma.rb'

Restart=always

[Install]
WantedBy=multi-user.target