[原创]Homestead 开发环境安装笔记

Vagrant 安装 Homestead 笔记


参考文章:


1. 预先准备

命令行说明
vagrant init初始化 vagrant
vagrant up启动 vagrant
vagrant halt关闭 vagrant
vagrant ssh通过 SSH 登录 vagrant(需要先启动 vagrant)
vagrant provision重新应用更改 vagrant 配置
vagrant destroy删除 vagrant
  • VirtualBox 360软件管家

  • Git 360软件管家

  • Composer

    composer config -g repo.packagist composer https://packagist.phpcomposer.com #使用国内源
    composer global require hirak/prestissimo   #使composer并行安装包
  • WinSCP 360软件管家

  • proxifier 指定任意程序走代理

2. 安装Box

前往 Vagrant Cloud 查找所需的Box, 本例为 laravel/homestead , 当前版本为 6.1.0

安装Box主要有3种方式

  • 从 Vagrant Cloud 在线安装 vagrant box add laravel/homestead

    国内网络环境不大容易崩.. 墙内不推荐

  • 从指定url地址安装(略)

  • 本地文件夹安装

    先输入 vagrant box add laravel/homestead 选择所需虚拟机版本(此处选virtualbox), 命令行会输出下载地址, 下载完毕后会得到一个 laravel-homestead-6.1.0.box(自行重命名)

    virtualbox 6.1.0 版本对应的下载地址:

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

    注意 所在目录必须 没有 中文名, 否则一定会失败!!!!

    快速安装: vagrant box add "laravel/homestead-6.1.0" ./laravel-homestead-6.1.0.box

    或者是创建一个 metadata.json 文件(与laravel-homestead-6.1.0.box同一目录 ), 内容为

      {
          "name": "laravel/homestead",
          "versions": 
          [
              {
                  "version": "6.1.0",
                  "providers": [
                      {
                        "name": "virtualbox",
                        "url": "virtualbox.box"
                      }
                  ]
              }
          ]
      }

    执行添加命令

    vagrant box add metadata.json

    查看当前已安装box列表 vagrant box list

    (安装成功后 metadata.jsonlaravel-homestead-6.1.0.box 可删除)

3. 安装Homestead

  1. git clone https://github.com/laravel/homestead.git Homestead 下载Homestead控制脚本
  2. cd Homestead && git checkout v7.7.0 使用稳定版本
  3. bash init.shinit.bat 创建 Homestead.yaml配置文件

会生成一下三个文件

  • Homestead.yaml - 主要配置信息文件,我们可以在此文件中配置 Homestead 的站点和数据库等信息;
  • after.sh - 每一次 Homestead 盒子重置后(provision)会调用的 shell 脚本文件;
  • aliases - 每一次 Homestead 盒子重置后(provision),会被替换至虚拟机的 ~/.bash_aliases 文件中,aliases 里可以放一些快捷命令的定义
  1. 修改 Homestead.yaml 配置文件

参数说明

  • 虚拟机配置

    ip: "192.168.10.10"
    memory: 2048
    cpus: 1
    provider: virtualbox    # 虚拟机提供类型
  • SSH密钥登陆配置

    • authorize

    主机上的公钥文件, 自动复制到虚拟机的 /home/vagrant/.ssh/authorized_keys文件中, 用于 SSH免密登陆

    • keys

    主机的SSH私钥文件, 自动复制到虚拟机的 /home/vagrant/.ssh/ 目录中, 使虚拟机能共享主机上的密钥文件, 具备等同于主机的身份认证(eg. 主机和虚拟机用同一个ssh私钥文件认证github)

    创建密钥对 ssh-keygen -t rsa -C "xxx@qq.com"

    • provider

    指定虚拟机: virtualbox, vmware_fusion, vmware_workstation, parallels

  • folders

    指定共享文件夹, 有多种共享方式: 默认, nfs, rsync 等

    注意不要瞎写, 防止覆盖一些重要目录..比如 /home/vagrant. 18-08-02 被坑了1个小时

  • sites

    配置域名映射, 可同时配置多个域名映射.

    记得在主机的 hosts 里新增 192.168.10.10 测试域名

  • databases

    配置数据库, 主机若需访问数据库则连接 127.0.0.1 和端口 33060(mysql) 或 54320(Postgres), 账号密码分别是 homestead/secret. 虚拟机中访问仍然使用 默认的 33065432 端口.

  • variables

    配置环境变量

  • ports

    配置端口映射, 默认端口映射:

    SSH: 2222 → 发送到 22

    HTTP: 8000 → 发送到 80

    HTTPS: 44300 → 发送到 443

    MySQL: 33060 → 发送到 3306

    Postgres: 54320 → 发送到 5432

    Mailhog: 8025 → 发送到 8025

    MongoDB: 27017 -> 27017

    Spark: 4040 -> 4040

参数修改后若要重新生效需执行vagrant reload --provisionvagrant provision && vagrant reload

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa
    - ~/.ssh/id_rsa.pub

folders:
    - map: E:\Codes\LearnLaravel
      to: /home/vagrant/code

sites:
    - map: homestead.test
      to: /home/vagrant/code/public
#      php: "7.1"       # 指定php版本
#      schedule: true   # 配置cron调度, 对站点使用 schedule:run 命令
#      params:          # 添加Nginx fastcgi_param 值
#      type: laravel    # 指定站点类型(默认是laravel), 支持 apache, proxy, silverstripe, statamic, symfony2, symfony4
#        - key: FOO
#          value: BAR

databases:
    - homestead

variables:
    - key: APP_ENV
      value: local

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp
  1. (可选)修改对应虚拟机名(创建多个时防止命名冲突)

    Vagrantfile中新增如下内容以修改虚拟机名

    config.vm.provider "virtualbox" do |vb|
     vb.name = "your-specific-project-name"
    end
  2. vagrant up 启动

第一次启动时,Vagrant 会做以下这几件事情:

  • 以导入的 Homestead 虚拟机盒子为模板,新建一台虚拟机;
  • 并按照 Homestead.yaml 里的配置信息,对这台新建的虚拟机进行配置;
  • 配置完成后启动虚拟机。

vagrant destroy --force 可以删除虚拟机

vagrant global-status 可查看当前系统中所有通过 vagrant创建的虚拟机

  1. SSH连接虚拟主机 vagrant ssh

版权声明:本文为love123i原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。