引言
尽管Windows上有WSL,如 https://ibaiyang.github.io/blog/linux/2021/08/24/WSL-CentOS7.6搭建使用.html , 但对于运行于Linux环境上的项目,体验还是太差了,好多功能无法正常使用,被迫还是要在Linux环境下开发, 现在VirtualBox就派上用场了。
Linux环境搭建
VirtualBox 搭建Centos7.9:https://ibaiyang.github.io/blog/linux/2022/02/16/VirtualBox-搭建Centos7.9.html
Vagrant
Vagrant 是一个基于 Ruby 的工具,用于创建和部署虚拟化开发环境,基于VirtualBox。
这种环境搭建的方式有个问题,就是每次关机前都要先 vagrant halt
关闭服务,不然下次启动就会异常从而导致无法正常使用。
具体参考:
Windows 下PHP开发环境LNMP搭建流程:https://ibaiyang.github.io/blog/linux/2017/07/01/Windows-下PHP开发环境LNMP搭建流程.html
VirtualBox 搭建Centos7.8:https://ibaiyang.github.io/blog/linux/2022/02/15/VirtualBox-搭建Centos7.8.html
Vagrant 使用命令:https://ibaiyang.github.io/blog/linux/2021/08/21/Vagrant-使用.html
vagrant异常处理:https://ibaiyang.github.io/blog/linux/2017/12/28/vagrant异常处理.html
vagrant 运行速度越来越慢解决方法:https://ibaiyang.github.io/blog/linux/2018/06/06/vagrant-运行速度越来越慢解决方法.html
vagrant js/css文件缓存及乱码解决:https://ibaiyang.github.io/blog/linux/2018/01/30/vagrant-js,css文件缓存及乱码解决.html
两次安装失败的记录,也可以参考下:
https://ibaiyang.github.io/blog/linux/2021/08/22/Vagrant-Centos7.8搭建.html
https://ibaiyang.github.io/blog/linux/2021/08/22/Vagrant-Centos8.3搭建.html
ln无法创建软连接解决方案
有需求要用到 ln -sf 源地址 目标地址,但是尝试后总是报错,最后追溯的原因VirtualBox不支持,这里写一下解决方案。
自己电脑win10上为了装linux,装了VirtualBox,linux可以用了。
现在碰到一个业务场景需要用ln创建软连接,使用命令:
ln -sf 源地址 目标地址
然而却报错:
ln: creating symbolic link `/var/www/tmk/backend/config/main.php': Protocol error
ln语法没有问题,最后追溯发现是VirtualBox为了安全,不让用ln命令,怎么解决呢?
win10下命令行到VirtualBox安装目录下,查看有哪些虚拟机:
VBoxManage list vms
复制这句话:
VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1
把YOURVMNAME替换为你虚拟机的名字;YOURSHAREFOLDERNAME替换为共享文件夹的名字,不是地址。执行一下:
VBoxManage setextradata vagrant_default_1516794961060_79276 VBoxInternal2/SharedFoldersEnableSymlinksCreate/www 1
再次检验下:
VBoxManage getextradata vagrant_default_1516794961060_79276 enumerate
过程图:
然后 “以管理者身份运行” VirtualBox。
再去ln试一下:
VirtualBox内访问宿主机
开发中,碰到一个问题,在外部宿主机上安装了Redis,VirtualBox内部Linux上的项目需要访问宿主机的Redis获取数据,怎么连接呢? 连接的IP又是多少呢?
参阅下 https://zhuanlan.zhihu.com/p/554893004
默认宿主机的IP地址是 10.0.2.2 。
这里牵扯到多种网络连接方式:NAT、桥接(Bridged Adapter)、Internal、Host-Only Adapter。 具体可以参阅:
http://www.taodudu.cc/news/show-201620.html?action=onClick
https://blog.csdn.net/bifengmiaozhuan/article/details/79887692
http://www.taodudu.cc/news/show-293394.html?action=onClick
https://blog.csdn.net/qq_39889944/article/details/128635229
桥接 NAT host-only
虚拟机与宿主机 彼此互通,处于同一网段 虚拟机能访问宿主机;宿主机不能访问虚拟机 虚拟机不能访问宿主机;宿主机能访问虚拟机
虚拟机与虚拟机 彼此互通,处于同一网段 彼此不通 彼此互通,处于同一网段
虚拟机与其他主机 彼此互通,处于同一网段 虚拟机能访问其他主机;其他主机不能访问虚拟机 彼此不通;需要设置
虚拟机与互联网 虚拟机可以上网 虚拟机可以上网 彼此不通;需要设置
参考资料
https://www.jianshu.com/p/9ef5ef856d54
https://blog.csdn.net/ganshuyu/article/details/44565157
https://blog.csdn.net/qq_24898865/article/details/81096418
https://www.cnblogs.com/davenkin/p/vagrant-virtualbox.html
https://jingyan.baidu.com/article/e73e26c0f87c2424adb6a7f1.html