Laravel Homestead的安装及使用(windows环境)

一、什么是Laravel Homestead

Laravel Homestead 是一个官方预封装的 Vagrant box ,它为你提供了一个完美的开发环境,你不需要在本地机器安装 PHP、 web 服务器和其他的服务器软件。你再也不用担心会弄乱你的操作系统了! Vagrant boxes 是一次性的。 如果出现问题, 你可以在几分钟内销毁并重新创建 box !

Homestead 可以运行在任何 Windows、 Mac、 或 Linux 系统, 它包括了 Nginx web 服务器, PHP 7.3、 PHP 7.2、 PHP 7.1、 MySQL、PostgreSQL、Redis、 Memcached、 Node 以及你开发 Laravel 所需要的东西。

二、为什么要使用Laravel Homestead

Laravel Homestead可以保持开发环境的一致性,对于开发而言,开发环境不一致造成的代码不能正常运行简直是一场噩梦,作者就曾经深受其害。。。

然而是不是必须用Laravel Homestead?不一定。Laravel Homestead解决的本质问题是开发环境的一致性,docker其实也是一种很好的方案,但既然Laravel提供出这种方案也是值得学习一下的。

三、安装 VirtualBox 和 Vagrant

VirtualBox 是 Oracle 公司的开源虚拟机软件。VirtualBox 号称是最强的免费虚拟机软件,它不仅功能齐全,而且性能也很优异!VirtualBox 支持大部分流行的系统,如:Mac, Windows, Linux 等。

Vagrant 是用来管理虚拟机的工具,支持当前主流的虚拟机系统如 VirtualBox、VMware、AWS 等。Vagrant 的主要作用是提供一个可配置、可移植和复用的软件环境。Vagrant 让你通过编写一个 Vagrantfile 文件来控制虚拟机的启动、虚拟机网络环境的配置、虚拟机与主机间的文件共享,以及启动后自动执行一些配置脚本,如自动执行一个 Shell Script 来安装一些必备的开发工具,如安装配置MySQL、PHP,甚至是自动配置 Nginx 站点。这意味着,在一个多人开发的项目中,你只需要同步 Vagrantfile 文件,就可以保证参与项目的每个人各自的机器上拥有一致的开发环境。

至于如何在windows环境下安装这两个软件就不过多介绍了,提供下两个软件的下载地址。

VirtualBox官网
Vagrant官网

四、Homestead 介绍

Homestead包含了两个东西:

  • Homestead 管理脚本
  • Homestead Box 虚拟机盒子

1、Homestead 管理脚本

Homestead 脚本使用 Ruby 和 Shell 脚本编写而成。原理是对 Vagrantfile 文件做定制。将从 ~/Homestead/Homestead.yaml 读取的配置信息,在 provision 时,解析为 Vagrant 命令并进行对虚拟机的配置。

Homestead 脚本的作用在于,提供了极其简单易用的接口,使我们只需要通过傻瓜化配置,即可完成复杂的任务。以下是几个常用的任务:

  • IP 配置,端口映射
  • Nginx Site 创建
  • 数据库创建
  • 主机文件夹挂载到虚拟机等任务

2、Homestead Box 虚拟机盒子

homestead.box 虚拟机盒子是提前打包好的 Vagrant Box 虚拟机盒子,里面可以预装所有你在使用开发时所需要用到的各种软件。

五、安装和使用 Homestead

1、安装 Homestead Vagrant Box

安装完 VirtualBox / VMware 和 Vagrant 之后, 你可以在终端执行下面的命令将 laravel/homestead box 添加到 Vagrant 中安装。 你可能需要几分钟的时间来下载 box , 因为它取决于你的网络连接速度:

$ vagrant box add laravel/homestead

如果命令执行失败了,请确保Vagrant是最新版本。

2、安装 Homestead

建议将代码克隆到你的 “home” 目录下的 Homestead 文件夹中, 这样 Homestead box 就可以作为你的所有 Laravel 项目的主机:

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

因为 Homestead 的 master 分支并不是稳定的,你应该使用打过标签的稳定版本。你可以在 GitHub 发行页 上找到最新的稳定版本:

$ cd ~/Homestead

// 克隆想要的版本
$ git checkout v8.1.0

克隆 Homestead 仓库以后, 在 Homestead 目录中使用 bash init.sh 命令来创建 Homestead.yaml 配置文件。 此 Homestead.yaml 文件将被放在 Homestead 目录中:

// Mac Linux
$ bash init.sh

// windows
$ init.bat

3、设置

