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

Posted

技术标签:

【中文标题】Laravel/Homestead vagrant box 从系统中消失了【英文标题】:Laravel/Homestead vagrant box disapeared from system 【发布时间】:2019-04-24 10:56:44 【问题描述】:

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

    我下载了 VirtualBox 和 Vagrant。

    然后使用指挥官我添加了 Laravel/Homestead 盒子 通过这样做:

    vagrant box add laravel/homestead
    

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

    后来我相信我做到了 流浪初始化 或vagrant init laravel/homestead 无论我后来做什么,我都能跑 流浪者 ssh 并进入系统。在那里我可以检查并安装了 php 和 composer。 然后我按照 laravel 的说明在 c:\Jack\Homestead 创建了一个 homestead 文件夹 为 v7.19.2 运行 git checkout 运行 init.bat 并配置 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 很好。

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

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

    运行作曲家安装 我必须将一个 env.example 文件更改为 .env 并更改一些设置 运行 php artisan key:generate 运行 php artisan migrate --seed 运行 php artisan passport:install 运行 php artisan storage:link

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

我不会得到任何结果,它想重新下载需要 3 多个小时。 我刚刚在没有管理员的情况下重新启动,我发现我的 Laravel/Homestead 框已列出,所以我假设它是为我的用户而不是管理员安装的,所以我想我无法以管理员身份运行 cmder。

所以现在我尝试再次连接,我不确定应该在哪个文件夹中运行 vagrant 命令,但我的 C:\Jack\Homestead 文件夹中似乎只有一个 VagrantFile,所以如果我运行 vagrant 命令在其他任何地方,它都会给我一个错误,即需要一个流浪环境,等等。

所以我在我的宅基地文件夹中尝试了以下内容:

    vagrant ssh - 我明白了:

    VM 必须正在运行才能打开 SSH 连接。运行 `vagrant up 启动虚拟机。

    (在我的 VirtualBox Manager 中,我看到我的 homestead-7 虚拟机正在运行)

    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.
    

    vagrant ssh 'homestead-7'我也明白了

    VM 必须正在运行才能打开 SSH 连接。运行vagrant up 启动虚拟机。

问题是,一旦我连接,我认为我仍然会遇到同样的问题:

php artisan storage:link

所以我的问题如下:

    我的项目 myapp 文件夹应该放在哪里,应该放在 C:\Jack\myapp 的位置还是应该放在 C:\Jack\Homestead\myapp 的位置 VagrantFile 是否应该只在我的 Homestead 文件夹中,我应该从那里运行我的所有 Vagrant 命令?喜欢vagrant sshvagrant up 现在我在运行vagrant sshvagrant up 时遇到这些错误,我该如何重新连接 连接后,我假设我在运行 php artisan storage:link 时会遇到同样的错误,因为以管理员身份运行似乎不起作用我该怎么办? 我假设我应该在 myapp 文件夹中运行 git initheroku create 是否正确?

【问题讨论】:

【参考方案1】:

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 是否已更改。如果是这样,请尝试恢复旧值并再次运行“vagrant up”。

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

5) 所有与应用程序(而非虚拟机)相关的命令都应在虚拟机、文件夹 app(例如:/home/vagrant/code/myapp)或主机的 app 文件夹内运行机器。这两个文件夹是同步的,感谢 vagrant。

【讨论】:

嗨,非常感谢您的回答我有几个问题,关于 3)我从 VBox 和文件夹中删除了 VM,然后 vagrant up 正常工作,我现在必须重新运行我之前运行过的所有命令,例如 -composer install, -php artisan key:generate & php artisan migrate --seed???? 4) 我没有安装 php,我有一个叫做 XAMP 的东西,或者我可以安装 php,但是我还必须安装 apache 和其他东西吗????如果是这样还是有更简单的方法??? 5)您将文件映射到 home/vagrant/code/myapp 而我已经完成了 home/vagrant/myapp 将它放在 /code 文件夹中会改变什么吗?这是标准吗?我的主机位置是 C:\Jack\myapp 如果我在上面从到 home/vagrant/code/myapp 我是否也应该将主机位置更改为 c:\Jack\code\myapp?? 您不必再次运行 key:generate,但肯定需要运行 migrate --seed 因为如果您破坏了您的机器,您也将丢失您的虚拟数据库。你只需要php。检查此答案以使用 XAMMP 的 php 运行命令:***.com/questions/10753024/… 关于5,你现在的路很好,可以继续这样使用。文件夹之间的链接在 Homestead.yaml 中指定,所以你很好。

以上是关于Laravel/Homestead vagrant box 从系统中消失了的主要内容,如果未能解决你的问题,请参考以下文章

Vagrant Share - Laravel Homestead,Ubuntu

Laravel Homestead Vagrant - 'vboxsf' 不可用问题

Windows上使用Vagrant打造Laravel Homestead可协同跨平台开发环境

Windows上使用Vagrant打造Laravel Homestead可协同跨平台开发环境

在 PhpStorm 中为 Laravel Homestead vagrant VM 运行测试

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