通常的开发场景:

代码放在virtualbox上运行,本地的IDE通过sftp实现和虚拟机的代码同步。

有 一个不能避免的问题是,当使用git时,如果装在virtualbox端,那么每次virtualbox上更新代码后,都要记得在IDE上 download一下,忘记的话就可能IDE的代码覆盖了virtualbox上的代码。尤其是当virtualbox切换分支的时候,IDE经常忘记 download代码,悲剧就发生了。

为 了避免代码覆盖的问题,我选择把git装在IDE端,这样每次更新代码或者切换分支时IDE上的代码都会自动更新,避免了代码覆盖的问题。但有一个新问题 出现,由于IDE是保存后自动上传,当切换分支后没有保存动作的话代码不会上传,这个问题忽略的话会在调试时感觉莫名其妙,因为远端的代码和本地的代码并 不相同。

使用virtualbox的共享文件夹解决这个问题

一.安装virtualbox的“功能增强包”(共享文件夹需要安装这个包才能使用)

在一个打开的虚拟机窗口上,点击“设备”--“安装增强功能”

如果是图形界面的画会弹出一个对话框,按提示操作就行,这里说一下虚拟机是纯字符界面的安装,也要先点击“安装增强功能”,具体步骤:

1.加载VBoxGuestAdditons.iso镜像文件,直接通过Linux虚拟机窗口的菜单“设备”->“安装增强功能”来添加镜像文件,虚拟机会自动添加镜像到/dev/cdrom。

2.挂载VBoxGuestAddition.iso镜像文件,使用命令:

$sudo mount /dev/cdrom /mnt

此时会出现提示:mount: block device /dev/sr0 is write-protected, mounting read-only.此提示无需理会。

3.使用ls /mnt命令查看是否加载成功,加载成功,请进行下一步。

4.运行VBoxLinuxAdditions.run,使用命令:

$sudo /mnt/VBoxLinuxAdditions.run

如果出现类似于failed的字样,需要查找对应问题。

我安装中的一个错误解决:

在安装增强功能是出错:Building the main Guest Additions module [失败]

解决:

yum install kernel

yum install kernel-devel

需要重新启动虚拟机操作系统,从第一步开始重新操作。

二.共享文件夹的设置方法:

当虚拟机未运行时(注意需要时正常关闭,不能是快速休眠状态):在虚拟机上右键“设置”--“共享文件夹”。
如果虚拟机启动情况下,在启动的窗口上:

a. 通过菜单栏的“设备”=>“共享文件夹”选项

b. 在窗口的右下脚文件夹图标位置右键选择“共享文件夹”选项。

打开“共享文件夹”操作界面后,可以看到两种共享文件夹的方式:

a. 固定分配:通过固定分配的共享文件夹讲永远存在,避免下次再操作。

b. 临时分配:也就是临时性的,虚拟机一关闭,下次启动后共享的文件夹也就不存在了。

点击图中的“文件添加”按钮,打开编辑界面。选择要共享的文件夹,选中“自动挂载”和“固定分配”选项。然后点击“确定”按钮。

三. 在virtualbox上使用共享文件夹

在“增强功能”和共享文件夹都设置好了之后,就可以在virtualbox上操作共享文件夹了

1.自动挂载:

如果选择了自动挂载,自动挂载的目录在/media/sf_dirName下边(dirName是设置共享文件夹时指定的文件夹名称)。例如此处,共享文件夹的名称是develop,自动挂载到虚拟机以后的路径就是/media/sf_develop,目录权限是770。

2.手动挂载:

$sudo mount -t vboxsf dirName /mnt

通过命令 ls /mnt 查看是否挂载成功

如果出现了:./sbin/mount.vboxsf:mounting failed with the error:No such device这样的错误提示,请检查VirtualBox增强功能是否编译安装成功。

因为共享文件夹是web的代码目录,所以还是使用自动挂载比较好。

四. 设置共享文件夹为webServer的代码目录

由于开发习惯,我的代码目录都在devspace下,而自动挂载的目录在/media下,首先我要建立一个软链

sudo ln -s  /media/sf_develop/ /var/www/devspace/pro1

然后配置好虚拟主机,访问,出问题了,file not found.

查看nginx日志,stat() "/var/www/devspace/xxx" failed (13: Permission denied)

从上边可以看出,我们的挂载目录的权限是770,并且属组是vboxsf,需要将nginx的用户添加到vboxsf组下:

usermod -a -G vboxsf www  #www是nginx工作进程的用户,php的也是同样的添加方法,注意使用sudo adduser www vboxsf并没有成功

此时再次访问就OK了。

注意:需要把IDE的自动上传功能去掉,因为这个目录现在是共享文件夹了,不去掉的话会出现诡异的现象。

 
参考:
把共享目录配置成webserver目录:http://luokr.com/p/13

