2016-11-23 196 views
-1

我在Vagrant上安裝了StackEdit。我想通過一次點擊啓動Vagrant和StackEdit。 我創建的bash腳本:啓動Vagrant VM並通過shell腳本啓動Node.js腳本

#!/bin/bash 

vagrant up 

#ssh -p 2222 -i /d/stackedit/.vagrant/machines/default/virtualbox/private_key [email protected] -t '/home/vagrant/Code/start_server.sh' 

start "C:\Program Files\Mozilla Firefox\firefox.exe" http://stackedit.app:5000 

start_server.sh在VM

if [ $(ps -e|grep node|wc -l) = "0" ] ; then 
    (export PORT=5000 && node Code/Project/public/stackedit/server.js) & 
fi 
sleep 5 

exit 0 

如果我通過ssh manualy一切正常運行start_server.sh,但是當我使用ssh嘗試在啓動腳本 - 現在註釋行 - 服務器不運行。

我試過把這個腳本複製到/ect/rc.local,但結果是一樣的。 我也試過加@reboot /home/vagrant/Code/start_server.shcrontab -e,但沒有成功。

任何人都可以幫助我嗎?

我的系統是Windows 10.我使用Git Bash。

回答

2

你應該把一切都在你的Vagrantfile

運行配置

您可以從Vagrantfile使用shell provisioner

Vagrant.configure("2") do |config| 
    config.vm.provision "shell", path: "Code/start_server.sh" 
end 

檢查運行腳本,你必須在默認情況下一些選項它會運行根,所以你可以改變,如果你想運行你的腳本作爲流浪的用戶

Vagrant.configure("2") do |config| 
    config.vm.provision "shell", path: "Code/start_server.sh", privileged: false 
end 

,你也可以確保你運行你的腳本每次你啓動VM(默認情況下只運行一次或專門致電provision參數時)

Vagrant.configure("2") do |config| 
    config.vm.provision "shell", path: "Code/start_server.sh", run: "always" 
end 

系統後打開網站運行

Vagrantfile是一個ruby腳本,因此您可以從文件中調用任何命令,但它會立即在任何場合運行該命令。

然後,如果你想開始後箱運行,你可以使用vagrant trigger plugin,並完成類似

Vagrant.configure(2) do |config| 
    ..... 
    config.trigger.after :up do 
    system("open", "http://stackedit.app:5000") 
    end 
end 
+0

謝謝您的回答。一切都很好! –