Как запустить инструмент навсегда для узла в бродячей оболочке обеспечения

Я новичок в бродяге, и я настраиваю машину разработки Node.js CentOs 6.5 x86_64 в VirtualBox 4.3.6 и упаковываю ее в бродячую коробку. Моя основная ОС - Windows 8.1 Pro.

Что я пытаюсь сделать, так это создать в оболочке положение, при котором при запуске vagrant up bootstrap.sh будет проверять, существует ли app.js в каталоге проекта, если он не существует, он создаст временный app.js и запустит forever start -w app.js.

В сценарии bash все работает, но когда он достигает строки forever start -w app.js, я получаю эту ошибку.

/tmp/vagrant-shell: line 14: forever: command not found
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

chmod +x /tmp/vagrant-shell && /tmp/vagrant-shell

Stdout from the command:



Stderr from the command:

/tmp/vagrant-shell: line 14: forever: command not found

Запуск forever start -w app.js в vagrant ssh работает без проблем. При поиске в google некоторые говорят, что это проблема с настройками разрешений. Я попытался добавить бродячего пользователя в группу администраторов и выполнить следующие команды:

$ sudo groupadd admin
$ usermod -G admin vagrant

Я также отредактировал файл /etc/sudoers и добавил SSH_AUTH_SOCK в опцию env_keep, закомментировал строку Defaults requiretty и добавил строку %admin ALL=NOPASSWD: ALL. Я получаю ту же ошибку.

Вот мой bootstrap.sh

#!/usr/bin/env bash
IFS='' read -r -d '' NODEAPP <<'EOF'
var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello Universe.\n');}).listen(3000, '127.0.0.1');
console.log('Listening at http://127.0.0.1:3000/');
EOF

cd /usr/share/nginx/html
if [ ! -f app.js ]; then
    echo "$NODEAPP" >> app.js
fi
forever start -w app.js

А вот мой Vagrantfile:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos65NODE"
  config.vm.box_url = "centos65NODE.box"
  config.vm.network :private_network, ip: "192.168.50.10"
  config.vm.provision :shell, :path => "bootstrap.sh"
end

person per.eight    schedule 26.01.2014    source источник


Ответы (2)


Это немного похоже на выстрел в темноте, но это может быть проблемой пути. Моя установка была другой (Ubuntu, Puppet), но симптомы возможности запуска Forever из командной строки, но не через подготовку, аналогичны. Мне пришлось указать полный путь к исполняемому файлу Forever, чтобы он запускался через provision. например - "/usr/local/node/node-default/bin/навсегда запустить app.js"

person nichols    schedule 30.01.2014
comment
ну, я думаю, я должен использовать его внутри виртуального бокса без бродяги - person per.eight; 21.02.2014

Помните, что сценарии инициализации запускаются от имени пользователя root.

person Aquarion    schedule 17.09.2015