您现在的位置是:首页 > 技术学习 > PHP 网站首页 技术学习 PHP

如何使用Homestead搭建laravel本地开发环境

建站   PHP   Laravel  
简介 Laravel是很火的PHP框架,Laravel Homestead 是一个官方预封装的 Vagrant box ,它为你提供了一个完美的开发环境,你不需要在本地机器安装 PHP、 web 服务器和其

简介

Laravel是很火的PHP框架,Laravel Homestead 是一个官方预封装的 Vagrant box ,它为你提供了一个完美的开发环境,你不需要在本地机器安装 PHP、 web 服务器和其他的服务器软件。你再也不用担心会弄乱你的操作系统了! Vagrant boxes 是一次性的。 如果出现问题, 你可以在几分钟内销毁并重新创建 box !

Homestead 可以运行在任何 Windows、 Mac、 或 Linux 系统, 它包括了 Nginx web 服务器, PHP 7.3、 PHP 7.2、 PHP 7.1、 MySQL、PostgreSQL、Redis、 Memcached、 Node 以及你开发 Laravel 所需要的东西。

如果你使用的是 Windows, 你可能需要通过 BIOS 来启用硬件虚拟化 (VT-x)。如果你在 Hyper-V 系统上使用 UEFI 你可能还需要禁用 Hyper-V 以便访问 VT-x.

安装步骤:

1. 安装git

git下载地址:https://git-scm.com/downloads

    根据自己系统下载安装git
    window安装完会有一个git bash客户端,这就是执行git和bash命令的界面
    mac下直接在终端即可执行git命令
2. 下载vagrant

用于创建和部署虚拟化环境,操作虚拟机

下载地址:https://www.vagrantup.com/downloads.html

    下载最新版的vagrant
    根据自己的系统进行下载安装
    可手动指定安装目录,我安装的目录是 /e/Vagrant
    安装完毕,将该vagrant安装目录下的bin文件夹目录配置到环境变量中,这样就可以在全局调用vagrant
    输入 vagrant -v
    如果显示vagrant版本说明配置成功
    mac安装同上
3. 下载virtualbox(虚拟机客户端,可在里面添加虚拟机盒子)

下载地址:https://www.virtualbox.org/wiki/Downloads

根据自己的系统进行下载安装即可,我安装在 /e/VirtualBox

注:
可以尝试下载最新版的virtualbox,但是最新版接下来不一定可以配置成功(这是一个坑),我刚开始下载的是最新版的(5.2版本,当时刚发布没几天),但是在添加盒子时候一直报错,说版本不匹配,报错信息里面给出的版本列表提示里并没有5.2这个版本,最新才5.1。一直以为是我下载的盒子文件版本不正确,研究好久才发现是virtualbox版本不对,然后下载了5.1.30版本的就配置成功了。

4. 添加laravel/homestead盒子
  1. 在终端中输入 vagrant box add laravel/homestead
  2. 然后会让选择运行盒子的软件,
    选择virtualbox对应的序号,输入该序号(virtualbox序号为2)回车即可开始下载
    此时终端会输出 下载地址。这个就是盒子的下载地址,最新版本的下载地址
    理论上由于墙的原因很难下载下来,可以开VPN
  3. 如果下载不下来,可以尝试使用本地安装
    3-1. 先从网上找到这个版本的盒子,可以下载最新版
    3-2. 下载完修改文件名字homestead.box,注意:后缀必须是.box,文件名无所谓,记住该文件的路径,我的是 /e/VirtualBoxFile/homestead.box
    3-3. 在该文件同级目录下创建一个配置文件 metadata.json
    3-4. 在该文件里写如下内容:
    {
        "name": "laravel/homestead",
        "versions": [{
            "version": "4.0.0",
            "providers": [{
                "name": "virtualbox",
                "url": "/e/VirtualBoxFile/homestead.box"
            }]
        }]
    }

