2014-01-26 61 views
1

我是新來的流浪漢,我在VirtualBox 4.3.6中設置了一個Node.js CentOs 6.5 x86_64開發機器並將它打包到一個流浪盒子中。我的主機操作系統是Windows 8.1 Pro。如何永久運行節點流浪工具外殼

我所試圖做的是創造外殼,運行vagrant upbootstrap.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 

在顛沛流離的SSH運行forever start -w app.js沒有問題的正常工作。雖然在谷歌搜索有人說這是一個權限設置問題。我嘗試添加流浪漢用戶到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

這有點在黑暗中拍攝的,但它可能是一個路徑問題的。我的設置不同(Ubuntu,Puppet),但能夠從命令行執行Forever但不通過配置執行的症狀類似。我必須提供Forever可執行文件的完整路徑才能通過規定運行。例如 - 「在/ usr /本地/節點/節點缺省的/斌/永遠啓動app.js」

+0

嗯,我想我必須使用它在VirtualBox無遊民腳本 –

0

記住,配置以root身份運行