欢迎光临
我们一直在努力

Laravel Homestead安装与使用(最新译文Laravel 5.5 2017.11.5)

 

介绍

Laravel致力于使整个PHP开发体验愉快,包括您本地的开发环境。Vagrant 提供了一种简单,优雅的方式来管理和配置虚拟机。

Laravel Homestead是一个官方的,预封装的的Vagrant盒子,为您提供了一个绝佳的开发环境,无需您在本地机器上安装PHP,Web服务器和任何其他服务器软件。不用担心搞砸你的操作系统!Vagrant盒子是完全一次性的。如果出现问题,您可以在几分钟内销毁并重新创建盒子!

Homestead可运行在任何Windows,Mac或Linux系统上,包括Nginx Web服务器,PHP 7.1,MySQL,PostgreSQL,Redis,Memcached,Node以及开发令人惊叹的Laravel应用程序所需的所有其他好东西。

{注意}如果您使用Windows,则可能需要启用硬件虚拟化(VT-x)。通常可以通过BIOS启用。如果您在UEFI系统上使用Hyper-V,则可能还需要禁用Hyper-V才能访问VT-x。

包括的软件

  • Ubuntu 16.04
  • Git
  • PHP 7.1
  • Nginx
  • MySQL
  • MariaDB
  • Sqlite3
  • PostgreSQL
  • Composer
  • Node (With Yarn, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailhog
  • ngrok

 

安装和设置

第一步

在启动Homestead环境之前,您必须安装VirtualBox 5.1VMWare,或Parallels 以及 Vagrant。所有这些软件包为所有流行的操作系统提供易于使用的可视化安装程序。

要使用VMware提供商,您需要购买VMware Fusion / Workstation和VMware Vagrant 插件。虽然这不是免费的,但VMware可以提供更快的共享文件夹性能。

安装Homestead Vagrant Box

一旦安装了VirtualBox / VMware和Vagrant,您应该使用终端中的以下命令将 laravel/homestead盒子添加到您的Vagrant安装目录下。根据您的Internet连接速度,将需要几分钟时间才能下载该框。

vagrant box add laravel/homestead

如果此命令失败,请确保您的Vagrant安装是最新的。

安装Homestead

您可以通过简单地克隆存储库来安装Homestead。考虑将资源库克隆到您的 Homestead目录下的home文件夹中,因为Homestead盒子将作为您所有Laravel项目的主机:

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

你应该检查一下Homestead的标签版本,因为 master分支可能并不总是稳定的。您可以在GitHub发布页面上找到最新的稳定版本:

cd Homestead

// Clone the desired release...
git checkout v6.5.0

一旦克隆了Homestead存储库,运行Homestead目录中的 bash init.sh命令来创建 Homestead.yaml配置文件。 Homestead.yaml文件将被放置在Homestead目录中:

// Mac / Linux...
bash init.sh

// Windows...
init.bat

配置Homestead

设置你的提供商

您的 Homestead.yaml文件中的提供程序密钥指示应使用哪个 provider提供程序: virtualbox, vmware_fusion, vmware_workstation,或 parallels。您可以将其设置为您偏好的提供者:

provider: virtualbox

配置共享文件夹

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

folders:
    - map: ~/code
      to: /home/vagrant/code

如果你只是创建几个网站,这个通用的映射将工作得很好。但是,随着网站数量的不断增长,您可能会开始遇到性能问题。在包含大量文件的低端机器或项目中,这个问题会非常明显。如果遇到此问题,请尝试将每个项目映射到其自己的Vagrant文​​件夹:

folders:
    - map: ~/code/project1
      to: /home/vagrant/code/project1

    - map: ~/code/project2
      to: /home/vagrant/code/project2

要启用NFS,只需将简单标志添加到已同步的文件夹配置中即可:

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

{注意}使用NFS时,应考虑安装vagrant-bindfs插件。 该插件将为Homestead框中的文件和目录维护正确的用户/组权限。

您也可以通过在选项键下列出它们来传递Vagrant的同步文件夹支持的任何选项

folders:
    - map: ~/code
      to: /home/vagrant/code
      type: "rsync"
      options:
          rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
          rsync__exclude: ["node_modules"]

配置Nginx站点

不熟悉Nginx?没问题。 sites属性允许您轻松将“域”映射到Homestead环境中的文件夹。 Homestead.yaml文件中包含示例站点配置。同样,您可以根据需要添加尽可能多的网站到您的Homestead环境。 Homestead可以为您正在进行的每个Laravel项目提供方便的虚拟化环境:

sites:
    - map: homestead.test
      to: /home/vagrant/code/Laravel/public

如果在配置Homestead盒子后更改 sites属性,则应该重新运行 vagrant reload --provision来更新虚拟机上的Nginx配置。

主机文件

您必须将Nginx网站的“域”添加到您计算机上的 hosts文件中。 hosts文件将把您的Homestead网站的请求重定向到您的Homestead机器。在Mac和Linux上,这个文件位于 /etc/hosts。在Windows上,它位于 C:\Windows\System32\drivers\etc\hosts。您添加到此文件的行将如下所示:

192.168.10.10  homestead.test

确保列出的IP地址是在您的 Homestead.yaml文件中设置的IP地址。将域添加到主机文件并启动Vagrant盒子之后,您将可以通过Web浏览器访问该站点:

http://homestead.test

启动Vagrant-box

一旦你编辑了 Homestead.yaml到你喜欢的位置,从你的Homestead目录运行 vagrant up命令。 Vagrant将启动虚拟机并自动配置您的共享文件夹和Nginx站点。
要销毁机器,你可以使用 vagrant destroy --force命令。

每个项目安装

您可以改为为您管理的每个项目配置一个Homestead实例,而不是在全局范围内安装Homestead并共享相同的Homestead盒子。如果您希望将 Vagrantfile与您的项目一起运行,则为每个项目安装Homestead可能会有所帮助,从而使项目中的其他人能够轻松地 vagrant up

要将Homestead直接安装到您的项目中,需要使用Composer:

composer require laravel/homestead --dev

一旦安装了Homestead,使用 make命令在项目根目录下生成 Vagrantfile Homestead.yaml文件。 make命令将自动配置 Homestead.yaml文件中的 sites folders指令。

Mac / Linux:

php vendor/bin/homestead make

窗口:

vendor\\bin\\homestead make

 

接下来,在终端上运行 vagrant up命令,并在浏览器中访问 http://homestead.test中的项目。请记住,您仍然需要为 homestead.test或或您选择的域添加一个 /etc/hosts文件条目。

安装MariaDB

如果您更喜欢使用MariaDB而不是MySQL,则可以将 mariadb选项添加到您的 Homestead.yaml文件中。这个选项将删除MySQL并安装MariaDB。 MariaDB可以作为MySQL的直接替代品,因此您仍然应该在应用程序的数据库配置中使用 mysql数据库驱动程序:

box: laravel/homestead
ip: "192.168.10.10"
memory: 2048
cpus: 4
provider: virtualbox
mariadb: true

安装Elasticsearch

要安装Elasticsearch,请将 elasticsearch选项添加到您的 Homestead.yaml文件中。默认安装将创建一个名为“宅基地”的集群,并分配2GB的内存。您绝不应该给Elasticsearch超过一半的操作系统内存,所以请确保您的Homestead机器至少有4GB的内存:

box: laravel/homestead
ip: "192.168.10.10"
memory: 4096
cpus: 4
provider: virtualbox
elasticsearch: true

别名(aliases)

您可以通过修改您的Homestead目录中的 aliases“别名”文件来将Bash别名添加到您的Homestead机器:

alias c='clear'
alias ..='cd ..'

更新 aliases文件后,应使用 vagrant reload --provision命令重新配置Homestead机器。这将确保您的新别名在机器上可用。

日常的使用

在全局范围内访问Homestead

有时候你可能想从你的文件系统的任何地方 vagrant up你的Homestead机器。您可以在Mac / Linux系统上通过向您的Bash配置文件添加Bash功能来执行此操作。在Windows上,您可以通过向 PATH添加一个“批处理”文件来完成此操作。这些脚本将允许您从系统的任何位置运行任何Vagrant命令,并自动将该命令指向您的Homestead安装:

Mac / Linux

function homestead() {
    ( cd ~/Homestead && vagrant $* )
}

 

确保将功能中的 ~/Homestead路径调整为实际Homestead安装的位置。一旦安装了这个功能,你就可以在系统的任何地方运行一些像 homestead up homestead ssh这样的命令。

窗户

使用以下内容在您的机器上的任何位置创建一个 homestead.bat批处理文件:

@echo off

set cwd=%cd%
set homesteadVagrant=C:\Homestead

cd /d %homesteadVagrant% && vagrant %*
cd /d %cwd%

set cwd=
set homesteadVagrant=

确保将脚本中的示例 C:\Homestead路径调整为您的Homestead安装的实际位置。创建文件后,将文件位置添加到 PATH。然后,您可以从系统上的任何位置运行诸如 homestead up homestead ssh之类的命令。

通过SSH连接

您可以通过从您的Homestead目录发出 vagrant ssh终端命令SSH到您的虚拟机。
但是,由于您可能需要经常通过SSH连接到您的Homestead机器,请考虑将上述“功能”添加到您的主机,以便快速进入Homestead机器。

连接到数据库

开箱即用的MySQL和PostgreSQL配置了一个 homestead数据库。为了更方便,Laravel的 .env文件将框架配置为使用该数据库。

要从主机的数据库客户端连接到MySQL或PostgreSQL数据库,您应该连接到 127.0.0.1和端口口 33060(MySQL)或 54320(PostgreSQL)。两个数据库的用户名和密码都是 homestead / secret

{注意}您应该只使用这些非标准端口连接到数据库时从你的主机。您将使用默认的3306和5432端口自Laravel Laravel数据库配置文件中运行在虚拟机。

添加其他站点

一旦您的Homestead环境被配置并运行,您可能需要为您的Laravel应用程序添加更多的Nginx站点。您可以在单个Homestead环境中运行尽可能多的Laravel安装。要添加其他网站,只需将该网站添加到您的 Homestead.yaml文件:

sites:
    - map: homestead.test
      to: /home/vagrant/code/Laravel/public
    - map: another.test
      to: /home/vagrant/code/another/public

如果Vagrant没有自动管理您的“主机”文件,您可能还需要将新的网站添加到该文件中:

192.168.10.10  homestead.test
192.168.10.10  another.test

一旦添加了该网站,从Homestead目录运行 vagrant reload --provision命令。

网站类型

Homestead支持几种类型的网站,让您轻松运行不基于Laravel的项目。例如,我们可以使用 symfony2网站类型轻松地将Symfony应用程序添加到Homestead:

sites:
    - map: symfony2.test
      to: /home/vagrant/code/Symfony/web
      type: symfony2

可用的网站类型是: apache, laravel(默认), proxy, silverstripe, statamic, symfony2, symfony4.

网站参数

您可以通过 params站点指令将其他Nginx fastcgi_param值添加到您的站点。例如,我们将添加一个值为 BAR FOO参数:

sites:
    - map: homestead.test
      to: /home/vagrant/code/Laravel/public
      params:
          - key: FOO
            value: BAR

环境变量

您可以通过将它们添加到您的 Homestead.yaml文件来设置全局环境变量:

variables:
    - key: APP_ENV
      value: local
    - key: FOO
      value: bar

更新 Homestead.yaml后,请务必通过运行 vagrant reload --provision来重新配置机器。这将更新所有安装的PHP版本的PHP-FPM配置,并更 vagrant用户的环境。

配置Cron时间表

Laravel提供了一个便捷的方式来安排Cron工作,安排一个时间表:运行Artisan命令,每分钟运行一次。 schedule:run命令将检查 App\Console\Kernel类中定义的作业计划,以确定应该运行哪些作业。

如果您想要为Homestead站点运行 schedule:run命令,则可以在定义站点时将 schedule选项设置为 true

sites:
    - map: homestead.test
      to: /home/vagrant/code/Laravel/public
      schedule: true

该站点的Cron作业将在虚拟机的 /etc/cron.d文件夹中定义。

配置Mailhog

Mailhog允许您轻松地捕获您的外发电子邮件并进行检查,而无需将邮件实际发送给收件人。要开始使用,请更新 .env文件以使用以下邮件设置:

MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

 

端口

默认情况下,以下端口被转发到您的Homestead环境:

  • SSH: 2222 → 转发到 22
  • ngrok UI: 4040 → 转发到 4040
  • HTTP: 8000 → 转发到 80
  • HTTPS: 44300 → 转发到 443
  • MySQL: 33060 → 转发到 3306
  • PostgreSQL: 54320 → Forwards To 5432
  • Mailhog: 8025 → 转发到 8025

转发其他端口

如果你愿意的话,你可以将其他端口转发到Homestead盒子,并指定他们的协议:

ports:
    - send: 50000
      to: 5000
    - send: 7777
      to: 777
      protocol: udp

 

分享你的环境

有时候,您可能希望与同事或客户分享您目前正在进行的工作。Vagrant有一个内置的方式来支持这个通过 vagrant share;然而,如果您在 Homestead.yaml文件中配置了多个站点,这将不起作用。
为了解决这个问题,Homestead包含了自己的 share命令。要开始,SSH通过 vagrant ssh进入您的Homestead机器,并运行共享 share homestead.test。这将从您的Homestead.yaml配置文件共享 homestead.test站点。当然,你也可以使用其他配置好的站点替代 homestead.test

share homestead.test

运行该命令后,您将看到一个Ngrok屏幕,其中包含活动日志和共享网站的公共访问URL。如果您想要指定一个自定义区域,子域或其他Ngrok运行时选项,您可以将它们添加到您的 share命令:

share homestead.test -region=eu -subdomain=laravel

{注意}请记住,Vagrant本质上是不安全的,并且在运行 share命令时将虚拟机展示给Internet。

多个PHP版本

{注意}此功能仅与Nginx兼容。

Homestead 6在同一个虚拟机上引入了对多个PHP版本的支持。您可以指定您的 Homestead.yaml文件中给定站点使用哪个版本的PHP。可用的PHP版本是:“5.6”,“7.0”,“7.1”和“7.2”:

sites:
    - map: homestead.test
      to: /home/vagrant/code/Laravel/public
      php: "5.6"

另外,您可以通过CLI使用任何受支持的PHP版本:

php5.6 artisan list
php7.0 artisan list
php7.1 artisan list
php7.2 artisan list

网络接口

Homestead.yaml的网络属性为您的Homestead环境配置网络接口。您可以根据需要配置多个接口:

networks:
    - type: "private_network"
      ip: "192.168.10.20"

要启用bridged桥接接口,请配置 bridge设置并将网络类型更改为 public_network

networks:
    - type: "public_network"
      ip: "192.168.10.20"
      bridge: "en1: Wi-Fi (AirPort)"

要启用DHCP,只需从您的配置中删除 ip选项:

networks:
    - type: "public_network"
      bridge: "en1: Wi-Fi (AirPort)"

更新Homestead

您可以通过两个简单的步骤更新Homestead。首先,你应该使用 vagrant box update命令更新Vagrant框:

vagrant box update

接下来,您需要更新Homestead源代码。如果你克隆了版本库,你可以简单地在你最初克隆版本库的地方把 git pull origin master起来。
如果您已经通过项目的 composer.json文件安装了Homestead,则应确保您的 composer.json文件包含 "laravel/homestead": "^6"并更新您的依赖关系:

composer update

旧版本

{提示}如果您需要更旧版本的PHP,请在尝试使用旧版Homestead之前查看多个PHP版本的文档。

通过将以下行添加到您的 Homestead.yaml文件,您可以轻松覆盖Homestead使用的框的版本:

version: 0.6.0

一个例子:

box: laravel/homestead
version: 0.6.0
ip: "192.168.10.10"
memory: 2048
cpus: 4
provider: virtualbox

当您使用旧版本的Homestead框时,您需要将其与Homestead源代码的兼容版本进行匹配。下面是一个图表,显示了支持的盒子版本,使用哪个版本的Homestead源代码,以及PHP提供的版本:

Homestead版本 Vagrant Box
PHP 7.0 3.1.0 0.6.0
PHP 7.1 4.0.0 1.0.0
PHP 7.1 5.0.0 2.0.0
PHP 7.1 0 3.0.0
PHP 7.2 RC3 6.4.0 4.0.0

提供者特定设置

VirtualBox

默认情况下,Homestead将 natdnshostresolver设置配置为 on。这使得Homestead可以使用您的主机操作系统的DNS设置。如果您想重写此行为,请将以下行添加到您的 Homestead.yaml文件中:

provider: virtualbox
natdnshostresolver: off
赞(0)
版权归原作者所有,如有侵权请告知。达维营-前端网 » Laravel Homestead安装与使用(最新译文Laravel 5.5 2017.11.5)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址