不能 运行 Laravel vagrant box 在 Windows 7 机器上

Can't run Laravel vagrant box on Windows 7 machine

我正在尝试 运行 vagrant homestead laravel 虚拟机,但不能。我关注 official instructions.

我的步骤:

  1. Vagrant 和 VirtualBox 安装成功。
  2. vagrant box add laravel/homestead 已下载。
  3. git clone https://github.com/laravel/homestead.git Homestead。正如我在 this video.
  4. 中看到的那样,我在根目录中看不到任何 *.yaml 文件
  5. 我打开 Git bash 并转到 Homestead 文件夹,然后键入 sh init.sh

输出:

$sh init.sh
cp: overwrite `/z/.homestead/Homestead.yaml'?`
cp: overwrite `/z/.homestead/after.sh'?`
cp: overwrite `/z/.homestead/aliases.sh'?`
Homestead initialized!

但是我看不到 Homestead.yaml 文件。我的 C:\Users\user\ 文件夹也不包含任何 .homestead 文件夹。

  1. vagrant up

输出:

 c:/projects/Homestead/scripts/homestead.rb:91:in `read': No such file or directory - Z:/.ssh/id_rsa.pub (Errno::ENOENT)
    from c:/projects/Homestead/scripts/homestead.rb:91:in `block in configure'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/plugins/kernel_v2/config/vm_provisioner.rb:72:in `call'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/plugins/kernel_v2/config/vm_provisioner.rb:72:in `add_config'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/plugins/kernel_v2/config/vm.rb:317:in `provision'
    from c:/projects/Homestead/scripts/homestead.rb:89:in `configure'
    from c:/projects/Homestead/Vagrantfile:20:in `block in <top (required)>'

    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/v2/loader.rb:37:in `call'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/v2/loader.rb:37:in `load'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/loader.rb:103:in `block (2 levels) in load'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/loader.rb:97:in `each'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/loader.rb:97:in `block in load'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/loader.rb:94:in `each'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/loader.rb:94:in `load'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/vagrantfile.rb:28:in `initialize'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/environment.rb:689:in `new'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/environment.rb:689:in `vagrantfile'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/environment.rb:441:in `host'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/environment.rb:207:in `block in action_runner'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/action/runner.rb:33:in `call'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/action/runner.rb:33:in `run'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/environment.rb:428:in `hook'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/environment.rb:671:in `unload'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/bin/vagrant:177:in `ensure in <main>'
    from C:/Vagrant/embedded/gems/gems/vagrant-1.7.4/bin/vagrant:177:in `<main>'

我在安装中遗漏了什么?

更新:

我在已安装的磁盘 Z:\ 中找到了这些文件。当我从 C:\ 开始 init.sh 时,为什么 bash 在 Z:\ 上创建文件?

Cygwin 在用户配置文件文件夹(.homestead 目录)中创建文件,但它也不会使 vagrant up 工作。

更新 2:

现在 vagrant uphomestead up 命令都给出了这个输出:

c:\projects\laravel5>homestead up
Bringing machine 'default' up with 'virtualbox' provider...
There are errors in the configuration of this machine. Please fix
the following errors and try again:

vm:
* A box must be specified.

是在 Windows 7 台和 Windows 8 台机器上完成的。

步数:

  1. 安装Git for Windows.
  2. 通过设置 Windows PATH 值更改 HOME 路径。 Article how to do it。现在,如果您在 Git Bash 中键入 cd ~,那么您必须移至您的个人资料文件夹。另外 Git Bash 从同一个文件夹开始。
  3. 安装 VagrantVirtualBox
  4. 添加 Vagrant 框 vagrant box add laravel/homestead
  5. 在您的个人资料文件夹中键入 git clone https://github.com/laravel/homestead.git Homestead
  6. 通过移动到 cd ~/.ssh 并键入 ssh-keygen -t rsa -C "yourmail@you" -f homestead.
  7. 在 Git Bash 中创建 ssh 密钥
  8. 移至 ~/Homestead 并键入 sh init.sh。它在 ~/.homestead 文件夹中创建了 3 个文件。
  9. 编辑您的 Homestead.yaml 文件。我的配置(注释行 #):

    ---
    ip: "192.168.10.10"
    memory: 2048
    cpus: 1
    provider: virtualbox
    
    #Paths to your generated SHH keys
    authorize: ~/.ssh/homestead.pub
    
    keys:
        - ~/.ssh/homestead
    
    #Folder sharing
    folders:
        - map: C:\projects\Laravels  <----your Windows mapped folder!
        to: /home/vagrant/Code   <--- VM mapped folder. Do not change it.
    
    #Add your sites here
    sites:
        - map: test.lar
        to: /home/vagrant/Code/test.lar/public
        - map: test2.lar
        to: /home/vagrant/Code/test2.lar/public
    
    #I commented it because do not want to re-create DB on each VM run
    #databases:
    #    - homestead
    
    variables:
        - key: APP_ENV
        value: local
    
  10. 编辑 \Windows\System32\drivers\etc 文件夹中的 hosts 文件并在末尾添加 2 行:

    192.168.10.10  test.lar
    192.168.10.10  test2.lar
    
  11. 现在转到 ~/Homestead 并使用 vagrant up 启动您的机器。在大多数情况下,您需要 运行 Git Bash 作为管理员。执行此命令后,您可以在 VirtualBox 中看到名为 Homestead 的 运行ning 机器。

  12. 在主机上的浏览器中打开 http://test.lar。您可以看到行 No input file specified. 一切正常。
  13. 通过键入 vagrant ssh 通过 SSH 连接到 Homestead VM,并使用 sudo su 成为 root 用户。
  14. 如果您想使用 laravel 命令创建站点,请键入:composer global require "laravel/installer=~1.1"
  15. 使用 export PATH="$PATH:~/.composer/vendor/bin"source ~/.bashrc 将 composer 全局文件夹添加到 PATH。 More info.
  16. 移至 laravel 代码文件夹 cd /home/laravel/Code 并使用 laravel new test.lar 创建您的第一个项目。
  17. 刷新您的 http://test.lar 页面并在屏幕中央看到 Laravel 5 的工作页面。有用!映射文件夹中的文件会自动同步。

就是这样。 大多数情况下,我部分使用了 this tutorial and official

我已按照 上的说明进行操作,它们运行良好。非常感谢你!我没有在其他地方找到这个答案。

不过还是有一些保留意见。我发现如果你在使用 composer global require "laravel/installer=~1.1" 安装 laravel 之前 sudo su 它将为 root 用户安装 laravel,这不是我们想要的,因为它将 laravel 保存在 /root/.composer 文件夹中,并且只能由 root 用户访问。

更好的方法是 运行 sudo composer global require "laravel/installer=~1.1" 没有 sudo su,所以 laravel 完全安装了它的要求,但在 vagrant 用户目录中。

其实,我想到了一个更好的选择(在我看来),就是把一些代码放在after.sh,位于.homestead文件夹中,当虚拟机上升(运行 vagrant up):

if [ ! -d $HOME/.composer/vendor/bin ]; then
    echo "Installing Laravel Installer!!!"

    sudo composer global require "laravel/installer=~1.1"
    echo "\nPATH=$HOME/.composer/vendor/bin:$PATH" >>$HOME/.profile
fi

这样,即使您销毁了您的 VM,当您再次 vagrant up它时,也会安装 laravel 并将 laravel 命令添加到 bash。

希望对您有所帮助。