vagrant踩坑实录

在开始之前,先简单介绍一下背景。本屌是一位PHP程序猿。新入职的公司,之前系统是第三方提供的,由于经营不善,第三方公司倒闭了。所以公司被迫自己组建团队来维护之前的系统,并在上面增加新功能来满足市场需求。

所以我肯定要先搭建本地的开发环境啊,线上环境为Centos6.8+nginx1.10.2+php5.6.23+mysql5.6.24。本来想着用wampserver简单搭建一下能把程序跑起来就行了,像PHP和MYSQL只要大版本都是5.6就行了,一般不会因为小版本不同导致代码无法运行。然后搭建完成跑的时候发现用到了memcache,所以我就安装了memcache和php-memcache的扩展,安装的扩展的过程中也有踩坑,就不细讲了,主要问题就是扩展文件一定要分清楚是64位和32位,安装对应wampserver版本的文件,这里的指的是wampserver版本而不是你win7的版本,有可能你win7是64位但是wampserver是32位。

安装了以后运行过程中出现问题,我发现程序用的memcached而不是memcache,一开始还不太清楚它们的关系,后来才知道memcache和memcached不是一个东西,安装的memcache就要装memcache扩展,而安装的memcached扩展则要用memcached扩展,坑爹的是windows不支持memcached扩展只能在linux上跑。这里补充一点memcached其实是memcache的升级版。想详细了解它们的区别的可以查看这篇文章https://blog.csdn.net/baidu_30000217/article/details/53586536

被迫无奈只能继续搭建linux上的开发环境,于是乎我就想到学习laravel的时候用到的开发环境homestead。具体homestead怎么搭建参考这篇文档https://learnku.com/docs/laravel-development-environment/6.x
说到homestead,我就要说一下homestead、vagrant、virtualbox之间的关系了,有很多同学可能搞不清楚。简单来说最终我们要的是一个可移植的linux虚拟机,里面部署好了一切,我们可以快速拷贝这个环境给我们其他的开发小伙伴。而这个虚拟环境就运行在virtualbox里面,然后vagrant是把这个虚拟环境打包成一个box让它可以拷贝给别人使用,而homestead则是进一步管理vagrant,你可以不用homestead只用vagrant和virtualbox的组合也是可以的。
我win7安装这一套环境的时候主要遇到如下几个问题
1.powershell版本过低可以参考这篇文章https://blog.csdn.net/yufumatou/article/details/92766350
2.vagrant up的时候卡在这一步SSH auth method: private key。我的问题是BIOS未开启虚拟化支持virtualbox工作 ,参考这篇文章https://iknow.lenovo.com.cn/detail/dc_125894.html
3.卡在这一步SSH auth method: private key还有原因是公钥私钥的问题,尽量不要拷贝别人vagrantfile来运行,运行之前重新生成新的公钥和私钥

安装好了homestead,然后就继续来运行代码吧!导入mysql时候就出现问题了,这个教程里面的mysql是5.7的,我们线上mysql是5.6导出的sql文件导入mysql5.7出错,有的人说你可以手动改不同的地方导入啊,但是我们线上的数据都是几万几十万的,手动改现实吗?到时候如何同步本地和线上的数据结构~~~

没办法继续肝,我想把这个虚拟机里面的mysql5.7卸载换成5.6的。网上查了好多方案,本猿不是资深运维只会简单的敲命令安装遇到问题就搞不定了。无奈找外援,我让我的运维朋友远程控制帮我安装,但是很不幸的是他也没搞定,最后给我一句Ubuntu18好像不支持mysql5.6。我TM心态崩了呀!!!

没办法换条路走,想了下直接在virtualbox上安装centos6.8虚拟机,下了半天终于下了一个centos.iso文件,一系列导入操作后,虚拟机搞好了,然后我想着虚拟机搞好了能打包成box拷贝给同事啊,然后我用vagrant打包,一开始不知道vagrant怎么打包,后来才知道其实炒鸡简单,用vagrant package就可以了。不会打包的同学参考这篇文章https://blog.csdn.net/rootzcl/article/details/83505056
打包是打包好了,但是我自己vagrant up的时候我发现又是卡在SSH auth method: private key过不去了,试了很多方法都调不起来。到这里我心态真的炸裂了…
我之所以采用这种方式完全是vagrant网站上的box下载不下来,但是我又一位牛逼的同事却分分钟给我在vagrant上面下了一个box,当时我不可思议啊…原来他用的是dukou,要用小伙伴点开这个链接https://dashboard.dukoucloud.club/user/register?code=jSJm简单来说类似vpn。要用的时候再注册因为它送的流量只有在两个小时以内有效,麻蛋我不知道啊,最后过期了只能花钱买了会员才下载成功的。
之后的工作就顺利了,我在线上下了一个centos6.8的box,vagrant up起来以后我在虚拟机上安装了宝塔,讲真的安装linux这些服务,对linux不是非常熟悉的小伙伴还是用宝塔吧,自己安装有时候真的会崩溃,依赖太复杂。附上linux安装宝塔教程https://www.cnblogs.com/wentutu/p/8549050.html
安装完成后那个登录IP换成虚拟机的IP即可。
补充几点,宝塔建网站的时候网站目录放在vagrantfile同一个文件夹下,这样的话相当于win7和虚拟机共享文件夹,开发的时候更方便直接用phpstorm打开PHP文件,git操作起来也更直观。
具体vagrant操作查看这篇文章https://jingyan.baidu.com/article/642c9d34e15cdd644b46f74b.html

vagrantfile文件我改了这几个地方

config.vm.box = "centos6.8-mini"
config.vm.provider "virtualbox" do |vb|
      vb.memory = "4096"
      vb.name= "develop-lnmp-centos6.8"
      vb.cpus= 2
    end
config.vm.network :private_network, ip: "192.168.22.10"

最后改下win7上的hosts文件让域名指向我这台192.168.22.10虚拟机,终于代码运行起来了。
最后vagrant package 打包后给同事后,正常启动起来了。

最后我三下五除二的就把同事的本地环境搞好了,而且是跟我一模一样的,我那个心情舒畅啊。。。。
我感觉同事会有错觉,就这你搞了好几天,唉。。。我只能说会者不难难者不会嘛~~~

这一路走来差点崩溃了,只能说之后入职的小伙伴省事了,vagrant真的很好用它不仅能打包环境连mysql和代码都一并打包了,妈妈再也不用担心我的开发环境了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值