0

Vagrant に StackEdit をインストールしました。ワンクリックで Vagrant と StackEdit を起動したい。私はbashスクリプトを作成しました:

#!/bin/bash

vagrant up

#ssh -p 2222 -i /d/stackedit/.vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1 -t '/home/vagrant/Code/start_server.sh'

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

そしてstart_server.shVMで

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

exit 0

start_server.sh手動で sshを実行するとすべてが機能しますが、開始スクリプトで ssh を使用して試してみると (コメント行が追加されました)、サーバーが実行されません。

このスクリプトを にコピーしようとしまし/ect/rc.localたが、結果は同じです。私も追加しようと@reboot /home/vagrant/Code/start_server.shしましcrontab -eたが、成功しませんでした。

誰でも私を助けることができますか?

私のシステムは Windows 10 です。Git Bash を使用しています。

4

1 に答える 1

4

あなたはあなたの中にすべてを入れるべきですVagrantfile

#プロビジョニングの実行

シェル プロビジョナーを使用して、Vagrantfile からスクリプトを実行できます。

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

チェック、デフォルトでいくつかのオプションがあり、ルートとして実行されるため、スクリプトをvagrantユーザーとして実行する場合は変更できます

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

また、VM を起動するたびにスクリプトを実行するようにすることもできます (デフォルトでは、スクリプトは 1 回だけ実行されるか、具体的にprovisionパラメーターを呼び出したときに実行されます) 。

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

#システム稼働後にウェブサイトを開く

Vagrantfile は ruby​​ スクリプトなので、ファイルから任意のコマンドを呼び出すことができますが、コマンドはいつでもすぐに実行されます。

次に、ボックスの開始後に実行したい場合は、vagrant トリガーを使用して次のようにすることができます

Vagrant.configure(2) do |config|
  .....
  config.trigger.after :up do |trigger|
    trigger.run = {inline: 'system("open", "http://stackedit.app:5000"')
  end
end
于 2016-11-24T09:43:39.087 に答える