【问题标题】:How to destroy and recreate vagrant/homestead machine?如何销毁和重建 vagrant/homestead 机器?
【发布时间】:2019-07-17 19:20:33
【问题描述】:

我在 Vagrant Box(宅基地)上运行 Laravel

当我在做vagrant up 时,我收到一条消息:

: A newer version of the box 'laravel/homestead' is available and already
: installed, but your Vagrant machine is running against
: version '6.3.0'. To update to version '7.1.0',
: destroy and recreate your machine.

我应该运行哪些命令以及我应该为哪些潜在问题做好准备?

【问题讨论】:

  • 您实际上并没有 这样做——这完全是可选的。销毁和重新创建 Homestead VM 将删除其中的所有数据 - 数据库、文件等 - 因此,如果您的开发数据库或 Homestead VM 上的文件中有不可替代的东西,您需要先将其保存在某个地方。
  • 好点,谢谢。数据库是一回事。源代码 - 保存在外面。其他:Nginx - 默认有,Supervisor - 我不记得了,Composer - 有,Redis 有,cron - 不记得了...
  • 这对我来说很奇怪。我创建了一个新文件夹和git cloned the latest Laravel Homestead。到目前为止,一切都很好。但是,每当我运行vagrant up 时,我都会收到相同的消息A newer version of the box 'laravel/homestead' is available and already version '11.3.0'. To update to version '11.4.0'。然后,当我运行vagrant ssh 时,服务器初始化消息是Homestead v12.5.0 | Settler v11.4.0。宅基地和定居者版本有什么区别?那是什么意思?为什么我会收到这些消息?我错过了什么?

标签: laravel vagrant homestead


【解决方案1】:

您可以在销毁正在运行的 Homestead 之前为 Homestead 创建第二个安装。

1) 按照official documentation 安装 Homestead Vagrant Box,然后在安装 Homestead 而不是此命令时

git clone https://github.com/laravel/homestead.git ~/Homestead

运行这个

git clone https://github.com/laravel/homestead.git ~/MyHomestead

那么你需要cd ~/MyHomesteadgit checkout v8.4.0

现在您需要转到~\MyHomestead\scripts\homestead.rb 文件并将homestead-7 替换为homestead-7-my,它将为您的虚拟机中的虚拟机提供不同的名称。

现在可以关注官方文档了

1.1) 并且您总是可以通过运行

从您的 vagrant 文件夹中销毁旧的 vagrant 盒子,通常是 ~/homestead
vagrant destroy 

2) 通过运行创建一个新的 vagrant box

vagrant up --provision

3) 进入流浪汉

vagrant ssh

4) 转到您的项目(我假设您有一组数据库迁移和播种器)

cd ~/code/myproject

4.1) 你会发现redismysql 已经在那里工作了。

5) 创建数据库

php artisan migrate

6) 如果需要,让 SUPERVISOR 工作

7) 如果需要,让 cron 工作

完成

【讨论】:

    【解决方案2】:

    正如 ceejayoz 所说,您不必这样做,您可以继续运行相同的版本。 Homestead 旨在能够快速拆除/重建,所有配置都位于 Homestead.yamlVagrantfile 文件中。它应该能够使用这些配置文件为您完成繁重的工作。

    正如您所提到的,您的数据库位于 Homestead 中。如果您有一些不是本地测试数据的数据,请确保在销毁之前将其导出。有些人不推荐通过 SSH 手动修改他们的 Homestead 虚拟机(因为您应该使用 Homestead.yaml 文件进行更改),但如果您有,请保留您所做的更改以及所做更改的列表。

    以下是您在销毁之前可能想要保留的东西的概要:

    • 您的Homestead.yaml 文件,以防万一
    • 您的 Vagrantfile 文件(如果您进行了自定义更改)
    • 数据库数据
    • 您的应用程序使用/生成的文件(例如日志。)
    • aliases 文件,如果您对其进行了自定义更改
    • Elasticsearch数据(如果你使用的话)
    • Neo4j 数据(如果你使用的话)

    至于要运行的命令,文档比我说得更好:https://laravel.com/docs/5.7/homestead#updating-homestead

    【讨论】:

    • 那么,实际上我需要在当前阶段运行vagrant destroyvagrant up
    • 正确 - 但请确保在此之前按照文档中的说明进行实际更新。
    • 我喜欢 Mac 时间机器...销毁盒子,制作一个新的,然后跳入时间机器并从昨天获取您的 .env 和 .yaml 文件 :)
    猜你喜欢
    • 2016-01-23
    • 2013-03-02
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多