内容纲要

基本介绍

Homestead 可以运行在 Windows 、 Mac 或 Linux 系统上,并且里面包含了 Nginx Web 服务器、 PHP 7.1 、 MySQL 、 Postgres 、 Redis 、 Memcached 、 Node 等以及所有利于你开发 laravel 应用的其他程序。

内置软件

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

安装与配置 (windows 用户自行安装 git 方便操作以下命令)

安装 vagrant

vagrant-win vagrant-linux

安装 Virtualbox

virtualbox-win virtualbox-linux

导入 box

vagrant box add laravel/homestead

由于众所周知的原因, 上述方法可能需要下载个几天,所以推荐直接用迅雷下载 virtualbox 版的 box 文件

接下来我新建了一个文件夹名为 homestead,然后我将下好的 box 重命名为 homestead.box 放入,然后在此文件夹内运行如下命令

vagrant box add laravel/homestead E:\homestead\homestead.box
vagrant box list

会反馈一条信息:laravel/homestead (virtualbox, 0) 这说明 box 已经添加进来了

下载官方 homestead 配置

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

克隆的文件夹内有 init.sh 和 init.bat 文件,运行如下命令进行初始化生成 homestead.yml 配置文件

bash init.sh

或者直接双击 init.bat

配置 Homestead.yaml

设置 IP 及 Provider

Homestead.yaml 文件中的 provider 键表示使用哪个 Vagrant 提供者:virtualbox、vmware_fushion 或者 vmware_workstation

   ip: "192.168.10.10"
   provider: virtualbox
配置共享文件夹

Homestead.yaml 文件中的 folders 属性列出了所有主机和 Homestead 虚拟机共享的文件夹,一旦这些目录中的文件有了修改,将会在本地和 Homestead 虚拟机之间保持同步,如果有需要的话,你可以配置多个共享文件夹(一般一个就够了),如果要开启 NFS,只需简单添加一个标识到同步文件夹配置

folders:
    - map: D:/homestead/code  #(这是我本地的文件夹)
      to: /home/vagrant/Code
      type: "nfs"
配置 Nginx 站点

通过 sites 属性可以方便地将域名映射到 Homestead 虚拟机的指定目录,Homestead.yaml 中默认已经配置了一个示 例站点。和共享文件夹一样,可以配置多个站点:

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
    - map: yii2.app
      to: /home/vagrant/Code/yii2/basic/web
修改 Hosts 文件

把 Nginx 站点配置中的域名添加到本地机器上的 hosts 文件中,该文件会将对本地域名的请求重定向到 Homestead 虚拟机

192.168.10.10  homestead.app
192.168.10.10  www.yii2.com

修改 homestead.rb 文件

如果这时候你直接在 Homestead 目录下启动 homestead 虚拟机,肯定会得到反复叫你下载 virtualbox 的提示,猜测这是由于手动添加的 virtualbox 没有保存版本信息的缘故 (可以使用命令 vagrant box list 来查看)。所以可以通过修改 Homestead/scripts/homestead.rb 来解决这一个问题,找到

config.vm.box_version = settings[“version”] ||= “>= 2.0.0” 这一行,将其修改为 config.vm.box_version = settings[“version”] ||= “>= 0” 即可

启动虚拟机

进入 Homestead 目录 (git clone 下来里面的那个目录),使用命令 vagrant up 命令启动虚拟机,可使用 vagrant ssh 登陆虚拟机。顺便一提,虚拟机数据库的 root 用户密码为 secret,远程连接是用户 homestead 密码 secret

若提示 ssh 的 key 没有生成则执行:ssh-keygen

更换 composer 中国镜像:composer config -g repo.packagist composer https://packagist.phpcomposer.com

若访问网站出现文件未找到(No input file specified.)则需要执行:vagrant provision

命令操作

  • Homestead 目录下

开机: vagrant up 关机: vagrant halt 更改 homestead.yml 后使用:vagrant provision 盒子列表:vagrant box list 重新加载配置:vagrant –reload 从 vagrant 中去除添加的盒子:vagrant box remove ‘盒子名称’ 销毁虚拟机: vagrant destroy –force 登录: vagrant ssh

  • 访问网站

绑定 hosts 192.168.10.10 homestead.app 访问 http://homestead.app

  • SSH 登录

通过 ssh 登录 ssh vagrant@127.0.0.1 -p 2222 或者创建别名 alias vm=”ssh vagrant@127.0.0.1 -p 2222″,使用 vm 登录 通过在 Homestead 目录使用 vagrant ssh 命令

  • 连接虚拟机内 Mysql

mysql -h 127.0.0.1:33060 -u homestead -p secret

  • 端口映射

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

  • 增加额外端口

ports:

- send: 93000
  to: 9300
- send: 7777
  to: 777
  protocol: udp
  • 增加站点

方式一 Homestead.yaml 文件中增加站点 Homestead 目录中执行 vagrant provision 会破坏以后数据库

方式二 Homestead 环境中的 serve 命令 SSH 进入 Homestead 环境中 执行下列命令 serve domain.app /home/vagrant/Code/path/to/public/directory 80

License

MIT

Copyright (c) 2016-present, Voocel

发表评论

电子邮件地址不会被公开。 必填项已用*标注