Laravel Homestead


前言

Laravel努力为整个PHP开发过程提供令人愉快的开发体验,也包括开发者的本地开发环境。Vagrant(http://vagrantup.com)提供了一种既简单又优雅的方式来管理和装备虚拟机。

Laravel Homestead是一个官方的、预封装的Vagrant“箱子”,它提供给你一个奇妙的开发环境而不需要你在本机上安装PHP、HHVM、web服务器和其它的服务器软件。不用再担心搞乱你的操作系统!Vagrant箱子是完全可支配的。如果出现故障,你可以在几分种内完成销毁和重建箱子!

Homestead能运行在所有的Windows、Mac或Linux系统上,它包含了Nginx、PHP 5.6、MySQL、Postgres、Redis、Memcached和你开发神奇的Laravel应用程序需要的所有其它软件。

注意: 如果你使用的是 Windows,你需要开启硬件虚拟支持(VT-x)。一般是要在 BIOS 中进行设置。

Homestead 目前基于 Vagrant 1.6 版本进行构建和测试。

包含的软件

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Postgres
  • Node (With Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Laravel Envoy
  • Fabric + HipChat Extension

安装和设置

安装VirtualBox和Vagrant

在启动Homestead环境之前,你必须安装VirtualBox(https://www.virtualbox.org/wiki/Downloads)和Vagrant(http://www.vagrantup.com/downloads.html)。这两个软件为所有主流的操作系统提供了简单易用的可视化安装界面。

添加Vagrant箱子

一旦VirtualBox和Vagrant安装完成,你应该添加“laravel/homestead”箱子到你的Vagrant安装目录下,在终端使用下面的命令,这将花费几分钟的时间来下载箱子,这取决于你的网速:

vagrant box add laravel/homestead

安装 Homestead

通过 Composer + PHP 工具安装

一旦箱子被添加到Vagrant安装目录下,你就可以通过 Composer 的 global 指令来安装 Homestead 命令行工具了:

composer global require "laravel/homestead=~2.0"

确保将 ~/.composer/vendor/bin 目录添加到 PATH 环境变量中,这样就能在执行 homestead 指令时找到对应的可执行程序了。

一旦安装了 Homestead 命令行工具,请执行 init 来创建 Homestead.yaml 配置文件:

homestead init

生成的 Homestead.yaml 文件将被放置于 ~/.homestead 目录下。如果你使用的是 Mac 或 Linux 操作系统,还可以通过执行 homestead edit 指令来编辑 Homestead.yaml 文件:

homestead edit

设置你的SSH密钥

接下来,你需要编辑 Homestead.yaml 文件。在这个文件里,你可以配置公共SSH密钥的路径,也可以配置主机与Homestead虚拟机的共享目录。

还没有SSH密钥?在Mac和Linux机器上,通常你可以使用下面的命令创建一个SSH密钥对:

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

在Windows机器上,你可以安装Git(http://git-scm.com/)工具,并使用Git自带的“Git Bash”命令行工具执行上面的命令。或者,你可以使用PuTTY(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)工具或PuTTYgen(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)工具。

一旦你创建了一个SSH密钥,就可以在“Homestead.yaml”文件里为“authorize”属性指定密钥的路径。

配置共享目录

“Homestead.yaml”文件里的“folders”属性列出所有你想与Homestead环境共享的目录。当这些目录中的文件发生了改变,它们将在本机和Homestead环境之间保持同步。你可以根据需要配置尽可能多的共享目录!

配置Nginx站点

不熟悉Nginx?没关系。Homestead环境里的“sites”属性允许你轻松地将一个“域”映射到一个目录。“Homestead.yaml”文件里包含一个示例站点配置。再强调一遍,你可以根据需要添加尽可能多的站点到Homestead环境里。Homestead能够为你的每一个Laravel项目提供一个方便的虚拟环境!

你可以创建任何基于 Homestead 的站点并使用 HHVM 。通过设置 hhvm 选项为 true 即可:

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
      hhvm: true

Bash 链接

想在你的Homestead箱子里加入Bash 链接,只需要在 ~/.homestead 目录里简单的添加 aliases 文件即可。

启动Vagrant箱子

一旦你按照意愿编辑了“Homestead.yaml”文件,就可以在终端上的“Homestead”目录下执行 homestead up 命令。Vagrant将启动虚拟机,并自动配置共享目录和Nginx站点!如果需要销毁虚拟机,可以使用 homestead destroy 指令。 homestead list 用于列出所有可用的 Homestead 指令。

不要忘记把你的Nginx站点的“域”添加到机器里的“hosts”文件里!“hosts”文件将把对本地域的请求重定向到Homestead环境里。在Mac和Linux机器上,这个文件位于“/etc”目录。在Windows机器上,它位于“C:\Windows\System32\drivers\etc”目录。你添加到此文件的内容就像下面这样:

192.168.10.10  homestead.app

确保列出的 IP 和你在 Homestead.yaml 文件中设置的一致。一旦你把域名添加到 hosts 文件中,你就可以通过浏览器访问此站点了!

http://homestead.app

想知道如何连接数据库,请接着看!

日常使用

通过SSH连接

为了通过SSH连接到 Homestead 环境,只需在命令行窗口中输入 homestead ssh 指令即可。

连接到数据库

“homestead”数据库是为箱子外面的MySQL和Postres配置的。为了更加方便,Laravel的本地数据库配置默认设置为使用这个数据库。

想通过你主机上的Navicat或Sequel Pro连接MySQL或Postgres,你应该使用端口33060(MySQL)或54320(Postgres)来连接“127.0.0.1”。这两个数据库的用户名和密码都是“homestead” / “secret”。

注意: 当从主机连接数据库时,你应该只使用非标准的端口。在你的Laravel配置文件中,你将使用默认的3306和5432端口,因为Laravel运行在虚拟机当中。

添加额外站点

一旦你的Homestead环境被分配并运行,你可能想为Laravel应用程序添加额外的Nginx站点。在一个Homestead环境中,你可以按意愿运行尽可能多的Laravel应用程序。有两种方法可以做到这一点。首先,你可以简单的添加站点到“Homestead.yaml”文件里,先对箱子执行“vagrant destroy”命令,然后再执行“vagrant provision”命令。

或者,你可以使用Homestead环境里的“serve”脚本。想使用“serve”脚本,先SSH到Homestead环境并运行下面的命令:

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

注意: 在执行“serve”命令后,不要忘记添加新站点到你机器的“hosts”文件里!

端口

下面的端口被转发到你的Homestead环境:

  • SSH: 2222 -> 转发到 22
  • HTTP: 8000 -> 转发到 80
  • MySQL: 33060 -> 转发到 3306
  • Postgres: 54320 -> 转发到 5432