gpt4 book ai didi

Vagrant 与 Hyper-V Provider 一起运行 Laravel Homestead

转载 作者:行者123 更新时间:2023-12-03 14:49:54 27 4
gpt4 key购买 nike

使用新安装的 Laravel 和 Laravel Homestead 我一直试图让 Vagrant 启动,但它一直超时。我尝试使用 Default虚拟交换机,以及 DockerNATNewInternalVirtualSwitch这是我使用 Hyper-V Manager 添加的虚拟交换机.

我知道我可以将提供程序保留为 VirtualBox 并关闭 Hyper-V,但是由于我们将 Vagrant 和 Docker 用于不同的应用程序,因此在过去几天中这样做变得乏味,因为 Docker for Windows在 Windows 10 Pro 上需要打开 Hyper-V,因此每次您必须关闭并在任一方向重新启动时。

有没有人让 Laravel Homestead 使用 Hyper-V 提供程序工作,您必须采取哪些步骤才能使网络正常工作,这似乎是问题所在?

Homestead.yaml

ip: 192.168.10.10
memory: 2048
cpus: 1
provider: hyperv
authorize: ~/.ssh/example/id_rsa.pub
keys:
- ~/.ssh/example/id_rsa
folders:
-
map: 'D:\Projects\example\server'
to: /home/vagrant/server
sites:
-
map: server.app
to: /home/vagrant/server/public
databases:
- example
name: example
hostname: example

Vagrant 向上
Bringing machine 'example' up with 'hyperv' provider...
==> example: Verifying Hyper-V is enabled...
==> example: Importing a Hyper-V instance
example: Please choose a switch to attach to your Hyper-V instance.
example: If none of these are appropriate, please open the Hyper-V manager
example: to create a new virtual switch.
example:
example: 1) DockerNAT
example: 2) Default Switch
example: 3) NewInternalVirtualSwitch
example:
example: What switch would you like to use? 3
example: Cloning virtual hard drive...
example: Creating and registering the VM...
example: Setting VM Integration Services
example: Successfully imported a VM with name: ubuntu-16.04-amd64_1
==> example: Starting the machine...
==> example: Waiting for the machine to report its IP address...
example: Timeout: 120 seconds
example: IP: fe80::215:5dff:fe38:107
==> example: Waiting for machine to boot. This may take a few minutes...
example: SSH address: fe80::215:5dff:fe38:107:22
example: SSH username: vagrant
example: SSH auth method: private key <--- Stalls out for a couple minutes

错误
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.

If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.

If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.

If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.

更新

也试过 tip 4使用外部虚拟交换机并使其更进一步,但在尝试分配主机名时仍然失败并出现错误:
==> example: Machine booted and ready!
==> example: Setting hostname...
No host IP was given to the Vagrant core NFS helper. This is
an internal error that should be reported as a bug.

最佳答案

编辑:在完成所有设置并测试工作流程后,我回到 VirtualBox + Homestead 并禁用 Hyper V。底线是 Windows 和 Linux 彼此不太兼容,虽然 Hyper V 是 Windows 原生的,但接下来的一切都不会甚至像复制文件和设置权限这样的简单任务也需要大量的劳动。

我会在下面留下我的答案,也许其他人或者我将来会回来。

我只是花了一天的时间试图让它工作,但我不能,但我想出了一个至少对我更有效的解决方案,所以我会在这里分享它。

如果您的工作站运行带有 Hyper V 的 Windows 10 专业版,并且您知道如何设置生产服务器,那么它可能适合您。

这个想法是放弃 Homestead 并像在 Hyper V 上做生产服务器一样设置本地服务器:

  • 启用 Hyper V
  • 下载您的服务器操作系统镜像(我是 Ubuntu 18.04)并用它创建一个虚拟机。
  • list of software included in homestead 中选择您需要的并将它们安装在虚拟机上(对我来说是 Nginx、PHP、PostgreSQL、Git、Python 和 Composer)。

  • 在这一点上,你几乎在 Hyper V 上拥有了定制的 Homestead。登录虚拟机,复制它的 IP(它应该在登录时显示它,但如果没有,这里是一个在 Ubuntu ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//' 上启动它的命令),将它输入到浏览器窗口中,它应该会显示默认的 Nginx 首页。

    这很容易,但问题是这个 ip 是动态的,它会不断重置。最困难的部分是让它静止。
  • 将 Hyper-V 管理器中的 ip 设置为静态 right click the virtual machine -> Settings -> Network Adapter -> Advanced Features .重启一切
  • 在虚拟机 ( guide for Ubuntu 18.04 ) 的操作系统中将 ip 设置为静态。请注意,主机 Hyper V vEthernet 适配器的 ip 地址(在 Win 10 上使用 ipconfig 启动)是虚拟机操作系统的网关地址。

  • 所以从我的角度来看有利有弊。

    优点:
  • 在 Windows + Hyper V 上的运行速度比在 Windows + Oracle Virtual Box 上更快、更干净
  • 可定制和可更新。更新 Homestead 的唯一方法似乎是删除它并下载新的。

  • 缺点:
  • 如果您不熟悉生产服务器设置,则很难设置
  • 设置静态IP真的是一个痛苦的很多黑客
  • 在 Linux 和 Windows 之间访问文件需要 Samba依赖
  • 管理通过 Windows 访问的 Linux 文件的权限很复杂
  • Linux guest 似乎无法通过 Hyper V 访问 GPU
  • 关于Vagrant 与 Hyper-V Provider 一起运行 Laravel Homestead,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47785848/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com