---
ip: "192.168.10.10"					# 虚拟机IP
memory: 2048					# 虚拟机内存大小
cpus: 1					# 虚拟机CPU数量
provider: virtualbox					# 提供器 virtualbox | vmware_fusion | vmware_workstation | parallels | hyperv
# mariadb: true					#	安装mariadb替代MySQL
mongodb: true					# 安装mongodb,默认用户名:homestead,默认密码:secret

# 如果你要安装 Elasticsearch, 你可以在 Homestead.yaml文件中添加 elasticsearch 选项并指定支持的版本号。
# 默认安装会创建一个名为 'homestead' 的集群。
# 注意永远不要赋予 Elasticsearch 超过一半的操作系统的内存,因此请保证你的 Homestead 至少分配了两倍于 Elasticsearch 的内存:
elasticsearch: 2

# 默认安装的 Neo4j 会将数据库用户名设置为 homestead 对应的密码设置为 secret。
# 要查看 Neo4j 可以在浏览器访问 http://homestead.test:7474。
# Neo4j 对外提供了3个端口:7687 (Bolt)、7474 (HTTP)、7473 (HTTPS) 用于从客户端访问。
neo4j: true					# 安装neo4j

backup: true					# 备份数据库

authorize: ~/.ssh/id_rsa.pub					# 公钥SSH KEY

# 你可以通过编辑 Homestead 目录下的 aliases 文件为 Homestead 机器添加 Bash 别名:
# alias c='clear'
# alias ..='cd ..'

keys:
    - ~/.ssh/id_rsa					# 私钥SSH KEY

folders:					# 共享文件夹
    - map: ~/code
      to: /home/vagrant/code

	- map: ~/code1					#	配置多个项目
      to: /home/vagrant/code1

sites:					# 配置 Nginx 站点
    - map: homestead.test					# 这里的域名需要添加到host文件
      to: /home/vagrant/code/public
	# 配置站点类型 apache | apigility | expressive | laravel(默认)  | proxy | silverstripe | statamic | symfony2 | symfony4 | zf
	type: "symfony2"
	# 站点参数
	params:
		- key: FOO
		  value: BAR
	# 配置Cron调度器
	# Laravel 提供了一个简便的方式来调度 Cron 任务,通过 Artisan 命令 schedule:run 调度便会在每分钟运行一次。
	# schedule:run 命令会检查定义在你 App\Console\Kernel 类中的调度任务,以此判断哪个任务该被运行。
	# 如果你想对 Homestead 站点使用 schedule:run 命令,你需要在定义站点时将 schedule 选项设置为 true:
	# 该站点的 Cron 任务会被定义在虚拟机的 /etc/cron.d 文件夹中。
	schedule: true
	# 多php版本,可用"7.1","7.2","7.3"(默认),只兼容nginx
	php: "7.3"

databases:
    - homestead

variables:					# 配置环境变量
	- key: APP_ENV
	  value: local

# ports:				# 自定义端口转发
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

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

# zray:
#  If you've already freely registered Z-Ray, you can place the token here.
#     - email: foo@bar.com
#       token: foo
#  Don't forget to ensure that you have 'zray: "true"' for your site.

3.1 配置 Mailhog

Mailhog 可以轻松的抓取到你发送的电子邮件并进行检查,而无需将邮件真正发送给收件人. 开始之前, 请更新你的 .env 文件并使用如下邮件设置:

MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

3.2 配置 Minio

Minio 是一个开源的对象存储服务器,具有与 Amazon S3 兼容的API。
要安装 Minio ,可以通过下面的配置来修改你的 Homestead.yaml 文件
默认 Minio 会在端口9600上运行。你可以访问 http://homestead:9600/ 来查看 Minio 控制面板。
默认账户为homestead,默认密码为 secretkey。当访问 Minio 时,你需要总是使用 us-east-1 时区。

minio: true	# Homestead.yaml配置

要使用 Minio ,你需要在 config/filesystems.php 配置文件中调整S3磁盘配置。你需要在磁盘配置中添加use_path_style_endpoint选项,并将url键更改为endpoint:

's3' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => env('AWS_BUCKET'),
    'endpoint' => env('AWS_URL'),
    'use_path_style_endpoint' => true
]

最后,确保你的 .env 文件配置了以下设置:

AWS_ACCESS_KEY_ID=homestead
AWS_SECRET_ACCESS_KEY=secretkey
AWS_DEFAULT_REGION=us-east-1
AWS_URL=http://homestead:9600

3.3 默认端口转发

