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 ssh
和vagrant up
现在我在运行vagrant ssh
和vagrant up
时遇到这些错误,我该如何重新连接
连接后,我假设我在运行 php artisan storage:link
时会遇到同样的错误,因为以管理员身份运行似乎不起作用我该怎么办?
我假设我应该在 myapp 文件夹中运行 git init
和 heroku 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可协同跨平台开发环境