前言

参考网站:
Homestead安装配置-中文文档
Homestead安装配置-视频讲解
记录下安装Homestead的步骤,以及需要注意的点
以下命令行均使用 git-bash

一、安装所需要的软件

1、安装下列软件,安装方法很简单就不多说了

  • git:
  • vagrant:
  • VirtualBox:一个免费的虚拟机软件

2、由于vagrant默认的工作目录是 C:\Users\用户名\.vagrant.d,如若C盘空间不足,可以将此移至其他目录如:D:\.vagrant.d,然后在环境变量中配置VAGRANT_HOME即可

VAGRANT_HOME=D:\.vagrant.d

1.png

二、下载、添加vagrant Box

1、安装Vagrant Homestead盒子,选择一个支持virtualBox的版本。查看版本

  1. vagrant box add laravel/homestead // 直接安装最新版本,但有可能不支持virtualbox
  2. vagrant box add laravel/homestead --box_version=9.1.0 // 选择对应的版本
  3. vagrant box add laravel/homestead ./virtualbox.box // 安装本地的版本

命令详解 vagrant box add 【本地box名字】 【本地box文件的名字】

  1. vagrant box add metadata.json // 通过配置文件安装

       {
       "name": "laravel/Homestead",  // 本地box名字,就是vagrant box list 是查看的名字
       "versions": [{
           "version": "9.1.0",  // 版本
           "providers": [{
               "name": "virtualbox", // 支持的是hyper-v、virtualbox等
               "url": "./CentOS-7-x86_64-Vagrant-1910_01.VirtualBox.box" // 文件的地址
           }]
       }]
       }
    

2.jpg
如果下载过慢,可以通过上图的Downloading获取到下载链接,通过其他方式下载后安装(要下载其他版本,就修改下版本和后面的virtual)

2、若使用安装最新版本,如若当时最新版本同时支持Hyper-v、virtual等,会要求您选择一个版本,输入对应的数字即可!

5.png

至此Homestead所需环境安装成功

三、安装Homestead

1、克隆Homestead

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

2、克隆完成后,需要检查Homestead的版本,因为 master 分支不会总是稳定版本,需要通过Github Release Page检出为release版本

cd ~/Homestead

// Clone the desired release...
git checkout v8.0.1

3、接下来,运行初始化命令来创建Homestead.yaml配置文件

// Mac/Linux...
bash init.sh  // 虽然我用的Windows,但由于是使用git-bash执行的,因此使用这个命令

// Windows...
init.bat

四、配置Homestead.yaml

打开Homestead目录内的Homestead.yaml文件

---
ip: "192.168.10.10"   #虚拟机的IP,可以通过这个IP访问站点
memory: 2048    #内存大小
cpus: 2     #Cpu核心个数
provider: virtualbox  #虚拟机平台,用virtualbox装的一定要确认这里是virtualbox。(hyper-v、virtualbox、vmware_fushion、  vmware_workstation、parallels)

authorize: ~/.ssh/id_rsa.pub  #ssh的公钥

keys:
    - ~/.ssh/id_rsa  #ssh的私钥,配置了ssh以后,登录虚拟机可以直接在终端输入homestead ssh进入

folders:
    - map: D:/projects
      to: /home/vagrant/projects

sites:
    - map: lsw.test
      to: /home/vagrant/projects/laravel-swoole-wechat/public

databases:
    - homestead

features:
    - mariadb: false
    - ohmyzsh: false
    - webdriver: false

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp
  • folders映射目录

映射的目录。map:主系统的目录,to:要映射的虚拟机目录!
随着站点数量增加,会遇到性能问题,这时应该映射每个项目到对应的vagrant文件夹

    - map: D:/projects
      to: /home/vagrant/projects

    - map: D:/code
      to: /home/vagrant/code
      type: "nfs"  # 开启nfs

     - map: ~/code
      to: /home/vagrant/code
      type: "rsync"
      options: # 通过options配置同步文件夹
          rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
          rsync__exclude: ["node_modules"]
  • 配置 Nginx 站点

    sites:

    • map: homestead.test
      to: /home/vagrant/code/my-project/public #注意laravel一定是指定到public目录

