对ruby服务设置自动重启,出错并解决(记录)

原创 2016年11月09日 13:46:56

rails之类的服务通过systemd设置网上资料蛮多的,下面内容也许只能做简单参考。
日前,安装一个静态文档模板slate,该程序是使用通过ruby写的,slate项目github地址:https://github.com/lord/slate 。安装过程,所需依赖版本,在此网址均有描述,在此不再复述。
本来安装完并没有考虑让其自动重启,但因其挂掉频率过高,故考虑之。
在/etc/systemd/system目录下编辑文件:

# cat slate-server.service
[Unit]
Description=slate_server container

[Service]
Restart=always
WorkingDirectory=/home/slate   
ExecStart=/usr/local/rvm/gems/ruby-2.3.0/bin/bundle exec /usr/local/rvm/gems/ruby-2.3.0/bin/middleman server

[Install]
WantedBy=default.target

如上所示Restart=always意为一直重启,WorkingDirectory=/home/slate意为在该目录下启动此服务(bundle需要在此目录下查找Gemfile文件,middleman需要在此目录下查找config.rb文件),ExecStart=/usr/local/rvm/gems/ruby-2.3.0/bin/bundle exec /usr/local/rvm/gems/ruby-2.3.0/bin/middleman server意思更明显,意为启动时使用此命令。书写完毕后,执行如下命令:

# systemctl daemon-reload
# systemctl enable slate-server.service
# systemctl start slate-server.service
# systemctl status slate-server.service

会发现启动失败,通过如下命令,查看详细错误报告:

# journalctl -xu slate-server.service

查看后你会发现启动时不知道ruby路径,变添加路径:

# cat slate-server.service
[Unit]
Description=slate_server container

[Service]
Restart=always
WorkingDirectory=/home/slate 
Environment=PATH=/usr/local/rvm/gems/ruby-2.3.0/bin:/usr/local/rvm/gems/ruby-2.3.0@global/bin:/usr/local/rvm/rubies/ruby-2.3.0/bin:/usr/local/rvm/bin
ExecStart=/usr/local/rvm/gems/ruby-2.3.0/bin/bundle exec /usr/local/rvm/gems/ruby-2.3.0/bin/middleman server

[Install]
WantedBy=default.target

执行之前的systemctl命令,还是发现执行不了,没辙了,只得google了。。。。。
找到了这么个网址:https://github.com/mperham/sidekiq/blob/master/examples/systemd/sidekiq.service 看到了这么一句ExecStart=/bin/bash -lc 'bundle exec sidekiq -e production' 而且并没有加PATH路径,故先尝试吧,再找原因,修改slate-server.service文件内容如下:

# cat slate-server.service
[Unit]
Description=slate_server container

[Service]

Restart=always
WorkingDirectory=/home/slate
ExecStart=/bin/bash -lc 'bundle exec middleman server'

[Install]
WantedBy=default.target

执行之前的systemctl命令发现执行成功了!

对此,ExecStart为什么这么写,就需要man了。man bash 查找-l 和-c 选项意义。man文档对此介绍的内容较多,在此,不便复述,若不愿查看篇幅较长的英文文档,可百度man bash 中文版

版权声明:本文为博主原创文章,未经博主允许不得转载。

解决启动WebLogic输入用户名密码问题以及密码重置

启动WebLogic时需要输入该Domain的用户名和密码,而在生产环境中,一般会要求不要在每次启动时都输入用户名密码,简化操作的复杂度,而通过一些简单的配置就可以达到这样的效果,通常的做法有两种: ...
  • rznice
  • rznice
  • 2014年02月12日 16:01
  • 9592

Windows 2003服务器重启自动登录和锁定设置

win2003自动登陆方法有两种 第一种方法比较复杂,但可以帮助您完全掌握Windows 2003自动登录的设置方法。首先单击“开始 运行”,在输入框中键入“regedit”打开注册表编辑器...
  • andybbc
  • andybbc
  • 2016年01月22日 15:34
  • 1343

Ruby on Rails创建项目和服务启动中的一些问题

记录本人Ruby on rails 初学时创建项目过程中遇到的小问题。
  • cgz_1986
  • cgz_1986
  • 2015年03月22日 17:50
  • 1261

windows7+Apache2.0.64+php5.2.17配置时重启Apache服务出错解决

Apache和php的安装按部就班。 安装时全部选择了默认安装路径,按照步骤对httpd.conf和php.ini进行配置之后,打开localhost默认主页,显示php正常安装的信息。 新建测试...
  • cidisk
  • cidisk
  • 2012年11月28日 01:44
  • 746

将程序设置为服务,在系统登录界面自动启动(解决:不间断运行的程序遇到电脑重启,且电脑登录需要账号和密码)

============================================== 查看电脑是否自动重启 ==========================================...
  • arno1988
  • arno1988
  • 2013年11月25日 15:25
  • 5809

Android Service被关闭后自动重启,解决被异常kill 服务

  • 2013年10月14日 16:30
  • 13KB
  • 下载

Android Service被关闭后自动重启,解决被异常kill 服务

网1方法: Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然...
  • anlidengshiwei
  • anlidengshiwei
  • 2015年10月21日 13:15
  • 2215

如何解决eclipse中修改后台代码ctrl+s时总是自动重启服务的问题

如何解决eclipse中修改后台代码ctrl+s时总是自动重启服务的问题
  • luoweiyou
  • luoweiyou
  • 2017年01月17日 16:16
  • 2423

mysql服务检测并自动重启

  • 2017年11月21日 17:10
  • 3.83MB
  • 下载

自动监控VPS负载并重启Web服务的脚本

  • 2011年05月24日 10:45
  • 756B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对ruby服务设置自动重启,出错并解决(记录)
举报原因:
原因补充:

(最多只允许输入30个字)