SSH: 2222 → 转发至 22
ngrok UI: 4040 → 转发至 4040
HTTP: 8000 → 转发至 80
HTTPS: 44300 → 转发至 443
MySQL: 33060 → 转发至 3306
PostgreSQL: 54320 → 转发至 5432
MongoDB: 27017 → 转发至 27017
Mailhog: 8025 → 转发至 To 8025
Minio: 9600 → 转发至 9600

3.4 自定义转发接口

# Homestead.yaml
ports:
    - send: 50000
      to: 5000
    - send: 7777
      to: 777
      protocol: udp

3.5 多PHP版本

# 支持命令行切换版本
php7.1 artisan list
php7.2 artisan list
php7.3 artisan list

3.6 Web服务器

Homestead 默认使用 Nginx 作为 web 服务器。
然而,如果站点类型被设置为 apache 时,Apache 也会被安装。
虽然两种 web 服务器可以同时存在,但它们不能同时运行。
flip shell 命令可以很方便地实现 web 服务器之间的切换。
flip 命令会自动检测当前运行的服务器类型,然后关闭它,再启动另外一类服务器。
只需 SSH 进入你的 Homestead 虚拟机,在终端运行该命令即可:

flip

3.7 邮件

Homestead 包含 Postfix 邮件代理,默认端口是 1025 。
所以,你可以让你的应用使用 smtp 邮件驱动在 localhost 端口是 1025。
然后,所有发送的邮件会被 Postfix 处理然后被 Mailhog 接收。
用浏览器打开 http://localhost:8025 去看你发的邮件。

3.8 网络接口

Homestead.yaml 的 networks 属性用于配置你的 Homestead 环境的网络接口。如果需要的话你可以配置很多的网络接口:

networks:
    - type: "private_network"
      ip: "192.168.10.20"

启用 bridged 接口,需要添加一个 bridge 设置并且把网络类型更改为 public_network:

networks:
    - type: "public_network"
      ip: "192.168.10.20"
      bridge: "en1: Wi-Fi (AirPort)"

启用 DHCP, 只需从配置中将 ip 选项去掉即可:

networks:
    - type: "public_network"
      bridge: "en1: Wi-Fi (AirPort)"

3.9 扩充 Homestead

你可以使用 Homestead 根目录中的 after.sh 脚本扩充 Homestead。可在此脚本中,添加配置和自定义虚拟机所需的任何命令。
在自定义 Homestead 时,Ubuntu 可能会询问您是否要保留程序包的原始配置,或使用新配置文件覆盖它。为避免这种情况,应该在安装软件包时使用以下命令,以避免覆盖以前由 Homestead 编写的任何配置:

sudo apt-get -y \
    -o Dpkg::Options::="--force-confdef" \
    -o Dpkg::Options::="--force-confold" \
    install your-package

3.10 更新 Homestead

更新 Homestead 只需要两个简单的步骤。首先,运行 vagrant box update 更新 Vagrant box :

$ vagrant box update

然后,你需要更新 Homestead 源代码。如果你使用 git 克隆仓库安装,你可以在仓库目录下运行 git pull origin master 命令。

如果你是通过项目 composer.json 文件安装的,你需要确保你的 composer.json 文件包含 “laravel/homestead”: “^7” 并更新你的依赖,然后运行:

$ composer update

4、提供器配置

4.1 VirtualBox

  • natdnshostresolver

默认的, Homestead 的配置 natdnshostresolver 设置为 on 。这样可以允许 Homestead 使用你的宿主机操作系统中的 DNS 配置。如果你想更改,将下面两行添加到你的 Homestead.yaml 文件中:

provider: virtualbox
natdnshostresolver: off

4.2 Windows 上的符号链接

如果符号链接在你的 Windows 主机上无法正常工作,你需要添加下面的代码到 Vagrantfile 文件中:

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end

5、Vagrant Box 常用命令

命令解释
vagrant box list查看目前已有的box
vagrant box add新增加一个box
vagrant box remove删除指定box
vagrant init初始化 vagrant
vagrant up启动 vagrant
vagrant sshssh登录 vagrant
vagrant suspend挂起 vagrant
vagrant reload重启 vagrant
vagrant halt关闭 vagrant
vagrant status查看 vagrant 状态
vagrant destroy删除 vagrant

6、查看效果

做完简单的配置以后,执行启动命令再把Laravel的框架代码放到配置文件里的对应位置就可以根据配置文件中的ip地址来访问了,当然前提记得要配好host。

$ vagrant up

成功效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值