我是流浪汉的新手,我正在VirtualBox 4.3.6中设置一个Node.js CentOs 6.5 x86_64开发机器并将其打包到一个流浪盒中。我的主机操作系统是Windows 8.1 Pro。
我要做的是在shell中创建一个配置,在运行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
在vagrant ssh中运行forever start -w app.js
工作正常没有问题。在谷歌搜索时,有人说这是一个权限设置问题。我尝试将vagrant用户添加到admin组并运行以下命令:
$ 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
答案 0 :(得分:0)
在黑暗中这是一个镜头,但它可能是一个路径问题。我的设置不同(Ubuntu,Puppet),但是能够从命令行执行Forever而不是通过配置执行Forever的症状是相似的。我必须提供Forever可执行文件的完整路径,以便通过提供运行。例如 - “/ usr / local / node / node-default / bin / forever start app.js”
答案 1 :(得分:0)
请记住,配置脚本以root身份运行