Skip to content

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 应用程序所需的所有其他工具。

lightbulb

如果您使用的是 Windows,可能需要启用硬件虚拟化(VT-x)。通常可以通过 BIOS 启用。

Homestead 目前使用 Vagrant 1.7 构建和测试。

包含的软件

安装与设置

安装 VirtualBox / VMware 和 Vagrant

在启动 Homestead 环境之前,您必须安装 VirtualBoxVagrant。这两个软件包为所有流行的操作系统提供了易于使用的可视化安装程序。

VMware

除了 VirtualBox,Homestead 还支持 VMware。要使用 VMware 提供程序,您需要购买 VMware Fusion / Desktop 和 VMware Vagrant 插件。VMware 提供了开箱即用的更快的共享文件夹性能。

添加 Vagrant Box

安装 VirtualBox / VMware 和 Vagrant 后,您应该使用以下命令将 laravel/homestead box 添加到您的 Vagrant 安装中。根据您的互联网连接速度,下载 box 可能需要几分钟:

php
vagrant box add laravel/homestead

如果此命令失败,您可能有一个旧版本的 Vagrant,需要完整的 URL:

php
vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead

安装 Homestead

您可以通过简单地克隆存储库手动安装 Homestead。考虑将存储库克隆到您的“home”目录中的 Homestead 文件夹中,因为 Homestead box 将作为您所有 Laravel(和 PHP)项目的主机:

php
git clone https://github.com/laravel/homestead.git Homestead

克隆 Homestead 存储库后,从 Homestead 目录运行 bash init.sh 命令以创建 Homestead.yaml 配置文件:

php
bash init.sh

Homestead.yaml 文件将放置在您的 ~/.homestead 目录中。

配置您的提供程序

Homestead.yaml 文件中的 provider 键指示应使用哪个 Vagrant 提供程序:virtualboxvmware_fusion(Mac OS X)或 vmware_workstation(Windows)。您可以根据需要设置为任何提供程序。

php
provider: virtualbox

设置您的 SSH 密钥

接下来,您应该编辑 Homestead.yaml 文件。在此文件中,您可以配置公钥 SSH 密钥的路径,以及您希望在主机和 Homestead 虚拟机之间共享的文件夹。

没有 SSH 密钥?在 Mac 和 Linux 上,您通常可以使用以下命令创建 SSH 密钥对:

php
ssh-keygen -t rsa -C "you@homestead"

在 Windows 上,您可以安装 Git 并使用 Git 附带的 Git Bash shell 发出上述命令。或者,您可以使用 PuTTYPuTTYgen

创建 SSH 密钥后,在 Homestead.yaml 文件的 authorize 属性中指定密钥的路径。

配置您的共享文件夹

Homestead.yaml 文件的 folders 属性列出了您希望与 Homestead 环境共享的所有文件夹。随着这些文件夹中的文件发生更改,它们将在本地机器和 Homestead 环境之间保持同步。您可以根据需要配置任意数量的共享文件夹!

要启用 NFS,只需在同步文件夹中添加一个简单的标志:

php
folders:
    - map: ~/Code
      to: /home/vagrant/Code
      type: "nfs"

配置您的 Nginx 站点

不熟悉 Nginx?没问题。sites 属性允许您轻松地将“域”映射到 Homestead 环境中的文件夹。Homestead.yaml 文件中包含了一个示例站点配置。同样,您可以根据需要向 Homestead 环境添加任意数量的站点。Homestead 可以作为您正在处理的每个 Laravel 项目的便捷虚拟化环境!

您可以通过将 hhvm 选项设置为 true 来使任何 Homestead 站点使用 HHVM

php
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。您添加到此文件的行将如下所示:

php
192.168.10.10  homestead.app

确保列出的 IP 地址是您在 Homestead.yaml 文件中设置的地址。将域添加到 hosts 文件后,您可以通过 Web 浏览器访问该站点!

php
http://homestead.app

要了解如何连接到您的数据库,请继续阅读!

日常使用

通过 SSH 连接

由于您可能需要频繁 SSH 进入 Homestead 机器,因此可以考虑在主机上创建一个“别名”以快速 SSH 进入 Homestead box:

php
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

lightbulb

仅在从主机连接到数据库时使用这些非标准端口。由于 Laravel 在虚拟机内运行,因此在 Laravel 数据库配置文件中将使用默认的 3306 和 5432 端口。

添加额外的站点

一旦您的 Homestead 环境被配置并运行,您可能希望为您的 Laravel 应用程序添加额外的 Nginx 站点。您可以在单个 Homestead 环境上运行任意数量的 Laravel 安装。有两种方法可以做到这一点:首先,您可以简单地将站点添加到 Homestead.yaml 文件中,然后从 Homestead 目录运行 vagrant provision

lightbulb

此过程是破坏性的。在运行 provision 命令时,现有数据库将被销毁并重新创建。

或者,您可以使用 Homestead 环境中可用的 serve 脚本。要使用 serve 脚本,SSH 进入 Homestead 环境并运行以下命令:

php
serve domain.app /home/vagrant/Code/path/to/public/directory 80
lightbulb

运行 serve 命令后,不要忘记将新站点添加到主机上的 hosts 文件中!

端口

以下端口已转发到您的 Homestead 环境:

  • SSH: 2222 → 转发到 22
  • HTTP: 8000 → 转发到 80
  • HTTPS: 44300 → 转发到 443
  • MySQL: 33060 → 转发到 3306
  • Postgres: 54320 → 转发到 5432

添加额外的端口

如果您愿意,您可以将额外的端口转发到 Vagrant box,并指定它们的协议:

php
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 和令牌:

php
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 附加扩展。