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 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.json
及laravel-homestead-6.1.0.box
可删除)
3. 安装Homestead
git clone https://github.com/laravel/homestead.git Homestead
下载Homestead控制脚本cd Homestead && git checkout v7.7.0
使用稳定版本bash init.sh
或init.bat
创建Homestead.yaml
配置文件
会生成一下三个文件
- Homestead.yaml - 主要配置信息文件,我们可以在此文件中配置 Homestead 的站点和数据库等信息;
- after.sh - 每一次 Homestead 盒子重置后(provision)会调用的 shell 脚本文件;
- aliases - 每一次 Homestead 盒子重置后(provision),会被替换至虚拟机的
~/.bash_aliases
文件中,aliases
里可以放一些快捷命令的定义
- 修改
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
. 虚拟机中访问仍然使用 默认的3306
或5432
端口.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 --provision
或vagrant 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
(可选)修改对应虚拟机名(创建多个时防止命名冲突)
config.vm.provider "virtualbox" do |vb| vb.name = "your-specific-project-name" end
vagrant up
启动
第一次启动时,Vagrant 会做以下这几件事情:
- 以导入的 Homestead 虚拟机盒子为模板,新建一台虚拟机;
- 并按照
Homestead.yaml
里的配置信息,对这台新建的虚拟机进行配置;- 配置完成后启动虚拟机。
vagrant destroy --force
可以删除虚拟机
vagrant global-status
可查看当前系统中所有通过vagrant
创建的虚拟机
- SSH连接虚拟主机
vagrant ssh