Laravel Homestead
介绍
Laravel 力求让整个 PHP 开发体验变得愉快,包括您的本地开发环境。Vagrant 提供了一种简单、优雅的方式来管理和配置虚拟机。
Laravel Homestead 是一个官方的、预打包的 Vagrant "box",它为您提供了一个出色的开发环境,而无需在本地机器上安装 PHP、HHVM、Web 服务器和其他服务器软件。再也不用担心弄乱您的操作系统了!Vagrant box 是完全可丢弃的。如果出现问题,您可以在几分钟内销毁并重新创建 box!
Homestead 可以在任何 Windows、Mac 或 Linux 系统上运行,并包括 Nginx Web 服务器、PHP 5.6、MySQL、Postgres、Redis、Memcached 以及您开发出色的 Laravel 应用程序所需的所有其他工具。
如果您使用的是 Windows,可能需要启用硬件虚拟化(VT-x)。通常可以通过 BIOS 启用。
Homestead 目前使用 Vagrant 1.7 构建和测试。
包含的软件
- Ubuntu 14.04
- PHP 5.6
- HHVM
- Nginx
- MySQL
- Postgres
- Node(包含 Bower、Grunt 和 Gulp)
- Redis
- Memcached
- Beanstalkd
- Laravel Envoy
- Blackfire Profiler
安装与设置
安装 VirtualBox / VMware 和 Vagrant
在启动 Homestead 环境之前,您必须安装 VirtualBox 和 Vagrant。这两个软件包为所有流行的操作系统提供了易于使用的可视化安装程序。
VMware
除了 VirtualBox,Homestead 还支持 VMware。要使用 VMware 提供程序,您需要购买 VMware Fusion / Desktop 和 VMware Vagrant 插件。VMware 提供了开箱即用的更快的共享文件夹性能。
添加 Vagrant Box
安装 VirtualBox / VMware 和 Vagrant 后,您应该使用以下命令将 laravel/homestead
box 添加到您的 Vagrant 安装中。根据您的互联网连接速度,下载 box 可能需要几分钟:
vagrant box add laravel/homestead
如果此命令失败,您可能有一个旧版本的 Vagrant,需要完整的 URL:
vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead
安装 Homestead
您可以通过简单地克隆存储库手动安装 Homestead。考虑将存储库克隆到您的“home”目录中的 Homestead
文件夹中,因为 Homestead box 将作为您所有 Laravel(和 PHP)项目的主机:
git clone https://github.com/laravel/homestead.git Homestead
克隆 Homestead 存储库后,从 Homestead 目录运行 bash init.sh
命令以创建 Homestead.yaml
配置文件:
bash init.sh
Homestead.yaml
文件将放置在您的 ~/.homestead
目录中。
配置您的提供程序
Homestead.yaml
文件中的 provider
键指示应使用哪个 Vagrant 提供程序:virtualbox
、vmware_fusion
(Mac OS X)或 vmware_workstation
(Windows)。您可以根据需要设置为任何提供程序。
provider: virtualbox
设置您的 SSH 密钥
接下来,您应该编辑 Homestead.yaml
文件。在此文件中,您可以配置公钥 SSH 密钥的路径,以及您希望在主机和 Homestead 虚拟机之间共享的文件夹。
没有 SSH 密钥?在 Mac 和 Linux 上,您通常可以使用以下命令创建 SSH 密钥对:
ssh-keygen -t rsa -C "you@homestead"
在 Windows 上,您可以安装 Git 并使用 Git 附带的 Git Bash
shell 发出上述命令。或者,您可以使用 PuTTY 和 PuTTYgen。
创建 SSH 密钥后,在 Homestead.yaml
文件的 authorize
属性中指定密钥的路径。
配置您的共享文件夹
Homestead.yaml
文件的 folders
属性列出了您希望与 Homestead 环境共享的所有文件夹。随着这些文件夹中的文件发生更改,它们将在本地机器和 Homestead 环境之间保持同步。您可以根据需要配置任意数量的共享文件夹!
要启用 NFS,只需在同步文件夹中添加一个简单的标志:
folders:
- map: ~/Code
to: /home/vagrant/Code
type: "nfs"
配置您的 Nginx 站点
不熟悉 Nginx?没问题。sites
属性允许您轻松地将“域”映射到 Homestead 环境中的文件夹。Homestead.yaml
文件中包含了一个示例站点配置。同样,您可以根据需要向 Homestead 环境添加任意数量的站点。Homestead 可以作为您正在处理的每个 Laravel 项目的便捷虚拟化环境!
您可以通过将 hhvm
选项设置为 true
来使任何 Homestead 站点使用 HHVM:
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
hhvm: true
每个站点都可以通过端口 8000 的 HTTP 和端口 44300 的 HTTPS 访问。
Bash 别名
要向 Homestead box 添加 Bash 别名,只需添加到 ~/.homestead
目录根目录中的 aliases
文件中。
启动 Vagrant Box
编辑 Homestead.yaml
后,从 Homestead 目录运行 vagrant up
命令。
Vagrant 将启动虚拟机,并自动配置您的共享文件夹和 Nginx 站点!要销毁机器,您可以使用 vagrant destroy --force
命令。
不要忘记将 Nginx 站点的“域”添加到您机器上的 hosts
文件中!hosts
文件将您的本地域请求重定向到 Homestead 环境。在 Mac 和 Linux 上,此文件位于 /etc/hosts
。在 Windows 上,它位于 C:\Windows\System32\drivers\etc\hosts
。您添加到此文件的行将如下所示:
192.168.10.10 homestead.app
确保列出的 IP 地址是您在 Homestead.yaml
文件中设置的地址。将域添加到 hosts
文件后,您可以通过 Web 浏览器访问该站点!
http://homestead.app
要了解如何连接到您的数据库,请继续阅读!
日常使用
通过 SSH 连接
由于您可能需要频繁 SSH 进入 Homestead 机器,因此可以考虑在主机上创建一个“别名”以快速 SSH 进入 Homestead box:
alias vm="ssh vagrant@127.0.0.1 -p 2222"
创建此别名后,您可以简单地使用“vm”命令从系统的任何位置 SSH 进入 Homestead 机器。
或者,您可以从 Homestead 目录使用 vagrant ssh
命令。
连接到您的数据库
homestead
数据库已为 MySQL 和 Postgres 配置。为了更方便,Laravel 的 local
数据库配置默认使用此数据库。
要从主机通过 Navicat 或 Sequel Pro 连接到 MySQL 或 Postgres 数据库,您应连接到 127.0.0.1
和端口 33060(MySQL)或 54320(Postgres)。两个数据库的用户名和密码都是 homestead
/ secret
。
仅在从主机连接到数据库时使用这些非标准端口。由于 Laravel 在虚拟机内运行,因此在 Laravel 数据库配置文件中将使用默认的 3306 和 5432 端口。
添加额外的站点
一旦您的 Homestead 环境被配置并运行,您可能希望为您的 Laravel 应用程序添加额外的 Nginx 站点。您可以在单个 Homestead 环境上运行任意数量的 Laravel 安装。有两种方法可以做到这一点:首先,您可以简单地将站点添加到 Homestead.yaml
文件中,然后从 Homestead 目录运行 vagrant provision
。
此过程是破坏性的。在运行 provision
命令时,现有数据库将被销毁并重新创建。
或者,您可以使用 Homestead 环境中可用的 serve
脚本。要使用 serve
脚本,SSH 进入 Homestead 环境并运行以下命令:
serve domain.app /home/vagrant/Code/path/to/public/directory 80
运行 serve
命令后,不要忘记将新站点添加到主机上的 hosts
文件中!
端口
以下端口已转发到您的 Homestead 环境:
- SSH: 2222 → 转发到 22
- HTTP: 8000 → 转发到 80
- HTTPS: 44300 → 转发到 443
- MySQL: 33060 → 转发到 3306
- Postgres: 54320 → 转发到 5432
添加额外的端口
如果您愿意,您可以将额外的端口转发到 Vagrant box,并指定它们的协议:
ports:
- send: 93000
to: 9300
- send: 7777
to: 777
protocol: udp
Blackfire Profiler
Blackfire Profiler 由 SensioLabs 提供,自动收集有关代码执行的数据,例如 RAM、CPU 时间和磁盘 I/O。Homestead 使得在您自己的应用程序中使用此分析器变得轻而易举。
所有适当的软件包都已安装在您的 Homestead box 上,您只需在 Homestead.yaml
文件中设置 Blackfire 服务器 ID 和令牌:
blackfire:
- id: your-server-id
token: your-server-token
client-id: your-client-id
client-token: your-client-token
配置 Blackfire 凭据后,使用 vagrant provision
从 Homestead 目录重新配置 box。当然,请务必查看 Blackfire 文档 以了解如何为您的 Web 浏览器安装 Blackfire 附加扩展。