• virtualbox设置共享文件夹代替sftp同步代码


    通常的开发场景:

    代码放在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

     

  • 相关阅读:
    匈牙利算法——S.B.S.
    洛谷P1328 生活大爆炸版石头剪刀布——S.B.S.
    洛谷P1101 单词方阵——S.B.S.
    noip2010提高组3题题解 by rLq
    洛谷P1605 迷宫——S.B.S.
    yii2.0 curd操作
    我常用的linux命令
    常用css
    ln 软链
    crontab下git命令无效
  • 原文地址:https://www.cnblogs.com/leezhxing/p/5678071.html
Copyright © 2020-2023  润新知