虚拟机搭建本地linux开发环境,实现代码在本地windows系统运行环境在linux系统

一些约定

  • 寄主机: 你的本地电脑。(windows或者macOS系统)
  • 虚拟机软件: virtualbox (跨平台,免费, 我这用的是5.2.22版本)
  • 虚拟机:用virtualbox创建出来的虚拟机(linux系统,我用的是centos7,其他应该也大同小异)

本文的目标是在寄主机搭建出来虚拟机,且实现以下几个功能:

  1. 虚拟机可以上公网
  2. 虚拟机和寄主机互通
  3. 虚拟机有自己的固定IP(静态IP)
  4. 虚拟机和寄主机之间有共享目录,实现在寄主机coding,运行环境在虚拟机中。

第一步:安装寄主机和虚拟机

安装virtualbox和用virtualbox安装虚拟机比较简单,这里不做过多赘述,不懂的朋友请自行百度~,在此只提及一些个人建议。

虚拟机内存适当大一些

它建议的1024MB,个人感觉有点小,我这里直接拉到了4G左右,大家是自己情况考虑选择。
虚拟机搭建本地linux开发环境,实现代码在本地windows系统运行环境在linux系统

创建硬盘时选“固定大小”,且适当分配大一些

如果选择“动态分配”,virtualbox会分配的很小,我的只有8G。后续不够用了需要自己再折腾分盘,挂载等等的事情,比较繁琐,索性用“固定大小”尽量一次性分配够。我是寄主机的硬盘是500G的,这里固定分配了50G给虚拟机,大家请根据自己情况选择。
虚拟机搭建本地linux开发环境,实现代码在本地windows系统运行环境在linux系统

第二步:网络配置

如果你图省事不想配置的繁琐的话可以考虑直接选择“桥接网卡”,这样虚拟机就直接有了自己的ip,且和公网和寄主机都是互通的。寄主机可以直接用此ip ssh到虚拟机进行操作。唯一的缺点是开关机后虚拟机的ip可能会变。因为是动态分配的。
虚拟机搭建本地linux开发环境,实现代码在本地windows系统运行环境在linux系统
如果你想让虚拟机有自己的静态IP请参考这篇文章:
VirtualBox双网卡实现虚拟机Linux CentOS 7上网以及主宿互访

第三步:共享目录

要用virtualbox的共享目录功能需要先在虚拟机中安装增强功能

自动安装:
1.	正常开启虚拟机
2.	虚拟机的菜单栏中选择 设备→安装增强功能
3.	完成安装

如果自动安装不成功(报错),可以尝试手动安装

手动安装:

VirtualBox 增强包安装篇

安装完成后,在虚拟机的设置中配置共享目录
虚拟机搭建本地linux开发环境,实现代码在本地windows系统运行环境在linux系统
上图“共享文件夹路径”是寄主机的共享目录路径
“共享文件夹名称”是虚拟机中的共享文件夹名称(不是路径)

完成后重启的你虚拟机,共享目录会自动挂载到 /media 目录下 (我这里是/media/sf_virtual_share)

权限问题

如果你不是用的root用户登录的虚拟机,你会发现你没有权限操作共享目录,根源在于这个自动mount的文件夹的所有者为root,所属的组是vboxsf,并且只有这两个用户有访问权限。
解决方法也很简单,只需要将当前登录用户加入到vboxsf组就行了。

sudo usermod -aG vboxsf $(whoami)

记得要重启一次才生效。

软链问题

virtrulbox不允许在共享目录中建立软链接,然后有时又不得不建立。例如用npm安装一些第三方包时就会自动创建软链接。

解决办法:
virtualbox允许在共享文件夹创建软连接

ok!至此你可以愉快的在寄主机的共享文件夹里coding,在虚拟机里运行程序了。


可能有人会问:你为什么不用vagrant。这里我说明下原因。 我从vagrant1.x版本开始使用,升级2.x版本后突然运行不了了,原因未知。然后我想反正vagrant是依赖于virtual等虚拟机的,干脆直接用virtualbox吧,少一层依赖。

结束, 感谢你的阅读~