对ruby服务设置自动重启,出错并解决(记录)
来源:互联网 发布:ubuntu如何合理分区 编辑:程序博客网 时间:2024/06/09 17:47
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=alwaysWorkingDirectory=/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=alwaysWorkingDirectory=/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/binExecStart=/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=alwaysWorkingDirectory=/home/slateExecStart=/bin/bash -lc 'bundle exec middleman server'[Install]WantedBy=default.target
执行之前的systemctl命令发现执行成功了!
对此,ExecStart
为什么这么写,就需要man了。man bash
查找-l 和-c 选项意义。man文档对此介绍的内容较多,在此,不便复述,若不愿查看篇幅较长的英文文档,可百度man bash 中文版
。
- 对ruby服务设置自动重启,出错并解决(记录)
- monit 监控并自动重启服务
- monit 监控并自动重启服务
- monit设置服务自动重启
- centos设置服务自动重启
- shell 实现的自动无限重启脚本,出错自动重启服务
- zabbix通过curl命令判断web服务是否正常并自动重启服务
- zabbix通过curl命令判断web服务是否正常并自动重启服务
- python 自动重启服务
- NODEjs自动重启服务
- tomcat 设置为服务,并自动启动
- 将程序设置为服务,在系统登录界面自动启动(解决:不间断运行的程序遇到电脑重启,且电脑登录需要账号和密码)
- 检测tomcat服务状态,并能自动重启的代码
- svn自动生成并简易配置repository和重启服务的脚本
- 检测tomcat服务状态,并能自动重启的代码
- Android 实现监听开机启动开启后台服务,并实现自动重启。
- 检测tomcat服务,实现崩溃自动重启并发送邮件提醒
- 定时 监控 shell 服务宕机自动重启,并发送短信通知
- Eclipse的.setting目录详解-
- java对象创建过程
- LINUX下JBOSS的安装及配置
- 文章标题
- swift-集成touch id功能 指纹验证
- 对ruby服务设置自动重启,出错并解决(记录)
- MFC 随窗口变化
- CENTOS防火墙简单操作
- wget命令
- xcode 编译 c
- c++学习网站
- 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- 揭开正则表达式的神秘面纱
- java基础(8)反射