通常的开发场景:

代码放在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. SSH面试题(struts2+Spring+hibernate)

    struts2 + Spring +hibernate Hibernate工作原理及为什么要用?   原理:   1.读取并解析配置文件   2.读取并解析映射信息,创建SessionFactory ...

  2. 尝试解析js面试题(一)【转发】

    解析: 1.Foo.getName(); //2 1)结果执行的是Foo对象的一个叫做getName()的属性,而1.4.5中的getName都是作为函数存在,所以可以排除1.4.5 2)剩下两个中, ...

  3. nginx 网站搭建

    nginx目录详解 默认nginx做了nginx配置文件的备份 #查看nginx配置文件去掉#号的内容,并且追加到nginx.conf.tmp egrep -v "#|^$" ng ...

  4. Windows 10不能拨L2TP协议的VPN

    之前是Windows 10版本1607版本14393.102升级14393.187过后,突然出现不能拨公司防火墙的L2TPVPN了. 网上众说纷纭,原来遇到这个问题的人真不少,不过我是第一次遇到.结合 ...

  5. WPF 自定义DateControl DateTime控件

    自定义日期控件,月份选择.如下是日期的一些效果图. 具体的样式.颜色可以根据下面的代码,自己调节即可    1.日期控件的界面 <UserControl x:Class="WpfApp ...

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

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

  7. windows10的第一天使用总结

    一.快速开机设置 我的电脑配置如图,装有VS2015 2010 OFFICE等常用开发工具,在线升级后开机速度并没有明显提升. 1.保证windows font cache service服务启动,3 ...

  8. Practical oral English

    1.如果你继续发烧,我就去请医生过来If your fever continues, I'll send for the doctor.2.在这么大的停车场里,我是永远都找不到我的车的I'll nev ...

  9. JSON学习笔记一 —— 一些与移动端交互产生JSON数据的方法

    /**     * 测试的返回JSon方法,正式的不会用     * @author MrHandler     * @param reqCode     * @param joinStr     * ...

  10. python_接口开发

    一.GET和POST请求from flask import Flask,jsonifydata = { 'name':'Jerry', 'sex':'男', 'age':'18'}app = Flas ...