Vagrant搭建可移动的PHP开发环境

准备

开发所需工具:

系统环境:macOS Sierra 10.12.5
搭建系统:CentOS 7
搭建环境:Oneinstack(PHP以及Java环境

为啥不用docker?因为很多公司用的windows,然而windows 10才能正常支持,在wineows下安装一大堆东西不行,折腾了好些下,决定不躺着个坑。

安装

首先需要先安装VirtualboxVagrant,按照官方文档选择对应操作系统安装即可。

检查是否安装完成

➜  ~ vagrant -v
Vagrant 1.9.8

准备就绪,走起!!!

走起

➜ morgan cd path          #cd 到你要操作的目录
➜ path mkdir vagrant      #创建目录
➜ vagrant cd vagrant      #进入目录

选择boxs,打开Vagrant box,在box列表选择CentOS 7 x64 (Minimal, Shrinked, Guest Additions 4.3.26) (Monthly updates)根据你的需要选择对应的系统,复制对应URL。

➜  vagrant vagrant init centos/7 #在Vagrant box 中的名字,然后等待
➜  vagrant vagrant up            #启动
➜  vagrant vagrant ssh           #进入ssh
[vagrant@localhost ~]$ cd /home/ #进入你准备用来下载oneinstack的目录,然后根据官方安装教程完成环境安装

到这里PHP环境安装完毕,问题来了,如何访问呢?端口映射。
打开所在目录Vagrant生成的Vagrantfile查找被注释的forwarded_port,其实该配置文件写的很详细,可以根据说明完成大部分配置。复制,粘贴之注释下方,端口号根据系统环境以及个人需求更改,然后保存。

# config.vm.network "forwarded_port", guest: 80, host: 8080
+ config.vm.network "forwarded_port", guest: 80, host: 8989

退出ssh,然后重启。

[vagrant@localhost root]$ exit; #退出ssh
➜  vagrant vagrant reload       #重启

访问127.0.0.1:8989OK,展示出欢迎service欢迎页面。
访问的问题解决了,那么该如何编辑代码呢?同步文件夹解决这个问题。为了更快的同步到box里面,Mac可以使用NFSWindows可以使用SMB方式。以Mac为例,配置不同的是type参数。打开Vagrantfile,查找synced_folder复制到下方,查找private_network复制到下方,修改对应目录,保存。

# config.vm.synced_folder "../data", "/vagrant_data"
+ config.vm.synced_folder "本机文件路径", "vagrant上面需要挂载的目录"
# config.vm.network "private_network", ip: "192.168.33.10"
+ config.vm.network "private_network", ip: "192.168.33.10" #文件同步需要通讯,所以需要配置网络,这里配置的私有网络。如果你需要局域网其他人能够访问你的Vagrant中的项目,那么你可能需要配置共有网络,查看Vagrant的docs Networking 查看更多。

重启服务

➜  vagrant vagrant up

到这里,环境的配置完成了!

其他修改

加注释的为其他修改

Vagrant.configure("2") do |config|
  config.vm.hostname = "morgan" #修改主机名,ssh登陆后的左侧提示
  config.vm.box = "centos/7"
  config.vm.network "forwarded_port", guest: 80, host: 8989    
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "/Users/morgan/Desktop/www/", "/data/wwwroot/default/", type: "nfs"

  config.vm.provider "virtualbox" do |vb|
      vb.name = "morgan-centos" #虚拟机名
      vb.memory = "1024"    #内存大小
      vb.cpus = 2    #CPU数量
  end
end

在开发测试的时候,发现要刷新几次才能够显示新的页面,查看文档发现是Nginx 的sendfile 导致的。修改配置。

#In Nginx:
sendfile off;

#In Apache:
EnableSendfile Off

打包

➜  vagrant vagrant package name

参考文档:
Vagrant docs

    原文作者:morgan
    原文地址: https://segmentfault.com/a/1190000011065753
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