参数说明:

    name: 名称尽量不要修改,如果修改了,vagrant up 启动的时候会报错,然后会自动下载最新版本。
    versions:
        version: 你下载的 homestead.box 版本号
        providers: 
            name: 运行盒子的软件
            url: 这里是你下载的homestead.box盒子的路径。

3-4. 然后在git中进入到放置该文件的路径(即下载的盒子和metadata.json所在的目录)下,输入:cd /e/VirtualBoxFile 回车即可

3-5. 然后执行:vagrant box add metadata.json 就会开始添加盒子,

如果出现laravel/homestead (virtualbox, 0),说明没配置好(盒子版本信息没配好,所以显示为0),需要删除盒子重新配置添加,

删除盒子命令:vagrant box remove laravel/homestead

或者删除指定版本:(带上相应版本号,可用vagrant box list查看版本号)

vagrant box remove laravel/homestead --box-version x.x.x

例:vagrant box remove laravel/homestead --box-version 6.0.0

如果安装成功会显示你配置的盒子版本号

安装成功可以用 vagrant box list 查看已安装盒子列表
 

5. 下载homestead配置项目

window系统下:

    git中进入想让项目下载的位置,我的是下载在e盘,先进入e,输入 cd /e 回车
    然后执行:git clone https://github.com/laravel/homestead.git Homestead
    下载完毕,e盘会生成一个Homestead目录,git中进入该目录 cd Homestead
    window系统执行 bash init.bat
    初始化完毕,Homestead下会生成一个Homestead.yaml文件

mac下:

    首先进入用户目录下(这样可将主机服务提供给你所有的Laravel项目),
    终端中输入 cd ~
    从GitHub克隆homestead,
    输入: git clone https://github.com/laravel/homestead.git Homestead
    克隆完毕后进入Homestead文件夹下,输入 cd Homestead/
    初始化,mac和linux系统输入 bash init.sh   
    初始化成功会显示:Homestead initialized! 
    此时Homestead文件夹下会生成一个配置文件Homestead.yaml
    注:至于是否要安装到 ~ 下,目前还没研究。
6. Homestead.yaml文件解读
ip: "192.168.10.10"
    # 这是虚拟机的ip地址
memory: 2048
    # 这是虚拟机的内存大小
cpus: 1
    # 虚拟机cpu核数
provider: virtualbox
    # vagrant的提供者
authorize: ~/.ssh/id_rsa.pub
    # 自己电脑的公钥
keys:
    - ~/.ssh/id_rsa    
        # 这是私钥
    # 注:
    # 公钥私钥如果没有的话,说明还没生成过,
    # (windows下在git bash下,mac和linux在终端) 输入 ssh-keygen -t rsa -C "你的邮箱地址"
    # 然后会让你输入保存路径,默认是在用户(~)的.ssh目录下
    # 然后会让你填写密码,默认为空,没密码。
folders:
    - map: ~/code
      to: /home/vagrant/Code
    # 这是共享文件夹,当电脑文件发生更改,虚拟机中会自动同步更新,
    # 可以设置多个文件夹。(map是本机,to是虚拟机)。
    # 注:
        # windows下 map:里不能使用/e/code  要使用E:/code  不然可能会造成文件映射不成功

    # 如果要启动NFS(网络文件系统)
    # folders:
        # - map: ~/code
          # to: /home/vagrant/Code
          # type: "nfs"
sites:
    - map: homestead.test
      to: /home/vagrant/Code/public      
    # 这是Nginx站点,指定一个域名(map的值)到homestead环境中的目录上。
    # 然后我们需要在本地hosts文件
    # mac或linux路径/etc/hosts,
    # windows下路径C:\Windows\System32\drivers\etc\hosts 中将IP和域名对应上,
    # 修改hosts文件(如果权限不足可以用sudo vi hosts模式),在后面添加:
        # 192.168.10.10 homestead.test
        # 这样在网址中输入 http://域名 即可访问自己的网站。
    # 注:
        # chrome 63版本 浏览器,会自动把 .app、.dev 后缀的域名转为https:// 链接
        # 所以,配置站点时不要使用这种类型的。

    # 可以添加多个站点
        # sites:
          # - map: homestead.app
            # to: /home/vagrant/Code/Laravel/public
          # - map: another.com
            # to: /home/vagrant/Code/another/public
    # 多站点时的hosts修改:
        # 192.168.10.10  homestead.test
        # 192.168.10.10  another.test

        # 注:
            # 当修改过sites属性后,需要重新运行 vagrant reload --provision 来更新配置到虚拟机

