准备
开发所需工具:
Vagrant
Oneinstack
Virtualbox
Vagrant box
系统环境:macOS Sierra 10.12.5
搭建系统:CentOS 7
搭建环境:Oneinstack(PHP以及Java环境
)
为啥不用docker?因为很多公司用的windows,然而windows 10才能正常支持,在wineows下安装一大堆东西不行,折腾了好些下,决定不躺着个坑。
安装
首先需要先安装Virtualbox
、Vagrant
,按照官方文档选择对应操作系统安装即可。
检查是否安装完成
➜ ~ 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