Homestead 与 虚拟机
Laravel Homestead 是一个官方预封装的 Vagrant box,提供给你一个完美的开发环境,你无需在本机电脑上安装 PHP、HHVM、Web 服务器或其它服务器软件。并且不用再担心系统被搞乱!Vagrant box 为你搞定一切。如果有什么地方出错了,你也可以在几分钟内快速的销毁并重建虚拟机!
-
VirtualBox – Oracle 公司的虚拟机软件, 能运行在当前大部分流行的系统上;
-
Vagrant – 一个虚拟机管理软件。提供简单、优雅的方式来管理与配置虚拟机,Homestead 构建于 Vagrant 之上, Homestead 正是构建在 Vagrant 之上;
-
Laravel Homestead – 是 Laravel 官方预封装的一个 Vagrant Box,它是一台虚拟机的原型,运行在 VirtualBox 上,提供一个完美的开发环境,你无需在本机电脑上安装 PHP、HHVM、Web 服务器或其它服务器软件。并且不用再担心系统被搞乱,如果有什么地方出错了,可以在几分钟内快速的销毁并重建虚拟机!
Homestead 可以在 Windows、Mac 或 Linux 系统上面运行,包括以下两个东西
- 一个 vagrant box 虚拟机, 里面包含了 Nginx Web 服务器、PHP 7.0、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 开发时所需要用到的各种软件。
- Github 代码库, 里面装载着 vagrant 的配置脚本, 用来自动化配置网络, 端口映射, 等一些开发时候用到的配置;
安装 virtualbox 和 vagrant
virtualbox 和 Vagrant 都提供了GUI软件,并且支持所有平台,点击链接下载对应平台的软件并安装即可。
安装 Homestead Vagrant box
当 VirtualBox / VMware 以及 Vagrant 安装完成后,你使用以下命令将 laravel/homestead 这个 box 安装进你的 Vagrant 程序中。box 的下载会花费你一点时间,具体的下载时长由网络速度决定:
vagrant box add laravel/homestead
安装时会先让选择Provider,这里需要根据自己的虚拟机来选择,我选择的是virtualbox
$ vagrant box add laravel/homestead
==> box: Loading metadata for box 'laravel/homestead'
box: URL: https://atlas.hashicorp.com/laravel/homestead
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.
1) hyperv
2) parallels
3) virtualbox
4) vmware_desktop
Enter your choice: 3
实际安装过程中,安装过程总是很漫长,所以这里提供第二种安装方式
-
复制上一种安装方式中的box下载链接,使用迅雷或其他工具进行下载
-
下载完成后,修改文件名,建议如下格式:
homestead-virtualbox-[版本号].box 例如:homestead-virtualbox-2.0.0.box
-
在文件同级目录下面创建文件 metadata.json,内容如下:
{ "name": "laravel/homestead", "versions": [ { "version": "[版本号]", "providers": [ { "name": "virtualbox", "url": "/absoulute/path/to/homestead-virtualbox-[版本号].box" } ] } ]
}
-
添加box并检查
# 添加 vagrant box add /path/to/metadata.json # 检查 vagrant box list
操作如下图所示
克隆Homestead并初始化
克隆代码仓库,推荐在当前用户的根目录中进行
cd ~
git clone https://github.com/laravel/homestead.git Homestead
初始化,这个命令会创建 Homestead.yaml 文件,这个文件会被放置在 ~/.homestead 目录中:
bash init.sh
配置Homestead
-
配置共享文件夹
在 Homestead.yaml 文件的
folders
属性里列出所有想与 Homestead 环境共享的文件夹。这些文件夹中的文件若有变更,它们将会在你的本机电脑与 Homestead 环境 自动更新同步 。可以在这里设置多个共享文件夹:folders: - map: ~/Code to: /home/vagrant/Code
若要启用 NFS,只需要在共享文件夹的设置值中加入一个简单的参数:
folders: - map: ~/Code to: /home/vagrant/Code type: "nfs"
-
配置站点信息
sites
属性可以帮助你可以轻易指定一个 域名 来对应到 Homestead 环境中的一个目录上。在 Homestead.yaml 文件中已包含了一个网站设置范本。同样的,你也可以增加多个网站到你的 Homestead 环境中。Homestead 可以同时为多个 Laravel 应用提供虚拟化环境:sites: - map: homestead.app to: /home/vagrant/Code/Laravel/public
如果你在 Homestead box 配置之后更改了 sites 属性,那么应该重新运行
vagrant reload --provision
来更新 Nginx 配置到虚拟机上。配置的站点域名
-
安装 MariaDB
如果希望使用
MariaDB
来替换MySQL
,可以在 Homestead.yaml 文件中增加一个mariadb
的选项,这个选项会移除 MySQL 并安装 MariaDB。因为 MariaDB 可用作 MySQL 的替代品,所以在数据库配置信息里,还是选用 mysql 配置项。box: laravel/homestead ip: "192.168.20.20" memory: 2048 cpus: 4 provider: virtualbox mariadb: true
-
连接端口
以下本地电脑连接端口将会被转发至 Homestead 环境:
- SSH:2222 → 转发至 22
- HTTP:8000 → 转发至 80
- HTTPS:44300 → 转发至 443
- MySQL:33060 → 转发至 3306
- Postgres:54320 → 转发至 5432
如果需要的话,也可以修改 Homestead.yaml 借助指定连接端口的通信协议来转发更多额外的连接端口给 Vagrant box:
ports: - send: 93000 to: 9300 - send: 7777 to: 777 protocol: udp
在 Homestead 中,已经预装了 MySQL 与 Postgres 两种数据库。如果想要从本机电脑上通过 Navicat 或者是 Sequel Pro 来连接数据库,可以通过
127.0.0.1
来使用端口33060 (MySQL)
或54320 (Postgres)
连接。帐号密码分别是homestead / secret
。
###相关操作
-
启动 Vagrant box
cd Homestead vagrant up
-
关闭 Vagrant box
cd Homestead vagrant halt
-
登录 Vagrant box
cd Homestead vagrant ssh
-
移除 Vagrant box
cd Homestead vagrant destroy --force