五、接下来先初始化下vagrant,然后启动vagrant

vagrant init  //切记clone下来的Homestead默认有了,不用再执行一次。初始化,只有第一次时执行,就是创建个VagrantFile,已经有了就不用执行这个命令了
vagrant up 启动

六、登录vagrant,对环境进行配置

vagrant ssh:远程连接

composer config -g repo.packagist composer https://packagist.phpcomposer.com // 修改Composer全局镜像

为指定项目安装Homestead

上面为全局的Homestead安装,但有时候我们需要对某一单个项目安装时,只需要在项目根目录中执行:

composer require laravel/homestead --dev

再执行make命令,生产Vagrantfile和Homestead.yaml配置文件

Mac/Linux:
php vendor/bin/homestead make

Windows:
vendor\\bin\\homestead make

最后通过vagrant up启动

===================================================================================================================================================================================================

环境优化

vagrant中内置了环境,但这些环境很多对国内用户不是很友好的,因此需要对其做些处理,如Composer,Npm等

 composer config -l -g   // 查看composer的全局配置

 composer config -g repo.packagist composer https://packagist.phpcomposer.com  // 改为国内镜像

 composer config -g repo.packagist composer https://packagist.org  // 改为默认的镜像

==============================================================================

日常使用

常用命令:
vagrant status :查看虚拟机状态
vagrant init:初始化虚拟机
vagrant up: 启动虚拟机
vagrant ssh:登录虚拟机
vagrant halt:关闭虚拟机
vagrant destroy --force:销毁虚拟机
vagrant reload --provision :重新加载虚拟机配置

由于经常会在Homestead文件夹中执行vagrant命令,因此我们可以把全局的Homestead 目录做成一个通用命令

1、Mac/Linux/Windows(git-bash)
修改/etc/profile文件,如果是使用git的git bash命令工具,可以在git的安装目录中找到/etc/profile

function homestead(){
  (cd /H/Homestead && vagrant $*)  // 注意:/H/Homestead是我的全局Homestead目录(H:/Homestead)
}
function hsd(){  // 简写
  (homestead $*)
}

2、Windows cmd
如果习惯使用cmd命令,可以创建一个homestead.bat文件,然后把这个文件加入环境变量,就可以快速使用命令了

homestead.bat,注意修改目录。如果需要简写,复制homestead,改名为hsd,并将文件目录加到环境变量Path中即可

@echo off

set cwd=%cd%
set homesteadVagrant=H:\Homestead

cd /d %homesteadVagrant% && vagrant %*
cd /d %cwd%

set cwd=
set homesteadVagrant=

3、设置别名

alias vm="ssh vagrant@127.0.0.1 -p 2222"

====================================================================================================================================================================================================================================================================

常见错误:

一、 Check your Homestead.yaml file, the path to your private key does not exist.

解决方法:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
eval "$(ssh-agent -s)"
ssh-add -K ~/.ssh/id_rsa

二、vagrant box和virtualbox版本不对应

3.png
解决办法:

1、下载virtualbox支持的 vagrant Box文件
2、或者安装virtualbox (通常都是这个)

三、Adding box 'base' (v0) for provider: virtualbox

6.png

通常是因为你把Homestead原本的Vagrantfile文件删了,重新执行了一次vagrant init导致的

原因分析:

在使用vagrant init命令初始化配置文件的时候未指定虚拟机名称,也就是命令:vagrant box add BoxName boxpath中的BoxName。

解决办法:

1.再来一遍,重新生成Vagrantfile配置文件

vagrant init BoxName

2.修改Vagrantfile文件中config.vm.box参数:

config.vm.box = "base"

将base修改为你的虚拟机名称。

标签: none

添加新评论