最近一直都是在linux下开发,见识是长了,但是效率还是提不上来,于是想方设法结合windows与linux的优点。


 linux做服务器远比windows好,程序最终还是在linux下跑的,况且服务程序在linux与window下速度相差很大的,跑 apache+mysql+php 就可以看出明显的差距了,同一台机器上,我在windows下开个linux虚拟机跑apache+mysql+php都比直接在本机windows下跑apache+mysql+php快很多,但是如果写程序的话,还是windows比较快速。



 挂载在linux中非常常见,很自然就想到了在linux下挂载windows的共享目录实现windows与linux的有效结合。


 首先,在windows设置共享目录。假设共享目录访问路径为://192.168.10.1/project


 然后,配置虚拟机host-only上网模式后,安装smb。


 [root@centos ~] yum install smb


 安装完smb后,就可以挂载windows共享目录了


 [root@centos ~] mount //192.168.10.1/project /var/www/html/project -o username=admin,password=123456


 简单就挂载好了,把apache工程路径改成这里的/var/www/html/project,将项目移到//192.168.10.1/project,似乎是可以运行了,但是如果项目如果用到写权限的话,就抛出一大堆的permission deny了。。。


 


 经过一方折腾后,终于突然理解了Linux下的挂载命令 mount 是怎样赋予用户权限的了。



 [root@centos ~] mount //192.168.10.1/project /var/www/html/project -o rw,username=admin,password=123456


 加上rw这个参数,或fmask,dmask指定权限,dmask是目录的mask,fmask是文件的mask ,mask是权限掩码,由3个八进制的数字所组成, 当前访问权限去掉权限掩码所表示的权限之后, 即可产生建立文件时预设的权限。 第一位表示自己访问的权限,第二位表示同组访问的权限,第三位表示其他所有人访问的权限。


 但是这样仍然是不起作用的,若不指定apache用户,终归是无效的。


 [root@centos ~] id apache


 uid=48(apache) gid=48(apache) groups=48(apache)


 


 [root@centos ~] mount //192.168.10.1/project /var/www/html/project -o rw,uid=48,gid=48,username=admin,password=123456



 这样读写权限就没问题,试试哦。。。。


 


 其实这中间还是碰到一些 问题的,比如由于mount老是出现权限问题,需要umount那个目录,问题就出来了,老是出现device is busy


 想到可能是apache正在使用这个目录呢,


 [root@centos ~] service httpd stop


 [root@centos ~] fuser -v /var/www/html/project


  查看还有谁在用这个目录,如果只你一个人在用的话kill掉就好了,fuser 自带kill了


 [root@centos ~] fuser -k /var/www/html/project


 经此折腾,自觉又长见识了,