databases:
    - homestead
    # 这是数据库,默认已经有一个可用的数据库库 homestead。这是默认数据库。

# 以下参数是可选,按功能需求填写
    # 端口转发:
    # 1. 自带默认转发
    # 本地 → 虚拟机 端口对应关系
    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
    Mailhog: 8025 → Forwards To 8025
    # 2. 自定义转发(需在homestead.yaml文件中配置ports端口)
ports:
    - send: 93000
      to: 9300
    - send: 7777
      to: 777
      protocol: udp
networks:
    - type: "private_network"
      ip: "192.168.10.20"
    # 给环境配置网络接口,这样局域网其他电脑可访问

networks:
    - type: "public_network"
      ip: "192.168.10.20"
      bridge: "en1: Wi-Fi (AirPort)"
    # 桥接接口,(目前不知道干啥用的。。。),type需改成 public_network
7. 启动虚拟机

在终端中,进入Homestead目录下,输入

    vagrant up
8. 连接虚拟机(进入虚拟界面的终端)
    vagrant ssh

注:登录虚拟机的用户:
账户:vagrant
密码:vagrant

9. 在虚拟机中下载Laravel框架

连接到虚拟机后,进入Code文件夹,

使用composer安装laravel(虚拟机自带composer),输入

    composer create-project laravel/laravel Laravel --prefer-dist
    # –prefer-dist: 意思是下载用于 distribution 的稳定版本,而不是开发中的版本。

下载较慢,可用vpn,

下载完毕,Code文件夹里会有一个人Laravel文件夹,这就是项目。

修改Homestead.yaml文件的sites属性

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

修改后 vagrant ssh 会退出

在本地终端进入Homestead文件夹,输入 vagrant reload --provision

虚拟机重新启动,此时在浏览器中输入 http://homstead.test 即可访问laravel项目

 

10. 共享环境

将虚拟机变成云主机

ssh登录虚拟机后,在命令行输入 share 配置的项目网址

    share laraveltest.test

此时会将你的Homestead.yaml配置文件中的站点共享。

运行完命令之后,你可以看到一个包含活动日志和共享站点外网访问路径的 Ngrok 界面。界面里可以看项目受访记录。

注:此做法比较危险

11. 退出虚拟机的终端(中断和虚拟机的连接)
    exit
12. 关闭虚拟机
    vagrant halt

注:该命令必须在本地电脑的终端中输入,在虚拟机终端输入无效

13. 强制关闭(销毁)虚拟机
    vagrant destroy --force
14. 更新 Homestead
  1. 更新vagrant box盒子
    vagrant box update
  1. 更新Homestead源码,两种方法:
    1. 如果是通过克隆远程仓库安装的
        git pull origin master
    2. 如果是通过composer.json安装,
        确认composer.json中是否包含 "laravel/homestead": "^4"
        更新依赖
            composer update
15. 安装MongoDB

如果想在虚拟机中安装mongodb服务,在Homestead.yaml 文件中添加一行

    # 使用mongodb
    mongodb: true

然后执行 vagrant reload --provision

连接mongodb:(注:转发端口是一致的。)

    # 在虚拟机上连接:
        host: 127.0.0.1
        user: homestead
        pass: secret
        port: 27017

    # 在主机上连接:(主机也能通过127.0.0.1连接到mongo)
        host: 192.168.10.10
        user: homestead
        pass: secret
        port: 27017
Top