身为一个 PHP 程序员, 你知道 Homstead 吗?

工欲善其事, 必先利其器


作为一个 PHPer, 搭建配置 PHP 开发环境是每一个 PHP 程序员的基本操作, 而我觉得 Homestead 作为 Laravel 框架官方指定的开发环境, 几乎是 PHPer 最好的选择之一.


先期准备

  1. 需要禁用 Windows自带的虚拟机, 禁用Hyper-V的命令.(需要重启)

    1
    > bcdedit /set hypervisorlaunchtype off

  2. 确保你的电脑主板支持 (VT-x) 功能, 并且需要开启这个功能 (进入BIOS界面开启, 没有开启的可以根据自己的主板型号百度下开启的方法自行开启)


  3. 需要预先下载的三个软件


  4. 全部安装完成后打开 git bash 这个应用, 运行以下生成密钥.

    1
    > ssh-keygen -t rsa -C "berrx@outlook.com"

  5. 从 github 上拉取 Homestead 文件.

    1
    > git clone https://github.com/laravel/homestead.git

  6. 进入刚刚克隆的文件, 双击 init.sh 文件, 此时目录里生成了几个必要的文件, 我们来配置一下



配置虚拟机

  1. 使用编辑器或记事本打开 homestead 目录下的 Homestead.yaml 文件. 我们此时还需要修改配置文件来用于配置我们的虚拟机.

    • 添加自己的密钥, 当你在虚拟机中使用 git 等工具时, 你使用的还是本机电脑的密钥.

      1
      2
      3
      keys:
      - ~/.ssh/id_rsa
      - ~/.ssh/id_rsa.pub
    • 修改映射目录, 虚拟机里的目录会同步到你本地, map 为本地 , to 为虚拟机目录

      1
      2
      3
      folders:
      - map: D:/code
      to: /home/vagrant/code
    • 配置你的站点地址, map 为站点地址, to 为虚拟机站点目录, type为站点类型, 支持 Thinkphp, symfony, yii等, 具体可以去 \scripts\site-types 目录去看一下

      1
      2
      3
      4
      sites:
      - map: laravel.test
      to: /home/vagrant/code/Laravel/public
      type: laravel
    • 如果你想在虚拟机初始化时添加一些其他应用, 可以先去手册里找一下, 然后添加到下面

      1
      2
      3
      4
      5
      6
      features:
      - mysql: true
      - mariadb: false
      - postgresql: false
      - ohmyzsh: false
      - webdriver: false

  2. 修改完配置后, 就可以运行命令创建我们的虚拟机了

    1
    > vagrant up

  3. 一般运行完上面的语句会出现下面的这些信息 (随着版本更新内容可能不同), 我们此时主要是要用到信息中的那条链接, 复制这条链接用于本地下载.

    1
    2
    3
    4
    5
    6
    7
    8
    Bringing machine 'homestead' up with 'virtualbox' provider...
    ==> homestead: Box 'laravel/homestead' could not be found. Attempting to find and install...
    homestead: Box Provider: virtualbox
    homestead: Box Version: >= 11.0.0, < 12.0.0
    ==> homestead: Loading metadata for box 'laravel/homestead'
    homestead: URL: https://vagrantcloud.com/laravel/homestead
    ==> homestead: Adding box 'laravel/homestead' (v11.1.0) for provider: virtualbox
    homestead: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/11.1.0/providers/virtualbox.box



本地安装

  1. 首先复制命令中的链接到浏览器或下载工具进行下载, 我的链接是这个 (随着版本更新内容可能不同).

    1
    https://vagrantcloud.com/laravel/boxes/homestead/versions/11.1.0/providers/virtualbox.box

  2. 下载完成后, box文件的文件名大概是这样: 4c526667-0956-45df-92ff-78ba76cb1148, 然后可以把它重命名为 virtualbox.box.


  3. 将下载好的文件, 添加到 vagrant 里面.(将我的目录改为自己的目录)

    1
    vagrant box add laravel/homestead C:/Users/berrx/Downloads/virtualbox.box

  4. 找到安装的目录添加一个名为 metadata_url 的文件, 用记事本代开文件, 将这个链接复制到文件里:

    c:/users/你的用户名/.vagrant.d/boxes/laravel-VAGRANTSLASH-homestead

    1
    https://atlas.hashicorp.com/laravel/homestead

  5. 目录下有一个 0 文件, 将其改为自己的版本号, 我下载的是 11.1.0 这个版本, 所以我需要将文件名修改为 11.1.0



进入虚拟机

  1. 进入你的 homestead 文件夹.

    1
    > cd D:/homestead

  2. 运行命令创建虚拟机.


    1
    > vagrant up

  3. 耐心等待一段事件之后就可以看到虚拟机创建完成 , 完成后运行命令进入虚拟机命令行操作界面

    1
    > vagrant ssh

  4. 虚拟机连接成功后, 就可以进行自己的开发了

    1
    2
    3
    4
    Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-72-generic x86_64)


    Last login: Thu Apr 22 15:25:05 2021 from 10.0.2.2



常用命令

  • 关机命令

    1
    > vagrant halt
  • 重启虚拟机

    1
    > vagrant reload
  • 重新加载配置

    1
    > vagrant provision
  • 销毁虚拟机

    1
    > vagrant destroy



使用代理

  1. 安装插件

    1
    > vagrant plugin install vagrant-proxyconf

  2. 在homestead目录下的 Vagrantfile 文件中添加如下代码, 将端口修改为自己的代理端口.

    1
    2
    3
    4
    5
    if Vagrant.has_plugin?("vagrant-proxyconf")
    config.proxy.http = "http://10.0.2.2:1080/"
    config.proxy.https = "http://10.0.2.2:1080/"
    config.proxy.no_proxy = "localhost,127.0.0.1,.example.com"
    end

  1. 运行命令后

    1
    2
    3
    > vagrant provision #应用配置

    > vagrant reload # 重启



结语

其实我觉得 homestead 最大的缺点就是在于他的安装十分复杂, 而且由于咱们的网络环境不是太好, 有可能因为各种原因导致失败. 这对于一个动辄需要几个小时安装环境的人是一个不小的考验, 但装完成后你会发现 Homestead 的功能是那么的强大, 最终你会觉得一切都是值得的!

最后如果你有无法解决的问题的话, 我给你推荐一个网站, 该站是 Laravel 的一个学习网站, 我许多知识都是从这个网站学到的, 如果你有不太懂的问题也可以从这个网站上面提问.

laravel china

身为一个 PHP 程序员, 你知道 Homstead 吗?

http://berrx.com/%E5%AE%89%E8%A3%85homestead%E6%95%99%E7%A8%8B/

作者

Berrx

发布于

2020-07-30

更新于

2021-07-28

许可协议