[原创]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
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页