Я новичок в бродяге, и я настраиваю машину разработки 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