开发工具及软件请在右侧点击下载哦~

系统要求

Windows 7 及以上系统

主要步骤

  1. 设置 SublimeText
  2. 安装 Git
  3. 安装 VirtualBox
  4. 安装 Vagrant
  5. Homestead介绍
  6. 导入Homestead Box(虚拟机盒子)
  7. 下载 Homestead 管理脚本及配置
  8. 启动 Homestead 虚拟机
  9. 创建第一个Laravel应用
  10. 创建第二个Laravel应用
  11. 附录

1. 设置 SublimeText

在系统的环境变量中添加SublimeText路径

 ;C:Program FilesSublime Text Build 3176 x64

2. 安装 Git

直接双击安装并检测是否成功安装:

> git --version

3. 安装 VirtualBox

VirtualBox 号称是一款免费的虚拟机软件,支持主流操作系统,如:Mac, Windows, Linux 等,当然也可使用 vmware 或 Parallels 等。

直接双击安装即可。

4. 安装 Vagrant

Vagrant 是用来管理虚拟机的工具,例如通过指令来控制虚拟机的启动,在团队开发项目中,您只需要同步 Vagrantfile 文件,就可以保证团队每位成员的机器上拥有一致的开发环境。

5. Homestead介绍

Homestead是一个官方预封装的Vagrant虚拟机盒子,Homestead 虚拟机里面包含了 Nginx Web 服务器、PHP 7、MySQL、Postgres、Redis、Memcached、Node,以及您在使用 Laravel 开发时需要用到的各种软件。

Homestead 里面包含:

  • Homestead 管理脚本
  • Homestead Box 虚拟机盒子

6. 导入Homestead Box(虚拟机盒子)

在虚拟机盒子目录(非中文目录)运行以下命令导入 Box:

> vagrant box add metadata.json

注:导入成功后即可删除。

7. 下载 Homestead 管理脚本及配置

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

下载完成之后我们在 Homestead 目录,检出需要的 Homestead 版本:

> cd Homestead && git checkout v7.8.0

初始化 Homestead

> bash init.sh

初始化完成之后,会在 Homestead 目录下生成以下三个文件:

  • Homestead.yaml – 主要配置信息文件,我们可以在此文件中配置 Homestead 的站点和数据库等信息;
  • after.sh – 每一次 Homestead 盒子重置后(provision),会调用的 shell 脚本文件;
  • aliases – 每一次 Homestead 盒子重置后(provision),会被替换至虚拟机的 ~/.bash_aliases 文件中,aliases 里可以放一些快捷命令的定义。

配置 Homestead.yaml 文件

可通过Sublime Text直接打开 Homestead.yaml 文件

> subl ~/Homestead/Homestead.yaml
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
    - ~/.ssh/id_rsa
    - ~/.ssh/id_rsa.pub
folders:
    - map: ~/code
      to: /home/vagrant/code
sites:
    - map: homestead.test
      to: /home/vagrant/code/Laravel/public
databases:
    - homestead
variables:
    - key: APP_ENV
      value: local

authorize:主机上的公钥文件, 自动复制到虚拟机的 /home/vagrant/.ssh/authorized_keys文件中, 用于 SSH免密登陆

keys:主机的SSH私钥文件, 自动复制到虚拟机的 /home/vagrant/.ssh/ 目录中, 使虚拟机能共享主机上的密钥文件, 具备等同于主机的身份认证( 主机和虚拟机用同一个ssh私钥文件认证github)

创建密钥对,请将 lyc@studyfox.cn 替换为您自己的邮箱

> ssh-keygen -t rsa -C "lyc@studyfox.cn"

主机里直接访问虚拟机站点,必须绑定 hosts 来实现,可直接在以下路径打开或使用以下命令在Sublime Text打开

> subl C:/Windows/System32/Drivers/etc/hosts

在 hosts 文件中加入以下一行

192.168.10.10  homestead.test

8. 启动 Homestead 虚拟机

Vagrant 常用命令行:

