Windows上使用Vagrant打造Laravel Homestead可协同跨平台开发环境

http://www.itkeyword.com/doc/3863994020922591518

一、简介

Laravel 致力于让整个 PHP 开发过程变得让人愉悦,包括本地开发环境,为此官方为咱们提供了一整套本地开发环境 —— Laravel Homesteadphp

Laravel Homestead 是一个打包好各类 Laravel 开发所须要的工具及环境的 Vagrant 盒子(Vagrant 提供了一个便捷的方式来管理和设置虚拟机),该盒子为咱们提供了优秀的开发环境,有了它,咱们再也不须要在本地环境安装 PHP、HHVM、Web服务器以及其它工具软件,咱们也彻底不用再担忧误操做搞乱操做系统 —— 由于 Vagrant 盒子是一次性的,若是出现错误,能够在数分钟内销毁并从新建立该 Vagrant 盒子!css

Homestead能够运行在 Windows、Mac 以及 Linux 系统上,其中已经安装好了Nginx、PHP7.0、MySQL、Postgres、Redis、Memcached、Node以及不少其它开发 Laravel 应用所须要的东西。html

注:若是你使用的是Windows,须要开启系统的硬件虚拟化(VT-x),这一般能够经过BIOS来开启。java

预装软件

  • Ubuntu 14.04
  • Git
  • PHP 7.0
  • HHVM
  • Xdebug
  • Nginx
  • MySQL
  • SQLite 3
  • Postgres
  • Composer
  • Node(With PM2, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Blackfire Profiler

环境准备

  1. Git
  2. PHP
  3. Laravel
  4. Composer
  5. Vagrant
  6. VirtualBox

安装git

1.下载GitHub for Windowsnode

https://windows.github.com/mysql

安装php

建议你们尽可能安装当前最新版本的 PHPlinux

1.下载PHPnginx

http://windows.php.net/download/laravel

2.解压目录git

个人路径D:\php

3.添加环境变量

右键计算机->高级系统设置->环境变量->系统变量->PATH

C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\nodejs\;D:\php;C:\ProgramData\ComposerSetup\bin

4.设置php.ini

进入 PHP 安装目录(例如 D:\php)。找到 php.ini-development 文件并复制一份到当前目录,重命名为 php.ini,修改如下配置
去掉extension=php_mbstring.dll 前面的分号(888 行左右)
去掉extension=php_openssl.dll前面的分号(893 行左右)
去掉extension_dir = "ext"前面的分号(736 行左右)

5.使环境变量生效

重启explorer.exe

安装Laravel

1.下载Laravel

http://www.golaravel.com/download/

2.解压目录

个人路径D:\laravel-v5.1.4

3.启动Laravel

d: 
cd laravel-v5.1.4 D:\laravel-v5.1.4>php artisan serve Laravel development server started on http://localhost:8000/

在浏览器中访问http://localhost:8000/

artisanserve 命令还支持两个参数:

host 设置主机地址
port 设置 web server 监听的端口号
例如:php artisan serve --port=8888

安装Composer

1.下载Composer-Setup.exe

https://getcomposer.org/doc/00-intro.md#installation-windows

2.配置Composer

Loading composer repositories with package information Installing dependencies (including require-dev) SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed”

若是安装过程提示报错为缺乏CA证书,下载cacert.pem到自定义路径
http://curl.haxx.se/docs/caextract.html

而后修改php.ini文件(1983行左右)

openssl.cafile=D:\php\verify\cacert.pem

3.测试Composer

composer -V Composer version 1.0-dev (d79427f1a7b15e8f4d46ce8124a4d0c58ba1479c) 2016-01-27 13:01:22

windows安装可参考

http://pkg.phpcomposer.com/

二、安装 & 设置

准备工做

  • VirtualBox 虚拟机,基础依赖
  • Vagrant 基于VirtualBox或vmware的虚拟化环境部署工具,能够将一个虚拟机打包(简称vbox)给别人。
  • Homestead laravel官方vbox,集成环境以及一套特制的命令行工具。
  • xshell 这是一款windows下的ssh & shell工具,同类的有securecrt、putty等。

在使用 Homestead 以前,须要先安装 Virtual Box/VMWare 和 Vagrant,全部这些软件包都为经常使用操做系统提供了一个便于使用的可视化安装器。

安装完之后重启一下,再打开cmd

vagrant --version

Vagrant 1.8.1

 

下载安装 Homestead Vagrant 盒子

经过命令

VirtualBox/VMWare 和 Vagrant 安装好了以后,在终端中使用能以下命令将 laravel/homesterad 添加到 Vagrant 中。下载该盒子将会花费一些时间,时间长短主要取决于你的网络链接速度:

vagrant box add laravel/homestead

若是上述命令执行失败,可使用 Vagrant 老版本的方式,这须要输入完整的 URL:

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

能够自动下载homestead的vbox,然而国内网络你们懂的,龟速。

建议本身有vps的同窗,在vps上经过

wget -O homestead.box https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.4.1/providers/virtualbox.box

手动下载后,再从vps上将box下载到本地,或者能够试试用迅雷下载。总之,想办法把这个box文件下载下来,而后经过如下命令添加到vagrant

vagrant box add laravel/homestead file:///d:/homestead.box

经过 GitHub 安装 Homestead命令行工具

你还能够经过简单克隆仓库代码来实现 Homestead 安装。将仓库克隆到用户目录下的 Homestead 目录,这样 Homestead 盒子就能够会做为全部其余 Laravel 项目的主机:

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

克隆完成后,在 Homestead 目录下运行 bash init.sh 命令来建立 Homestead.yaml 配置文件,Homestead.yaml 配置文件文件位于 ~/.homestead 目录:

bash init.sh

安装依赖

composer install

在Homestead目录执行

php homestead
Laravel Homestead version 3.0.1

 

配置 Homestead

设置 Provider

Homestead.yaml 文件中的 provider 键表示使用哪一个 Vagrant 提供者:virtualboxvmware_fushion 或者vmware_workstation,你能够将其设置为本身喜欢的提供者:

provider: virtualbox

配置共享文件夹

推荐:使用Vagrant在Windows平台搭建嵌入式Linux开发环境(2)Tftpd服务器搭建

一、获取root权限        Ubuntu默认使用user用户登陆,而开发大部分状况下须要用到root权限,使用命令切换用户到超级权限用户root        sudo su   二、下载安装

C:\Users\stone\.homestead\Homestead.yaml

Homestead.yaml 文件中的 folders 属性列出了全部主机和 Homestead 虚拟机共享的文件夹,一旦这些目录中的文件有了修改,将会在本地和 Homestead 虚拟机之间保持同步,若是有须要的话,你能够配置多个共享文件夹(通常一个就够了):

folders:
    - map: d:/app
      to: /home/vagrant/Code

若是要开启 NFS,只需简单添加一个标识到同步文件夹配置:

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

配置 Nginx 站点

对 Nginx 不熟?没问题,经过 sites 属性你能够方便地将“域名”映射到 Homestead 虚拟机的指定目录,Homestead.yaml 中默认已经配置了一个示例站点。和共享文件夹同样,你能够配置多个站点:

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

你还能够经过设置 hhvm 为 true 让全部的 Homestead 站点使用 HHVM:

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

默认状况下,每一个站点均可以经过 HTTP(端口号:8000)和 HTTPS(端口号:44300)进行访问。

修改Hosts文件|访问网站

不要忘记把 Nginx 站点配置中的域名添加到本地机器上的 hosts 文件中,该文件会将对本地域名的请求重定向到 Homestead 虚拟机,在 Mac 或 Linux上,该文件位于 /etc/hosts,在 Windows 上,位于C:\Windows\System32\drivers\etc\hosts,添加方式以下:

域名须要在本机绑定hosts:192.168.10.10 homestead.app

确保 IP 地址和你的 Homestead.yaml 文件中列出的一致,一旦你将域名放置到 hosts 文件,就能够在浏览器中经过该域名访问站点了!

http://homestead.app

启动 Vagrant Box

配置好 Homestead.yaml 文件后,在 Homestead 目录下运行 vagrant up 命令,Vagrant 将会启动虚拟机并自动配置共享文件夹以及 Nginx 站点。
销毁该机器,可使用 vagrant destroy –force

vagrant up Box 'laravel/homestead' could not be found 问题解决办法

Box 'laravel/homestead' could not be found

收到在homestead目录下建立metadata.json文件,内容为
{
    "name": "laravel/homestead",
    "versions": [{
        "version": "0.4.1",
        "providers": [{
            "name": "virtualbox",
            "url": "file:///F:/VirtualBox/homestead.box"
        }]
    }]
}

Then run vagrant box add metadata.json

This will install the box with a version and can be confirmed by:

$ vagrant box list
laravel/homestead               (virtualbox, 0.4.0)

You will now be able to perform vagrant up using your local box.

Default login and password is just vagrant.

参考:

http://stackoverflow.com/questions/34946837/box-laravel-homestead-could-not-be-found

GuestAdditions versions on your host (5.0.14) and guest (5.0.6) do not match.问题解决办法

 

This works for me in linux, I think this will solve the problem in windows as well.

 

Quick Solution for Failed to mount folders in Linux guest issue.

 

Add the following line to your Homestead/Vagrantfile:

config.vbguest.auto_update = false

Your d:\VirtualBox/Homestead/Homestead/Vagrantfile should looks like this:

/...

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

    # To avoid install and uninstall VBoxGuessAdditions during vagrant provisioning. config.vbguest.auto_update = false .../

Save it and execute

$ vagrant destroy --force
$ vagrant up

 

参考:

http://stackoverflow.com/questions/30175290/laravel-homestead-vagrant-vboxsf-not-available-issue

为指定项目安装 Homestead

全局安装 Homestead 将会使每一个项目共享同一个 Homestead 盒子,你还能够为每一个项目单独安装 Homestead,这样就会在该项目下建立 Vagrantfile,容许其余人在该项目中执行 vagrant up 命令,在指定项目根目录下使用 Composer 执行安装命令以下:

composer require laravel/homestead --dev

这样就在项目中安装了 Homestead。Homestead 安装完成后,使用 make 命令生成 Vagrantfile 和Homestead.yaml 文件,make 命令将会自动配置 Homestead.yaml 中的 sites 和 folders 属性。

Mac/Linux:

php vendor/bin/homestead make

Windows:

vendor\bin\homestead make

接下来,在终端中运行 vagrant up 命令而后在浏览器中经过 http://homestead.app 访问站点。不要忘记在/etc/hosts 文件中添加域名 homestead.app

三、平常使用

全局访问 Homestead

有时候你想要在文件系统的任意位置运行 vagrant up 启动 Homestead 虚拟机,要实现这一目的须要将 Homestead 安装目录添加到系统路径。这样你就能够在系统的任意位置运行 homestead 或 homestead ssh 来启动/登陆虚拟机。

经过 SSH 链接虚拟机

你能够在 Homestead 目录下经过运行 vagrant ssh 以 SSH 方式链接到虚拟机

vagrant ssh

可是若是你须要以更平滑的方式链接到 Homestead,能够为主机添加一个别名来快速链接到 Homestead 盒子,建立完别名后,可使用 vm 命令从任何地方以 SSH 方式链接到 Homestead 虚拟机:

alias vm="ssh vagrant@127.0.0.1 -p 2222"

能够经过virtualbox打开虚拟机

用户名和密码: vagrant.

链接到数据库

默认已经在 Homestead 虚拟机中为 MySQL 和 Postgres 数据库作好了配置,更方便的是,Laravel的 .env 还为链接 Homestead 数据库作好了配置。

想要经过本地的 Navicat 或 Sequel Pro 链接到 Homestead 上的 MySQL 或 Postgres 数据库,能够经过新建链接来实现,主机 IP 都是 127.0.0.1,对于 MySQL 而言,端口号是33060,对 Postgres 而言,端口号是54320,用户名/密码是 homestead/secret

注意:只有从本地链接 Homestead 的数据库时才能使用这些非标准的端口,在 Homestead 虚拟机中仍是应该使用默认的 3306 和 5432 端口进行数据库链接配置。

添加更多站点

Homestead 虚拟机在运行时,可能须要添加额外 Laravel 应用到 Nginx 站点。若是是在单个 Homestead 环境中运行多个 Laravel 应用,添加站点很简单,只需将站点添加到 Homestead.yaml 文件,而后在 Homestead 目录中运行vagrant provision 命令便可。

  1. Homestead 中新增一个domain的步骤是
  2. 在homestead.ymal 文件里面编辑好sites和folders这两个项目
  3. 执行vagrant provision

配置 Cron 调度任务

Laravel 提供了很方便的方式来调度 Cron 任务:只需每分钟调度运行一次 Artisan 命令 schedule:run 便可。schedule:run 会检查定义在 App\Console\Kernel 类中定义的调度任务并判断运行哪些任务。

若是想要为某个 Homestead 站点运行 schedule:run 命令,须要在定义站点时设置 schedule 为 true

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

该站点的 Cron 任务会被定义在虚拟机的 /etc/cron.d 目录下。

端口转发配置

默认状况下,Homestead 端口转发配置以下:

  • SSH: 2222 → Forwards To 22
  • HTTP: 8000 → Forwards To 80
  • HTTPS: 44300 → Forwards To 443
  • MySQL: 33060 → Forwards To 3306
  • Postgres: 54320 → Forwards To 5432

转发更多端口

若是你想要为 Vagrant 盒子添加更多端口转发,作以下转发协议设置便可:

ports:
    - send: 93000 to: 9300 - send: 7777 to: 777 protocol: udp

四、使用 Blackfire Profiler 进行性能分析

SensioLabs 开发的 Blackfire Profiler 能自动收集代码执行数据,好比内存、CPU 时间、硬盘 I/O 等,Homestead 使得在应用中使用该性能分析器变得垂手可得。

Blackfire Profiler 须要的软件包已经预安装到 Homestead 盒子,你只须要在 Homestead.yaml 文件中设置 Blackfire Server ID 和 token:

blackfire:
    - id: your-server-id token: your-server-token client-id: your-client-id client-token: your-client-token

配置好 Blackfire 的凭证以后,在 Homestead 目录下使用 vagrant provision 从新启动 Homestead。在此以前,确保你已经查看过 Blackfire 文档了解了如何在浏览器安装相应的 Blackfire 扩展。

 

相关密码

Ubuntu
用户名:vagrant
密码:vagrant

mysql密码
homestead / secret
root / secret

虚拟机操做


在不进入虚拟机的状况下,还可使用下面的命令对 虚拟机进行管理:

vagrant up (启动虚拟机)
vagrant halt (关闭虚拟机——对应就是关机)
vagrant suspend (暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,能够执行恢复操做后继续使用)
vagrant resume (恢复虚拟机 —— 与前面的暂停相对应)
vagrant destroy (删除虚拟机,删除后在当前虚拟机所作进行的除开Vagrantfile中的配置都不会保留)

以上命令需在Homestead目录下执行
参考:
http://stackoverflow.com/questions/26655516/how-to-install-manually-downloaded-box-for-vagrant
http://stackoverflow.com/questions/34946837/box-laravel-homestead-could-not-be-found
http://stackoverflow.com/questions/25981735/laravel-homestead-stuck-on-vm-login
http://os.51cto.com/art/201507/484834.htm
http://yaojinbu.com/post/2749.html
http://x-bird.qiubs.com/laravel-homestead-intro.html?utm_source=tuicool&utm_medium=referral
http://blog.csdn.net/small_rice_/article/details/45366299
http://blog.csdn.net/markely/article/details/49585887
http://www.ekan001.com/articles/40
http://www.tuicool.com/articles/rIVJRvm

相关文章
相关标签/搜索