我正在使用 Chef 部署我的 Rails 应用程序服务器。刚刚从 Ruby 的源代码安装切换到 RVM(因为我的部署用户有问题)。
现在我已经对我的部署进行了排序,编译了资产并安装了我所有的 gem。
我遇到的问题是用 Runit 监督独角兽..
RVM 没有以 root 用户身份安装 - 只有我的部署用户拥有它,如下所示:
$ rvm list
rvm rubies
=* ruby-2.0.0-p247 [ x86_64 ]
我可以从我的部署用户成功手动启动 Unicorn。但是,它不会作为 runit 的一部分启动。
我的运行文件看起来像这样。我也尝试过这个SO question中的解决方案,但没有成功。
#!/bin/bash
cd /var/www/html/deploy/production/current
exec 2>&1
exec chpst -u deploy:deploy /home/deploy/.rvm/gems/ruby-2.0.0-p247/bin/unicorn -E production -c config/unicorn_production.rb
如果我手动运行它,我会收到此错误:
/usr/bin/env: ruby_noexec_wrapper: No such file or directory
我创建了一个以 root 身份运行的小脚本(此处为 gist )。但是,如果我从 runit 调用它,我会看到工作人员启动,但我得到了两个 runit 进程,我无法停止或重新启动服务:
ps的输出:
1001 29062 1 0 00:08 ? 00:00:00 unicorn master -D -E production -c /var/www/html/deploy/production/current/config/unicorn_production.rb
1001 29065 29062 9 00:08 ? 00:00:12 unicorn worker[0] -D -E production -c /var/www/html/deploy/production/current/config/unicorn_production.rb
root 29076 920 0 00:08 ? 00:00:00 su - deploy -c cd /var/www/html/deploy/production/current; export GEM_HOME=/home/deploy/.rvm/gems/ruby-2.0.0-p247; /home/deploy/.rvm/gems/ruby-2.0.0-p247/bin/unicorn -D -E production -c /var/www/html/deploy/production/current/config/unicorn_production.rb
1001 29083 29076 0 00:08 ? 00:00:00 -su -c cd /var/www/html/deploy/production/current; export GEM_HOME=/home/deploy/.rvm/gems/ruby-2.0.0-p247; /home/deploy/.rvm/gems/ruby-2.0.0-p247/bin/unicorn -D -E production -c /var/www/html/deploy/production/current/config/unicorn_production.rb
我应该在这里做什么?回到运行良好的监视器?