当前位置: 首页 > 后端技术 > PHP

Vagrant

时间:2023-03-29 22:03:10 PHP

简介Vagrantforateam-consistentPHPdevelopmentenvironmentVagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它的主要意思是让所有的开发者使用和线上服务器一样的环境,本质上是和你一起创建一个新的虚拟机安装#https://www.vagrantup.com/downloads.html#vagrant下载,自己安装#https://www.virtualbox.org/wiki/Downloads#virtualbox下载,自安装常用命令vagrantinit#初始化,生成Vagrantfilevagrantup#启动虚拟机vagranthalt#关闭虚拟机vagrantreload#重启虚拟机vagrantssh#SSHto虚拟机vagrantsuspend#挂起虚拟机vagrantresume#唤醒虚拟机vagrantstatus#查看虚拟机运行状态vagrantdestroy#销毁当前虚拟机#box管理命令vagrantboxlist#查看本地box列表vagrantboxadd#添加box到列表vagrantboxremove#从box列表中移除#修改配置后,需要启动或重启vagrantprovisionvagrantreload--provisionhomestead站在巨人的肩膀上快速部署PHP开发环境homestead是官方的laravelphp开发环境(本教程使用homesteadbox6.1.0)内置:Ubuntu18.04GitPHP7.2PHP7.1PHP7.0PHP5.6NginxApache(可选。本教程未安装)MySQLMariaDB(可选。本教程未安装)Sqlite3PostgreSQLComposerNode(WithYarn,Bower,Grunt,andGulp)RedisMemcachedBeanstalkdMailhogNeo4j(可选。本教程不安装)MongoDB(可选。本教程不安装)Elasticsearch(可选。本教程不安装,以免太大)ngrokwp-cliZendZ-RayGoMinio下载框(homestead)#wgethttps://vagrantcloud.com/laravel/boxes/homestead/versions/6.1.0/providers/virtualbox.box#网盘:box镜像#metadata.json{"name":"laravel/homestead","versions":[{"version":"6.1.0","providers":[{"name":"virtualbox","url":"X:/path/homestead-6.1.0.box"}]}]}vagrantaddboxmetadata.json或vagrantaddboxlaravel/homesteadX:/path/homestead-6.1.0.box--box-version=6.1.0vagrantboxlist#laravel/homestead(virtualbox,6.1.0)vagrantinitlaravel/homestead--box-version=6.1.0#生成的Vagrantfile文件调整了Vagrantfile配置#-*-mode:ruby??-*-#vi:setft=ruby:ENV['VAGRANT_DEFAULT_PROVIDER']="virtualbox"Vagrant.configure("2")做|config|#虚拟机名称#config.vm.define="sxx_v1"#镜像名称config.vm.box="laravel/homestead"#镜像版本要求config.vm.box_version="6.1.0"#config.vm.box_version=">=6.1.0"#注意这里的服务名不能使用下划线"_"config.vm.hostname="sxx-dev-server"#虚拟机的内网ipconfig.vm.network"private_network",ip:"192.168.10.10"#共享同步数据目录config.vm.synced_folder"D:/qkl/sxx/docker","/home/share",create:falseconfig.vm.synced_folder"D:/qkl/sxx/sxx_admin3","/web/www/sxx_admin3",create:falseconfig.vm.synced_folder"D:/qkl/sxx/vagrant/nginx/conf","/etc/nginx/sites-custom/",create:false#portforwarding#guest->virtualmachine#host->hostconfig.vm.network"forwarded_port",guest:22,host:2222config.vm.network"forwarded_port",guest:80,host:8000#VirtualBox虚拟机配置:config.vm.provider"virtualbox"do|vb|vb.gui=falsevb.name="sxx_v1"vb.memory="2048"vb.cpus="2"end##查看您正在使用的提供程序的文档,以获取更多可用选项的信息。#使用shell脚本启用配置。其他配置器,例如#Puppet、Chef、Ansible、Salt、和Docker也可用。请参阅#文档以获取有关其特定语法和使用的更多信息。#config.vm.provision"shell",inline:<<-SHELL#sudoapt-getupdate#SHELLend启动vagrantup#output==>default:AttemptinggracefullyshutdownofVM...==>default:Checkingifbox'laravel/homestead'是最新的...==>默认值:清除任何以前设置的转发端口...==>默认值:清除任何以前设置的网络接口...==>默认值:准备网络接口基于配置...默认:适配器1:nat默认:适配器2:hostonly==>默认:转发端口...默认:22(来宾)=>2222(主机)(适配器1)默认:80(来宾)=>8000(主机)(适配器1)默认值:22(来宾)=>2222(主机)(适配器1)==>默认值:运行“预启动”VM自定义...==>默认值:启动VM...==>默认值:等待机器启动。这可能需要几分钟的时间...默认值:SSH地址:127.0.0.1:2222默认值:SSH用户名:vagrant默认值:SSH身份验证方法:私钥==>默认值:机器已启动并准备就绪!==>默认值:正在检查VM中的来宾添加...==>默认值:设置主机名...==>默认值:配置和启用网络接口...以下SSH命令以非零退出状态响应。Vagrant假定这意味着命令失败!/sbin/ifdown'eth1'||true/sbin/ipaddrflushdev'eth1'#从接口文件中删除任何先前的网络修改filed-e'/^#VAGRANT-BEGIN/,$d'/etc/network/interfaces>/tmp/vagrant-network-interfaces.presed-ne'/^#VAGRANT-END/,$p'/etc/network/interfaces|战术|sed-e'/^#VAGRANT-END/,$d'|tac>/tmp/vagrant-network-interfaces.postcat\/tmp/vagrant-network-interfaces.pre\/tmp/vagrant-network-entry\/tmp/vagrant-network-interfaces.post\>/etc/network/interfacesrm-f/tmp/流浪网络接口s.prerm-f/tmp/vagrant-network-entryrm-f/tmp/vagrant-network-interfaces.post/sbin/ifup'eth1'来自命令的Stdout:来自命令的Stderr:bash:第4行:/sbin/ifdown:Nosuchfileordirectorybash:line20:/sbin/ifup:Nosuchfileordirectory#这个提示是错误的,应该是官方打包没有安装时的问题解决错误ifupdown#这里的ip设置为192.168以上.10.10ssh-p2222vagrant@ipor直接打开virtualbox的虚拟机进入#输入密码sudoapt-getinstall-yifupdown#重启vagrantreload#输出初始化工作#重置/设置root密码supasswdroot#EnternewpasswordHereIamVagrant123#解决homestead6.1.0没有phpize的问题安装过程会提示运行,默认选择sudoapt-getinstall-yphp7.2-devsudoapt-getinstall-yphp7.1-devsudoapt-getinstall-yphp7.0-devsudoapt-getinstall-yphp5.6-dev#如果需要更改默认版本linux下#ubunutupdate-alternavtives--configphp#选择你需要的版本之前的顺序即可#nginx配置直接指定版本即可,查看共享的nginx配置即可安装扩展#我就不演示了安装它,基本上是phpize->配置->make&&makeinstallredismongoddbrdkafka(安装librdkafka-https://github.com/edenhill/librdkafka)zookeeper(安装前线zookeeper的C库支持)建议后继续安装扩展swoole#https://wiki.swoole.com/wiki/index/prid-1查看常用服务打包vagrantboxvagrantpackage--outputsxx_v1#outputproject下生成outputsxx_v1分享使用1.安装vagrant2。安装虚拟机3。复制共享框4。添加框:vagrantaddboxqklin/sxx_v1box_file-box-version=6.1.0或者在上面的metadata.json中添加5.设置复制一个Vagrantfile,调整到你想要的共享目录6。添加nginx7.vagrantup8的虚拟主机配置。如果nginx有问题,可以ssh到虚拟机,然后重启nginx,因为共享目录可能晚于nginx,所以nginx启动解决问题,重启nginx即可(/usr/sbin/nginx-sreload)分享本教程的vagrantbox和部分配置#sxx_v1盒子链接:https://pan.baidu.com/s/1vkU5PTt856Ru7eCiqU3KpQ密码:6666#sxx_v1配置(nginx、vagrantfile等)链接:https:///pan.baidu.com/s/1z7MfT2pIYMGqq_tBwmfDNA密码:8888#Homestead官方7.14.2配置(仅供参考,可以快速添加其他服务,参考脚本中的脚本)链接:https://pan.baidu.com/s/1qZ29r3w41PZ2tLDguzULAw密码:9999总结Vagrant本质上是一个虚拟机,只是用来通过vagrant快速部署和管理虚拟机。本教程仅演示配置虚拟机的配置。Vagrant通过vagrantfile快速部署分布式虚拟机。这不是本教程的主题。目的,更多细节可以看官方或百度搜索相关教程自行学习