李力(Ada Li)的博客Vagrant上的用户权限问题


用Vagrant配置了虚拟机,运行WeCenter时出现了莫名奇妙的问题,表现是发布问题时,总是出现提示框 “页面停留时间过长,或内容已提交,请刷新页面”。WeCenter官方论坛中给了几个解决方向:

1.  是一些目录下的js的旧版本文件引起,重新上传新版即可。- 试验无果

2.  和session的时间设置有关。- 虚拟机环境和其它运行环境一样,其它运行环境就没有出现这样的问题,所以不是session的问题

3.  可能由于虚拟机的压缩机制引起。- 查了下源代码,提示框出现是在一个判断函数valid_post_hash之后。而后查资料,确实有人说使用虚拟机的NAT网络配置,会发生hash值错误,改为桥接方式即可。貌似这是个解决问题的方向。

问题出现转机,是创业技术合伙人纠正了我虚拟机安装过程中的一些失误,然后这个莫名奇妙的问题也就消失了,说到底,都是用户和用户组引起的。先看下这个图,就知道问题出在哪里了。

Vagrant上的用户权限问题_vagrant synced_folde

因为共享目录是用于web container的,所以设置就麻烦些了,需要三级联动: 1. host机上的vagrant设置; 2. guest机上的OS设置 ; 3. guest机上的web container设置。

具体将来就是要做这三步:

 

1. Host中Vagrantfile中共享目录设置:

    config.vm.synced_folder “xxx”, “/htdocs/xxx”, create: true, owner: “www”, group: “www”

2.  Guest OS里要有www用户和www用户组

groupadd www
useradd -g www www

3.  Guest中Apache里httpd.conf的设置:

User www
Group www