2016-07-05 7 views
1

共有ディレクトリがマウントされた後にアプリケーションを起動するようにPM2を設定するにはどうすればよいですか?デフォルトではpm2 startupは、OSブート直後にスクリプトを実行しようとするスクリプトを追加するため、プログラムエラーが発生します(その時点までにフォルダがマウントされていないため)。あなたはVagrantfile迷惑行為を開始しているアプリケーションでのPM2の共有フォルダがマウントされた後

config.vm.provision :shell, :inline => "pm2 start /vagrant/project/server/index.js && pm2 startup", :run => 'always', privileged: false 

に以下の行を追加することができます

+0

のようにそれを書くことができ、あなたのブートあなたのVM

いつでも幕を開けるPM2 alwaysとして

By default, provisioners are only run once, during the first vagrant up since the last vagrant destroy , unless the --provision flag is set, as noted above.

Optionally, you can configure provisioners to run on every up or reload . They will only be not run if the --no-provision flag is explicitly specified. To do this set the run option to "always"

設定このコマンドを実行しますどのようにあなたのアプリを起動しますか?あなたが何かプロビジョニングする前に共有フォルダをマウントした後に実行すると、あなたは_vmを共有するフォルダをマウントしているのを見るでしょう。 –

+0

pm2ログには次のエラーがあります: 'index-0(err):chdir():いいえそのようなファイルやディレクトリ'は、迷惑メールの起動時に表示されるので、マウントされていないフォルダが原因です。マニュアル 'pm2 stop'と' pm2 start'の後、完璧に動いています – Luke

+0

**あなたのアプリをどうやって起動しますか?**あなたには不規則なプロビジョニングによってinitスクリプトがありますか? –

答えて

3

shell provisioningをお読みください。

  • inline (string) - Specifies a shell command inline to execute on the remote machine.

をあなたがそれらを入力すると、あなたがボックスにsshをするときに、コマンドラインを入力します場所です

  • privileged (boolean) - Specifies whether to execute the shell script as a privileged user or not (sudo). By default this is "true".

あなたのケースでは、falseのように設定します。暴言のユーザーはそう、それはあなたが複数のコマンドを実行したい場合は、また

config.vm.provision "shell", run: "always", privileged: false, inline: <<-SHELL 
    pm2 start /vagrant/project/server/index.js 
    pm2 startup 
    .... any command that you want to execute .... 
    SHELL 
+1

pm2と迷惑メールとの互換性の問題があるので、問題の解決策ではなく回避策に似ていますが、依然として問題が修正されています。ありがとうございます – Luke

関連する問題