Homestead

介绍

laravle 始终贯彻让php的开发体验更愉悦的理念,包括本地开发环境。Vagrant提供了一个简易、优雅的方法去管理和提供虚拟主机。

laravel Homestead 是一个官方的,预装Vagrant的#盒子# ,它提供了一个非常棒的环境不需要你在本机上安装php/hhvm/web服务器/其他服务软件。不用担心会弄乱你的操作系统,vagrant盒子是可完全开放的。如果过程中出错了,你可以在几分钟内在重建一个盒子。

homestead可以在任何的windows/mac/linux系统上运行,包括了nginx服务器,php5.6,MySQL, Postgres,Redis,Memcached以及其他一些好东西,让你开发你伟大的laravel应用。

注意:如果你在使用Windows,你可能需要开发hardware virtualization(vt-x)。它一般可以通过BIOS来开启。

Homestead现在用vagrant1.6来构建和测试。

包含的软件

Ubuntu 14.04
PHP 5.6
HHVM
Nginx
MySQL
Postgres
Node(集成了Bower,Grunt和Gulp)
Redis
Memcached
Beanstalkd
Laravel Envoy
Fabric + HipChat Extension

安装和设置

安装VirtualBox 和Vagrant

在运行你的Homestead环境之前,你需要安装VirtualBox和Vagrant。这些软件包提供了所有流行操作系统的可视化的安装器。

添加Vagrant盒子

VirtualBox和Vagrant安装完毕后,就可以使用下列的命令来添加laravel/homestead盒子到你的Vagrant安装。

vagrant box add laravel/homestead

需要几分钟来下载这个盒子,根据你的网络环境花费时间不同。 如果失败了,可能是你的vagrant版本问题,它需要盒子的url地址,你需要如下操作:

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

安装Homestead

通过Comoposer和PHP工具

一旦盒子已经添加到你的Vagrant安装,你就可以通过Composer的global命令来安装Homestead 命令行工具。

composer global require "laravel/homestead=~2.0"

确保~/.composer/vendor/bin目录在你的环境变量,当执行homestead时,才能找到。

安装完Homestead命令行工具后,运行init命令来创建Homestead.yaml配置文件:

homestead init

会在~/.homestead目录下生成文件Homestead.yaml,Mac或者Linux系统,你可以通过命令homestead edit来编辑这个文件。

homestead edit
通过Git手动安装 (没有本地PHP)

相应地,如果你不想在本机上安装PHP,你可以通过克隆版本来手动安装Homestead。考虑到克隆一个版本到所有laravel项目所在的目录作为Homestead目录,这样Homestead盒子将作为主机来服务所有的laravel项目:

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

安装完毕后,运行bash init.sh命令来创建Homestead.yaml配置文件:

bash init.sh

创建的Homestead.yaml文件在~/.homestead目录下。

设置你的SSH Key

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

若没有SSH Key,Mac或者Linux系统,你可以通过下列命令生产SSH key 对:

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

若是Windows,你可以按照Git 通过使用Git自带的Git Bashshell来执行上面的命令。若没有,你也可以用PuTTYPuTTYgen

创建好SSH Key之后,指定配置文件Homestead.yamlauthorize属性为key的路径。

配置共享文件夹

Homestead.yaml文件中的属性folders列出所有你想与Homestead环境共享的文件夹。文件夹中的文件发生改变,会在本机跟Homestead环境中保持同步,你可以根据需要来指定任意数量的文件夹。

配置你的Nginx站点

如果你之前对Nginx不熟悉,没关系。属性sites使得你很容易的把一个域名跟Homestead环境中的文件夹映射好。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 up命令。如果你是手动安装的homestead,而不是使用的PHPhomestead工具,在git克隆的homestead的文件夹里,运行vagrant up命令。

vagrant会运行虚拟机,并且自动配置你的共享文件夹和Nginx站点。想删除的话,使用homestead destroy命令。查看所有可用的homestead命令,运行homestead list

不要忘记在host文件里添加nginx站点的域名!host文件会讲你本地的域名指向安装的homestead环境。Mac和linux,这个文件在/etc/hosts。对于windows,在C:\Windows\System32\drivers\etc\hosts。你需要添加类似下面的记录:

192.168.10.10 homestead.app

确保你的ip地址是你在Homestead.yaml中配置的地址。hosts文件中添加后,你可以通过浏览器访问这个站点。

http://homestead.app

下面会学习如何连接数据库!

日常使用

通过ssh连接homestead

若想通过ssh连接homestead环境,只需要在终端命令行中输入homestead ssh 或者vagrant ssh就可以登录。

连接数据库

homestead数据库配置成mysql或者postgres。为了更方便,laravel本地的数据配置被设置成默认使用这个数据库。 需要连接的话,可以通过你主机的navicat或者sequel pro连接,连接主机是127.0.0.1,端口是33060 (mysql),54320(postgres)。用户名密码是homestead/secret

注意:你只能用这些非标准的短裤来连接数据库。默认的3306/5432端口是laravel数据库配置文件中指定需要使用的,因为laravel是运行在虚拟机上的。

添加其他站点

homestead环境安装好并且运行后,你可以根据需要添加其他站点,运行任意个laravel在一个虚拟的homestead环境中。首先:在homestead.yaml文件中添加站点,接着,运行vagrant provision

同时,你也可以使用homestead环境中可用的serve脚本。想使用serve脚本,ssh登入homestead环境,接着运行下面命令:

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

注意:运行`serve`命令后,不要忘记在`hosts`中添加域名。

端口

下面端口是指向你的homestead环境:

ssh:2222 -> forwards to 22
http:8000 -> forwards to 80
mysql:33060 -> forwards to 3306
postgre:54320 -> forwards to 5432