虽然 Trellis 可以自动帮我们在本地搭建一个完整的开发环境,不过我们还是需要了解一下到底都发生了什么。现在我们的项目主要有两个部分 .. site 里面是 WordPress 项目本身 .. trellis 里面的东西主要用来搭建本地开发环境,远程生产环境,还有部署相关的东西 ..
在 trellis 目录的下面,有个 Vagrantfile .. 这个东西是本地开发环境用的虚拟机相关的配置 .. vagrant 需要根据这个文件里面的配置,帮我们去创建一台虚拟机 ..
trellis 里面的这个 vagrantfile 有点复杂 .. 因为它要读取一些外部文件里面的相关的配置,还要判断用户的操作系统,使用的虚拟机软件等等 ..
主要的配置是在 Vagrant.configure 这个区块里面 .. 这个配置文件开始部分,你会看到导入了一个叫 vagrant.default.yml 的文件 .. 里面就是一些默认的配置选项,还有对应的值 ..
下面又判断了一下,目录的下面有没有 vagrant.local.yml ,如果有,就把这个文件里面的配置合并到 vagrant 的配置里面 ..
打开 vagrant.default.yml .. vagrant_ip 是虚拟机用的 ip 地址 .. 默认是 192.168.50.5 ,这是一个私有网络的 ip 地址 ..
也就是这个 ip 地址,只有在你的主机上才能访问到 .. 回到 vagrantfile 我们可以看一下哪个地方用到了这个 ip 地址 ..
这里的 vconfig ,是上面用了 YAML 的 load_file 载入的配置文件里的内容,这个文件就是 vagrant.default.yml ..
在这里判断了 vagrant_ip 是不是等于 dhcp ,也就是我们可以把 vagrant.default.yml 文件里的 vagrant_ip 的值换成 dhcp .. 这样虚拟机会自动被分配一个 ip 地址 ..
如果值不是 dhcp ,下面就用了 config.vm.network 它可以配置虚拟机的网络,:private_network,网络的类型是私有网络 .. 这个类型还可以是 :public_network ..
ip 的值就是 vagrant.default.yml 文件里的 vagrant_ip 的值 ..
vagrant_cpus 是虚拟机用的 cpu 的核心数,vagrant_memory 是内存的大小 .. vagrant_box 是虚拟机用的 box,也就是系统的镜像,trellis 用了一个 ubuntu 类型的操作系统 .. vagrant_box_version 是这个 box 的版本 ..
在 vagrantcloud 网站上,你可以找到很多 box ..
https://app.vagrantup.com/boxes/search
不同的 box 操作系统可能是不一样的,比如这个 ubuntu/trusty64,是一个特定版本的 ubuntu 操作系统的 box ,下面这个 centos/7 是一个特定版本的 centos 操作系统的 box
box 可能会提供不同的类型,也就是适用的虚拟技术的类型,比如这个 centos/7 有可以在 virtualbox 上运行的版本,也有可以在 vmware 上运行的版本 ..
有些 box 还会基于某种基本的操作系统,再去安装一些特定的软件,做一些配置,然后再打包生成 .. 比如这个 laravel 的 homestead[ˈhoʊmsted],这个 box 应该就是针对 Laravel 的开发去做了一些配置 ..
再回到这个 vagrant 默认的配置选项文件 ..
vagrant_plugins 是需要用的 vagrant 插件,bindfs 可以让我们使用 nfs 类型的共享目录,这样性能会更好一些 .. hostmanager 可以自动给我们设置系统上的 hosts 文件,添加需要的主机记录,这样我们就可以在系统上使用虚拟机的主机名访问到虚拟机上的服务 ..