使用vagrant搭载lamp环境遇到的一系列问题
前些天终于狠心入手了一台mba,虽然是最低配置,但还是很贵的呀!出于开发需要(我用来搭建lamp),而且我又有点系统洁癖,决定搭载vagrant来玩玩。
如何搭载在网上一搜一大把,我就不重复了,我的是 vagrant 2 + ubuntu/trusty64 + virtualbox 有需要的同学戳下:
https://segmentfault.com/a/1190000000264347
下面我就说说从搭载到使用遇到的一些坑:
首先关于vagrantfile这个文件,我刚开始修改这个文件执行都没问题,直到有一次修改了一点点之后vagrant reload一直报错,报错的大概内容是我所修改的那行代码没有结束标
志,由于这个文件是ruby的,我也没学过ruby,我还以为跟python有一些比较严格的要求,然后就bing去了,最后发现其实跟我修改一点卵关系都没有,然后....我就很纠结了,不是变成语法问
题,执行又报错,这把宝宝苦的呀!直到网上搜了一大堆资料,有个人提到了在语法后面保存可能会默认存在\n之类的转义字符(我之前修改文件都是在vi下),然后我就用sublime打开,果然发现
格式下有问题,之后一些删除加保存就可以了。
总结:
修改vagrantfile文件最好在ide下,一些看不见的错误vi是不会显示出来的。
然后是第二个小坑,最近出于工作需要,下来个ecshop源码下来看看,安装过程比较顺利,ecshop本身的一些bug也能自行处理,直到遇到了一个问题:permission denied,其实
这不会是一个大问题,熟悉linux的人都知道出现权限问题就那么几个,要么是创建目录没给写权限,要么是项目拥有着与执行php脚本用户不一致导致的chmod无法执行(apache下修改user/
group)。我也是按照这个思路来,最后发现居然不行,包括直接vagrant ssh进虚拟机用超级用户去修改文件权限也以失败告终,然后发现一个问题,在vagrant(我的虚拟目录)下创建的文件夹
都是755且无法被修改,文件倒是可以修改权限,这把我整的不行。最后倒是想到了一个不是办法的办法,在我的宿主机下直接修改项目相关文件夹的权限(宿主机与虚拟机目录同步),但是这也有
一点小问题,这要是文件夹少还好,要是文件夹多那不是要一直sudo chmod 777 ... 最后还是找到网上一位网友的解决办法,在vagrantfile文件夹修改配置文件,具体是:
# config.vm.synced_folder '/Users/xxx/lamp','/vagrant', create:true, :mount_options=>['dmode=777','fmode=777']
先把注释给去掉,第一个'/Users/xxx/lamp'是你的宿主机根目录 ,第二个'/vagrant'是虚拟主机的根目录(如果不做修改,默认是这个),第三个不用说明了,第四个就是对于跟目
录下增加一些操作,dmode就是文件夹模式,修改这个就是修改文件夹的权限 ,fmode相对应的修改的是文件的权限,然后直接保存vagrant reload就行(ps:修改vagrantfile文件要reload才会
重新读取该文件的配置)。
总结:vagrant下的虚拟机与常规的虚拟机直接操作还是有一些细微的不同(除了同时操作多台虚拟机),vagrantfile这个文件里面就能找到答案。
-------------------------现在还在不断的使用当中,所以我会把遇到的问题继续更新^_^----------------------------------