命令行 说明
vagrant init 初始化 vagrant
vagrant up 启动 vagrant
vagrant halt 关闭 vagrant
vagrant ssh 通过 SSH 登录 vagrant(需要先启动 vagrant)
vagrant provision 重新应用更改 vagrant 配置
vagrant destroy 删除 vagrant

启动虚拟机

> cd ~/Homestead && vagrant up

启动成功后,在 ~/Homestead 目录中,登录 Homestead 虚拟机

> vagrant ssh

登录成功后如需退出虚拟机

$ exit

关闭虚拟机

> vagrant halt

9. 创建第一个Laravel应用

修改 composer 的全局配置文件

> composer config -g repo.packagist composer https://packagist.phpcomposer.com

开启 Homestead 虚拟机并登录

> cd ~/Homestead && vagrant up
> vagrant ssh

启动成功后新建一个 Laravel 项目

$ mkdir code
$ cd code
$ composer create-project laravel/laravel Laravel --prefer-dist "5.7.*"

10. 创建第二个Laravel应用

在虚拟机code目录中从git克隆一个应用

$ cd ~/code
$ git clone https://github.com/lycstudyfox/lesson.git Lesson

Homestead.yaml文件中添加如下内容

sites:
    - map: lesson.test
      to: /home/vagrant/code/Lesson/public
databases:
    - lesson

hosts中添加

192.168.10.10  lesson.test

重新加载 vagrant 配置并重启 Homestead 虚拟机

> cd ~/Homestead && vagrant provision && vagrant reload

登录 Homestead 虚拟机

> vagrant ssh 

下载项目依赖,存入vendor目录中

$ composer install 

拷贝 .env.example 为 .env

$ cp -r .env.example .env 

生成key

$ php artisan key:generate 

11. 附录

 

连接虚拟机的数据库信息

 

ip: 127.0.0.1
端口: 33060
用户名: homestead
密码: secret

 

ssh登录虚拟机的配置信息

 

ip: 192.168.10.10
用户名: vagrant
密码: vagrant

 

解决 Laravel 本地项目运行缓慢的问题(由VirtualBox 的 IO 引起,需安装NFS Plugin插件)

 

在主机中安装

> vagrant plugin install vagrant-winnfsd 

安装成功后修改配置文件homestead/scripts/homestead.rb

# Register All Of The Configured Shared Folders
if settings.include? 'folders'
    settings["folders"].each do |folder|
        if File.exists? File.expand_path(folder["map"])
            mount_opts = []

            if (folder["type"] == "nfs")
                mount_opts = folder["mount_options"] ? folder["mount_options"] : ['actimeo=1', 'nolock']
            elsif (folder["type"] == "smb")
                mount_opts = folder["mount_options"] ? folder["mount_options"] : ['vers=3.02', 'mfsymlinks']
            end

            # For b/w compatibility keep separate 'mount_opts', but merge with options
            options = (folder["options"] || {}).merge({ mount_options: mount_opts })

            # Double-splat (**) operator only works with symbol keys, so convert
            options.keys.each{|k| options[k.to_sym] = options.delete(k) }

            config.vm.synced_folder folder["map"], folder["to"], type: folder["type"] ||= nil, **options

            # Bindfs support to fix shared folder (NFS) permission issue on Mac
            if Vagrant.has_plugin?("vagrant-bindfs")
                config.bindfs.bind_folder folder["to"], folder["to"]
            end
        else
            config.vm.provision "shell" do |s|
                s.inline = ">&2 echo "Unable to mount one of your folders. Please check your folders in Homestead.yaml""
            end
        end
    end
end

将以上代码替换为下方代码

if settings.include? 'folders'
  settings["folders"].sort! { |a,b| a["map"].length <=> b["map"].length }

  settings["folders"].each do |folder|
    config.vm.synced_folder folder["map"], folder["to"], 
    id: folder["map"],
    :nfs => true,
    :mount_options => ['nolock,vers=3,udp,noatime']
  end
end

修改文件夹共享方式Homestead.yaml

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

重新加载 vagrant 配置并重启 Homestead 虚拟机

> cd ~/Homestead && vagrant provision && vagrant reload