开发所需工具:html
Vagrantdocker
Oneinstackwindows
Virtualboxcentos
Vagrant boxbash
系统环境:macOS Sierra 10.12.5
搭建系统:CentOS 7
搭建环境:Oneinstack(PHP以及Java环境
)网络
为啥不用docker?由于不少公司用的windows,然而windows 10才能正常支持,在wineows下安装一大堆东西不行,折腾了好些下,决定不躺着个坑。app
首先须要先安装Virtualbox
、Vagrant
,按照官方文档选择对应操做系统安装便可。ssh
检查是否安装完成ide
➜ ~ 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:8989
OK,展现出欢迎service欢迎页面。
访问的问题解决了,那么该如何编辑代码呢?同步文件夹解决这个问题。为了更快的同步到box里面,Mac可使用NFS
Windows可使用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