3

プロビジョニング システム (CHEF) の最後のステップとして、Ruby Mongrel スクリプトを実行したいと考えています。したがって、次のエントリを含む upstart .conf ファイルを作成しました。

#!upstart
description "mongrel server"
author      "daniele"

start on startup
stop on shutdown

# Automatically restart process if crashed
respawn

# Essentially lets upstart know the process will detach itself to the background
expect fork

# Run before process
pre-start script
end script

# Start the process
script
   cd /vagrant/trunk
   /bin/sh /vagrant/trunk/script/server -p 3000 >> /home/vagrant/log.txt
end script

ただし、log.txt ファイルは空で、netstat -an | を実行しています。grep 3000 は何も表示しません。スクリプトは実行可能ではないと思っていましたが、chmod を実行しても何も変わりませんでした。

ただし、スクリプトを手動で実行すると、サーバーを起動できます

vagrant@ubuntu10:/vagrant/trunk$ ./script/server 
=> Booting Mongrel
=> Rails 2.3.4 application starting on http://0.0.0.0:3000
/usr/local/rvm/gems/ruby-1.8.7-p352/gems/rails-2.3.4/lib/rails/gem_dependency.rb:119:Warning:Gem::Dependency#version_requirements is deprecated and will be removed on or after August 2010.  Use #requirement
=> Call with -d to detach
=> Ctrl-C to shutdown server

スクリプトの内容は次のとおりです。

#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../config/boot'
require 'commands/server'

RVM と Ruby 1.8.7、Rubygems 1.3.7 で Vagrant を実行しています。ブートストラップのレシピは次のとおりです。

[...]
template "mongrel.upstart.conf" do
   path "/etc/init/mongrel.conf"
   source "mongrel.upstart.conf.erb"
   mode 0644
   owner "root"
   group "root"
end

service "mongrel" do
   provider Chef::Provider::Service::Upstart
   supports :restart => true, :start => true, :stop => true
   action [:enable, :start]
end

何か案が?ありがとう

4

3 に答える 3

2

問題は、Vagrant がコードがマウントされている共有フォルダーのセットアップを完了する前に、Upstart 構成が実行されることです。後でコマンドラインから手動で実行すると、すでにマウントされています。

解決策が何であるかはわかりません。これが行われるブート プロセスに接続できれば、次のようなイベントを発行できます。

initctl emit vagrant-mounted

Upstart構成が待機できること

start on vagrant-mounted
于 2011-11-30T02:14:02.413 に答える
0

少なくとも Ubuntu 12.04 では、mountall ジョブによって発行される「マウントされた」シグナルを待つことができます。

start on mounted

上記のスタンザは、Vagrant 共有フォルダーで機能するはずです。

于 2013-07-09T10:37:44.830 に答える
0

追加することで、同様の問題を解決しました

sleep 10

スクリプトに。このような:

...
# Start the process
script
    sleep 10
    cd /vagrant/trunk
    /bin/sh /vagrant/trunk/script/server -p 3000 >> /home/vagrant/log.txt
end script
....
于 2012-10-26T16:17:23.593 に答える