Laravel Homestead
介绍
Laravel 努力使整个 PHP 开发体验愉快,包括您的本地开发环境。Vagrant 提供了一种简单、优雅的方式来管理和配置虚拟机。
Laravel Homestead 是一个官方的、预打包的 Vagrant "box",为您提供一个出色的开发环境,而无需在本地机器上安装 PHP、HHVM、Web 服务器和其他任何服务器软件。再也不用担心弄乱您的操作系统!Vagrant boxes 完全是一次性的。如果出现问题,您可以在几分钟内销毁并重新创建该 box!
Homestead 可以在任何 Windows、Mac 或 Linux 系统上运行,并包括 Nginx Web 服务器、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 (包含 Bower、Grunt 和 Gulp)
- Redis
- Memcached
- Beanstalkd
- Laravel Envoy
- Fabric + HipChat 扩展
安装与设置
安装 VirtualBox 和 Vagrant
在启动您的 Homestead 环境之前,您必须安装 VirtualBox 和 Vagrant。这两个软件包都为所有流行的操作系统提供易于使用的可视化安装程序。
添加 Vagrant Box
一旦安装了 VirtualBox 和 Vagrant,您应该使用以下命令将 laravel/homestead
box 添加到您的 Vagrant 安装中。根据您的互联网连接速度,下载 box 可能需要几分钟:
vagrant box add laravel/homestead
如果这失败了,您可能有一个较旧版本的 Vagrant,需要 box 的 URL。以下命令应该可以工作:
vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead
安装 Homestead
使用 Composer + PHP 工具
一旦 box 已添加到您的 Vagrant 安装中,您就可以使用 Composer 的 global
命令安装 Homestead CLI 工具:
composer global require "laravel/homestead=~2.0"
确保将 ~/.composer/vendor/bin
目录放入您的 PATH 中,以便在终端中运行 homestead
命令时找到 homestead
可执行文件。
安装 Homestead CLI 工具后,运行 init
命令以创建 Homestead.yaml
配置文件:
homestead init
Homestead.yaml
文件将放置在 ~/.homestead
目录中。如果您使用的是 Mac 或 Linux 系统,可以通过在终端中运行 homestead edit
命令来编辑 Homestead.yaml
文件:
homestead edit
通过 Git 手动安装(无本地 PHP)
另外,如果您不想在本地机器上安装 PHP,您可以通过简单地克隆存储库手动安装 Homestead。考虑将存储库克隆到一个中央的 Homestead
目录中,您可以在其中保留所有 Laravel 项目,因为 Homestead box 将作为您所有 Laravel(和 PHP)项目的主机:
git clone https://github.com/laravel/homestead.git Homestead
安装 Homestead CLI 工具后,运行 bash init.sh
命令以创建 Homestead.yaml
配置文件:
bash init.sh
Homestead.yaml
文件将放置在 ~/.homestead
目录中。
设置您的 SSH 密钥
接下来,您应该编辑 Homestead.yaml
文件。在此文件中,您可以配置公钥的路径,以及您希望在主机和 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 环境之间保持同步。您可以根据需要配置任意数量的共享文件夹!
配置 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
Bash 别名
要向您的 Homestead box 添加 Bash 别名,只需添加到 ~/.homestead
目录根目录中的 aliases
文件中。
启动 Vagrant Box
一旦您根据自己的喜好编辑了 Homestead.yaml
,请在终端中运行 homestead up
命令。如果您手动安装了 Homestead,并且不使用 PHP homestead
工具,请从包含您克隆的 Homestead Git 存储库的目录中运行 vagrant up
。
Vagrant 将启动虚拟机,并自动配置您的共享文件夹和 Nginx 站点!要销毁该机器,您可以使用 homestead destroy
命令。要获取可用 Homestead 命令的完整列表,请运行 homestead list
。
不要忘记将 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 环境,请在终端中发出 homestead ssh
命令。
连接到您的数据库
homestead
数据库为 MySQL 和 Postgres 预配置。为了更方便,Laravel 的 local
数据库配置默认设置为使用此数据库。
要通过 Navicat 或 Sequel Pro 从主机连接到 MySQL 或 Postgres 数据库,您应该连接到 127.0.0.1
和端口 33060(MySQL)或 54320(Postgres)。两个数据库的用户名和密码都是 homestead
/ secret
。
仅在从主机连接到数据库时,您才应使用这些非标准端口。您将在 Laravel 数据库配置文件中使用默认的 3306 和 5432 端口,因为 Laravel 在虚拟机内运行。
添加额外的站点
一旦您的 Homestead 环境被配置并运行,您可能想要为您的 Laravel 应用程序添加额外的 Nginx 站点。您可以在单个 Homestead 环境上运行任意数量的 Laravel 安装。有两种方法可以做到这一点:首先,您可以简单地将站点添加到您的 Homestead.yaml
文件中,然后运行 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