2016-02-29 3 views
3

Я использую машину бродяг и pm2. Я создал сценарий запуск с помощью:PM2 ошибка при перезагрузке или перезагрузке Vagrant.

pm2 update ubuntu 

, а затем сбрасывал весь запущенный процесс по

pm2 save 

Однако, когда я перезагрузить бродячую машину бродячей перезагрузки. Весь процесс имеет следующий статус:

enter image description here

И если я обновлю его с помощью

pm2 update 

весь процесс обратно в оперативный режим. Если я убью и воскрешу весь процесс, тогда вернусь и в онлайновом режиме. Только когда брандмауэр перезапускается, он дает ошибку.

журналы PM2 дают следующую ошибку

Error: spawn node ENOENT 
at exports._errnoException (util.js:856:11) 
at Process.ChildProcess._handle.onexit (internal/child_process.js:179:32) 
at onErrorNT (internal/child_process.js:345:16) 
at nextTickCallbackWith2Args (node.js:455:9) 
at process._tickDomainCallback (node.js:410:17) 

Я перепробовал все возможное решение, которое я мог бы оштрафовать никто не работал до сих пор.

ПРИМЕЧАНИЕ: Та же процедура отлично работает, когда хоста Ubuntu машина перезапуска.

+0

Любые новости по этому вопросу? У меня такая же проблема –

+0

Nope. Провел много времени на эту проблему, но не смог найти удовлетворительного ответа. Пожалуйста, дайте мне знать, если вы найдете ответ на него. – Anakooter

+0

У меня также есть эта точная проблема. – ddelrio1986

ответ

0

Итак, я нашел эти вопросы, ища ту же проблему. В конце концов я понял, что проблема заключается в том, что сценарии запуска PM2 выполняются до того, как Vagrant установил ваш общий каталог. Таким образом, PM2 не находит ваши скрипты при перезапуске. Вот почему он работает, когда Vagrant закончил, и вы SSH и перезапустите PM2. К тому времени, Vagrant повторно установил ваш общий каталог. Один из способов, с которым я столкнулся, это использовать rsync вместо этого, таким образом, файлы уже находятся на виртуальной машине при перезагрузке.

-1

Как сказано в ответе Джейсона, это вызвано порядком загрузки и монтажа общих каталогов.

Основное решением является использование оболочки инициализации бродячей, добавляя в него что-то похожее на следующее к бродячому файлу (после той части, где ручка монтажной общих каталогов):

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

Это приведет к Vagrant запустить эту линию, когда vagrant up называется, это гарантировано :run => 'always' вариант, что означает это работает все время, а не только на vagrant provision которая установлена ​​по умолчанию для config.vm.provision

Источник: PM2 on vagrant - starting app AFTER shared folder is mounted