Laravel/Homestead vagrant box 从系统中消失了

Laravel/Homestead vagrant box disapeared from system

我有一个已经完成的 php 项目,对于初学者来说,我必须将它放在服务器上(计划使用 Heroku)。我是 PHP 虚拟盒子、Laravel 等方面的新手。制作该项目的人建议使用 Laravel,所以我开始按照这种方式进行操作。我 运行 正在 Windows 10 上使用 cmder 作为我的终端。

  1. 我下载了 VirtualBox & Vag运行t.
  2. 然后使用 commander 我添加了 Laravel/Homestead 框 通过做:

    vagrant box add laravel/homestead
    

    在文件夹 c:\Users\Jacky\vagrant\ubuntu 中(至少我认为这是我添加它的地方)

  3. 后来我相信我做到了 vag运行t 初始化 或 vagrant init laravel/homestead
  4. 无论我之后做了什么,我都能够 运行 vag运行t ssh 并进入系统。在那里我可以检查并安装了 php 和作曲家。
  5. 然后我按照 laravel 的说明在 c:\Jack\Homestead
  6. 创建了一个 homestead 文件夹
  7. 运行 git 签出 v7.19.2
  8. 运行 init.bat
  9. 并配置了 Homestead.yaml 文件

我制作了如下文件夹图

- map: C:\Jack\myapp\public
      to:  /home/vagrant/myapp

和以下站点地图

 - map: myapp.test
      to:  /home/vagrant/myapp/public

我对整个目录结构有点困惑,不确定我是否应该将 myapp 目录放在 c:\Jack\Homestead\myapp 中,或者是否像我在 c 中那样做:\Jack\myapp 可以。

无论如何它仍然有效,我可以在我的网络浏览器中看到它。到目前为止一切都很好。

然后项目说明告诉我执行以下操作

  1. 运行作曲家安装
  2. 有一个 env.example 文件我必须更改为 .env 并更改一些设置
  3. 运行 php artisan key:generate
  4. 运行 php artisan 迁移 --seed
  5. 运行 php artisan passport:install
  6. 运行 php artisan storage:link

此时我得到一个无法创建符号链接的错误,所以我用谷歌搜索并在 Stack Overflow 中找到以管理员身份重新启动。我 运行 cmder 作为管理员并且在过去的 30 分钟内一直心脏病发作,因为它告诉我我必须 vag运行t 并且当我这样做时它找不到我的盒子甚至做 vagrant box list

我没有结果,它想重新下载,这需要 3 个多小时。 我刚刚在没有管理员的情况下重新启动,我确实发现我的 Laravel/Homestead 框已列出,所以我假设它是为我的用户而不是管理员安装的,所以我想我不能 运行 cmder 作为管理员。

所以现在我正在尝试再次连接,我不确定我应该在哪个文件夹中 运行ning vag运行t 命令,但我似乎只有一个 Vag运行tFile 在我的 C:\Jack\Homestead 文件夹中,所以如果我在其他任何地方 运行 vag运行t 命令,它会给我一个错误,提示需要 vag运行t 环境,等等

所以我在 homestead 文件夹中尝试了以下操作:

  1. vagrant ssh - 我得到:

    VM must be running to open SSH connection. Run `vagrant up to start the virtual machine.

    (在我的 VirtualBox 管理器中,我看到了我的 homestead-7 VM 运行ning)

  2. vagrant up - 我得到:

    Bringing machine 'homestead-7' up with 'virtualbox' provider...
    ==> homestead-7: Importing base box 'laravel/homestead'...
    ==> homestead-7: Matching MAC address for NAT networking...
    ==> homestead-7: Checking if box 'laravel/homestead' is up to date...
    A VirtualBox machine with the name 'homestead-7' already exists.
    Please use another name or delete the machine with the existing
    name, and try again.
    
  3. vagrant ssh 'homestead-7' 我也得到

    VM must be running to open SSH connection. Run vagrant up to start the virtual machine.

问题是,一旦我连接上,我想我仍然会遇到同样的问题 运行ning:

php artisan storage:link

所以我的问题如下:

  1. 我的项目 myapp 文件夹应该放在哪里,它应该在 C:\Jack\myapp 还是我应该把它放在 C:\Jack\Homestead\myapp
  2. Vag运行tFile 是否应该只在我的 Homestead 文件夹中,我应该在哪里 运行我所有的 Vag运行t 命令来自?喜欢 vagrant sshvagrant up
  3. 现在我收到这些错误 运行ning vagrant sshvagrant up
  4. 如何再次连接
  5. 一旦我连接,我假设我会得到同样的错误 运行ning php artisan storage:link 因为 运行 作为管理员似乎不起作用我该怎么办?
  6. 我假设我应该在 myapp 文件夹中 运行 git initheroku create 这样正确吗?

1) 我总是将我的应用程序文件夹放在 Homestead 文件夹之外。您的 Homestead 文件夹包含一个 git 项目,因此如果您将应用程序放入其中,您应该将该文件夹包含在 .gitignore 文件中。我认为如果您将应用程序放在其他地方会更容易。

2) Vagrantfile 应该只在你的 Homestead 文件夹中 (c:\Jack\Homestead)。您应该 运行 Homestead 文件夹中的所有 vagrant 命令。

3) 当我尝试 运行 'vagrant up' 到使用相同框名称 'homestead-7' 的项目时,我曾经遇到过这个错误。如果您有版本控制,请检查文件 c:\Jack\Homestead\.vagrant\machines\homestead-7\virtualbox\id 是否已更改。如果是这样,请尝试恢复旧值并再次 运行ning 'vagrant up'。

4) 您 运行 处于 windows 环境中,对吗? Windows 在 vagrant 中使用符号链接可能有点喜怒无常。如果你尝试 npm install 一些东西,你会遇到同样的问题。我解决这个问题的方法是 运行 npm(和 php artisan storage:link)在虚拟机之外,在主机 pc 中,在 app 文件夹的根目录中。提醒一下:要做到这一点,您需要在您的主机上安装 php。

5) 所有与应用程序(而不是虚拟机)相关的命令都应该 运行 在虚拟机中,在文件夹应用程序中(例如:/home/vagrant/code/myapp)或在应用程序文件夹中你的主机。多亏了 vagrant,这两个文件夹是同步的。