如果是工程化开发,走正规军路子还是推荐使用 Homestead。下载Vagrant。官方下载地址

这里下载的是Windows版本的安装包。直接点击安装即可,安装过程中可自定义安装路径。Windows+r启动cmd,输入vagrant -v验证安装是否成功,如果出现版本信息表示成功。

clipboard.png

注:如果你使用的是 Windows,需要开启系统的硬件虚拟化(VT-x),这通常可以通过 BIOS 来开启。如果你是在 UEFI 系统上使用 Hyper-V,则需要关闭 Hyper-V 以便可以访问 VT-x。

clipboard.png

预装软件

Homestead 可以运行在 Windows、Mac 以及 Linux 等主流操作系统上,预装的软件和工具列表如下:

  • Ubuntu 16.04
  • Git
  • PHP 7.2
  • PHP 7.1
  • PHP 7.0
  • PHP 5.6
  • Nginx
  • Apache(可选)
  • MySQL
  • MariaDB(可选)
  • SQLite3
  • PostgresSQL
  • Composer
  • Node(With Yarn, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailhog
  • Elasticsearch(可选)
  • ngrok

1. 安装前准备

使用 Homestead 之前,需要先安装VirtualBox,以及 Vagrant,所有这些软件包都为常用操作系统提供了一个便于使用的可视化安装器,通过安装界面引导就可以完成安装。

2.安装 Vagrant box

注意: Laravel官方推荐的Shell是Git Bash。因为Git Bash自动将~(tilde)映射到用户根目录下(例如,C:\Users\MyUserName),而如果使用Windows自带的cmd,那么需要使用%HOMEDRIVE%%HOMEPATH%环境变量来进入正确的文件夹。

VirtualBox 和 Vagrant 安装好了之后,在终端中使用如下命令将Homestead Vagrant box laravel/homesterad 添加到 Vagrant 中
vagrant box add laravel/homestead

clipboard.png

选择virtualbox选项,进入下载等待,时间取决于网络。如果上述命令执行失败,需要确认 Vagrant 是否是最新版本。网络或者机器关机中断后一直报错 Failed to connect to vagrantcloud-files-production.s3.amazonaws.com port 443: Timed out之类的错误。还有解压错误等。可能是跟网络有关系,再试几次就成功了(可以用管理员打开cmd去试试)。国内网络也就这样了,不行就移步手动下载。

  x ubuntu-16.04-amd64-disk001.vmdk: gzip decompression failed
    bsdtar.EXE: Error exit delayed from previous errors.

使用vagrant box list命令确认是否安装了box。
clipboard.png

也可以选择手动下载安装laravel/homestead box下载地址vagrant cloud 下载地址https://app.vagrantup.com/laravel/boxes/homestead/versions/5.2.0/providers/virtualbox.box
如果你需要下载不同版本(或最新版本),请将以上地址中versions/后的数字版本号替换成相应的版本号。

clipboard.png

下载好之后改名为virtualbox.box,

和virtualbox.box放置在同一个目录。执行vagrant box add laravel/homestead ~/Downloads/virtualbox.box添加。后边的~/Downloads/virtualbox.box是文件存放路径。

clipboard.png

clipboard.png

clipboard.png

Vagrant 2.0.3有问题,报Invalid file://hostname/, expected localhost or 127.0.0.1 or none。

3. 安装 Homestead

选择任意目录作为Homestead目录。如:F:,在这个目录下执行clone

git clone https://github.com/laravel/homestead.git Homestead
或者下载zip包 GitHub路径

然后进入克隆下的目录 cd Homestead/

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

// Windows...
init.bat

clipboard.png

在 Homestead 目录下运行 init.bat 命令来创建 Homestead.yaml 配置文件,生成的 Homestead.yaml 配置文件文件位于当前 Homestead 目录。如果git Base 执行 bash init.sh

完成后会生成Homestead.yamlVagrantfile

---
#`Homestead.yaml`配置文件:
# 虚拟机ip
ip: "192.168.10.10"
# 虚拟机使用内存
memory: 2048
# 虚拟机使用的单核CPU
cpus: 1
# Vagrant 提供者
provider: virtualbox
# 公共ssh key
authorize: ~/.ssh/id_rsa.pub
# 私有ssh key
keys:
    - ~/.ssh/id_rsa
# 共享文件夹
folders:
    - map: ~/code
      to: /home/vagrant/code
# 站点配置
sites:
    - map: homestead.test
      to: /home/vagrant/code/public
# 数据库名
databases:
    - homestead

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar

# 端口转发
# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

variables:
    - key: APP_ENV
      value: local 

如果sites在配置Homestead框后更改属性,则应该重新运行以更新虚拟机上的Nginx配置,vagrant reload --provision
修改本地host文件:在 Mac 或 Linux上,该文件位于 /etc/hosts,在 Windows 上,位于 C:\Windows\System32\drivers\etc\hosts。和配置文件中的ip保持一致

192.168.10.10 homestead.test

clipboard.png

Homestead 目录下运行 vagrant up 命令启动

clipboard.png

这个提示是ip冲突,更改ip即可。

clipboard.png

手动下载的,执行vagrant up 时还是提示找不到,这是因为手动引入的box版本问题

clipboard.png

解决方法就是,进入Homestead/scripts 下的 homestead.rb文件,做以下修改即可。

clipboard.png

vagrant reload --provision 重启。再执行vagrant up,首次启动会有一个初始化过程

clipboard.png

vagrant status 查看状态。running状态启动成功。

clipboard.png

4. 相关管理命令

vagrant up :启动虚拟机
vagrant halt :关闭虚拟机
vagrant reload --provision 重启
vagrant suspend: 暂停虚拟机,就是挂起
vagrant resume :恢复虚拟机
vagrant box remove xx: 移除box,其中 xx 是 box 名称
vagrant destroy :删除虚拟机

5. SSH 登录

vagrant up 启动界面可以看到ssh登录地址和端口:

clipboard.png

默认账户密码是:vagrant。使用ssh登录工具登录即可。

6. 连接mysql

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


7. php扩展安装

在vagrant box 上安装PHP扩展
这里以安装MongoDB扩展为例:
1. 首先安装mongodb数据库

`apt-get update` 更新源,也可以不更新,包的新旧问题

sudo apt-get install -y mongodb
2. 安装mongodb扩展

pecl update 通道升级 `sudo pecl channel-update`

`pecl install mongodb`  php7 以上的版本,默认最新

修改配置文件。特别注意,vagrant中需要修改两处,不然会出现在 php -mphpinfo()打印出来的不一致。

* `sudo vim /etc/php/7.2/fpm/php.ini` 第一处
* `sudo vim /etc/php/7.2/cli/php.ini` 第二处

添加extension=mongodb.so进去。然后重启php-fpm。

执行命令: sudo service php7.2-fpm restart

这样就可以通过php -mphpinfo()输出结果,显示是一致的。
vagrant 中的版本较多,可以通过ll /etc/alternatives/php 查看默认的版本。
clipboard.png


Rango
315 声望22 粉丝

编程是技能 (Skill),不是知识 (Knowledge),技能只有在不断练习下才会有进步。