virtualbox设置共享文件夹代替sftp同步代码的更多相关文章

  1. VirtualBox设置共享文件夹和镜像访问的方法

    VirtualBox设置共享文件夹和镜像访问的方法 virtualBox是一款虚拟机软件,可以在该软件上安装各类的操作系统,至于如何安装请参见另外一篇经验<如何使用VirtualBox安装win ...

  2. VirtualBox 设置共享文件夹自动挂载

    1.在VirtualBox中设置文件夹位置和名称,这里使用的名称是share 1.在ubuntu12.04的/etc/rc.local中加入自动挂载命令 sudo mount -t vboxsf sh ...

  3. VirtualBox设置共享文件夹

    前提是已经正确安装增强工具,在安装增强工具时,没有faile的,全部done 1.添加共享文件夹(已经在lmg下创建过目录 /mnt/bdshare ) sudo mount -t vboxsf Ba ...

  4. 虚拟机virtualBox设置共享文件后,linux配置

    1.在/mnt下创建共享目录 mkdir /mnt/share 2.关联外部目录 mount -t vboxsf 共享文件夹名 /mnt/share/ 如:mount -t vboxsf BaiduS ...

  5. VirtualBox CentOS安装增强功能与设置共享文件夹

    如果安装的是CentOS minimal版无网络的可以看这篇文章. 一.安装依赖环境 依次执行如下命令 yum install update yum install kernel-headers yu ...

  6. win7/8下VirtualBox虚拟共享文件夹设置

    1. 安装增强功能包(VBoxGuestAdditions)   打开虚拟机,运行ubuntu,在菜单栏选择"设备->安装增强功能",根据提示即可安装成功(成功后也可 以实现 ...

  7. virtualbox安装增强功能并设置共享文件夹

    virtualbox安装增强功能并设置共享文件夹 我们在安装之前,必须得先安装好它所需要的依赖包,不然安装过程必定会出现错误! 一.安装依赖包 #yum install kernel-headers# ...

  8. VirtualBox内刚刚安装完Debian9系统,也无法设置共享文件夹。解决的方法就是安装VirtualBox客户端增强包。

    VirtualBox内刚刚安装完Debian9系统,也无法设置共享文件夹.解决的方法就是安装VirtualBox客户端增强包. 1.若直接安装客户端增强包会得到如下提示:root@debian:/op ...

  9. VirtualBox内刚刚安装完CentOS6.9和7系统,无法调整屏幕的分辨率,也无法设置共享文件夹。解决的方法就是安装VirtualBox客户端增强包。

    VirtualBox内刚刚安装完CentOS6.9和7系统,无法调整屏幕的分辨率,也无法设置共享文件夹.解决的方法就是安装VirtualBox客户端增强包. 1.若直接安装客户端增强包会得到如下提示: ...

随机推荐

  1. MySQL 博客文章目录(2016-08-20更新)

    1 MySQL安装配置 Linux MySQL源码安装缺少ncurses-devel包 Linux平台卸载MySQL总结 Linux 卸载mysql-libs包出现错误 2  MySQL管理配置 My ...

  2. Oracle使用java source调用外部程序

    需求 Oracle调用第三方外部程序.Oracle使用sqluldr2快速导出大批量数据,然后用winrar压缩后发送邮件. 本文档主要实现前两步需求,发送邮件程序这里不再说明. 原码 授权 begi ...

  3. 理解OVER子句

    简介 Over子句在SQLServer 2005中回归,并且在2012中得到了扩展.这个功能主要结合窗口函数来使用:也可以在序列函数"NEXT VALUE FOR"使用.OVER子 ...

  4. 记录 git 常用的操作命令总结

    记录 git 常用的操作命令总结 2016-12-15 16:44:04 作为一名开发者,熟悉使用 git 代码管理工具是一项必备的基本技能.git 相较 SVN 而言,其优点不言而喻.git 的功能 ...

  5. WPF 自定义标题栏 自定义菜单栏

    自定义标题栏 自定义列表,可以直接修改WPF中的ListBox模板,也用这样类似的效果.但是ListBox是不能设置默认选中状态的. 而我们需要一些复杂的UI效果,还是直接自定义控件来的快 GitHu ...

  6. ubuntu kylin 14.04安装配置MongoDB v2.6.1(转)

    1.获取最新版本 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.1.tgz 2.解压并进入bin目录 tar zxvf mongo ...

  7. python教程与资料

    网上有个人写的python快速教程,非常好.比看书好多了.猛击下面的链接地址 http://www.douban.com/group/topic/30008503/ python文档资料收集 pyth ...

  8. 图像抠图算法学习 - Shared Sampling for Real-Time Alpha Matting

    一.序言   陆陆续续的如果累计起来,我估计至少有二十来位左右的朋友加我QQ,向我咨询有关抠图方面的算法,可惜的是,我对这方面之前一直是没有研究过的.除了利用和Photoshop中的魔棒一样的技术或者 ...

  9. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  10. EXCEL中对1个单元格中多个数字求和

    如A1=3779.3759.3769.3781.3750,A2对A1中4个数字求和怎么求!请高手赐教! 方法一:在B1中输入公式=SUM(MID(A1,{1,6,11,16,21},4)*1) 方法二 ...