关于使⽤WSL2作为开发环境的测试及感受
前⾔
我是做PHP开发的, ⼀直以来使⽤的都是wamp这种环境来做开发, 后来⼀些经⼿的项⽬, 有些使⽤swoole的 , 不⽤linux真的是不⾏, 最初是直接在测试服务器上在线编辑调试, 但是这有多痛苦只有在线编辑过的⼈才能深有体会.
后来, 为了线下开发调试, 我使⽤了WSL, 安装使⽤都是很OK的, 既然linux有了, 那上个宝塔岂不是更⽅便? 所以我也直接把宝塔装在了wsl 上, ⼀切都没有什么异常, ⽽且可以直接选择win盘⾥的⽂件夹作为项⽬根⽬录,这些都正常, 但当我搭建完, 要开始访问的时候, 突然发现, 卡,巨卡, ⼗分卡!
这时候才了解到, wsl的IO是有问题的. 在其内部可能感受不到, 但在两系统 交互时, ⾮常的卡, 基本处于残废的状态 , 想作为开发环境⽇常使⽤根本不可能!
再之后, 我学习了docker, 安装上docker之后, 除了⽐较吃内存, 其实都挺好, 本⾝docker⾥也有开发者提供了打包好的baota镜像, 真的是开箱即⽤, 但是关于docker的⼀些基础命令和操作还是有必要学习⼀下的, 不然初上⼿⼤概率也会跟我⼀样,⼀脸懵
直到有⼀天 , 我发现我硬盘不是很充⾜了, 想到docker绑定的数据券, 之前在家⾥电脑上试过, 没启动⼀个
容器, 都会新⽣成⼀个数据卷, 这个数据卷, 很⼤, ⼏个G, 刚开始配置的时候⽼是失败, 所以来来回回多了好多⽆⽤的数据卷, 占⽤了极⼤空间, 当时就百度到如何删除这些⽆⽤卷, 也尝试了, 成功了.
然后, 我直接就在⼯作设备上执⾏了此操作, 悲剧 也在这⼀刻定格! . 我本地⼗⼏个项⽬.瞬间崩溃! ! ! , 赶紧⼀查询, 竟然删了我两个卷, 也就是说, ⼀个正在正常使⽤的卷也被删掉了 庆幸的是, 代码是在win本地的磁盘中, 丢的是数据库, ⼤部分还有些早期的数据库脚本备份, 但是这也⾜以耽误我⼀到两天的功夫了, 在此告知各位, 删数据卷之前多考虑, 多查证, 最后查清楚在⽤的卷是哪个, 然后再⼿动去删除
其实说了这么多, docker使⽤是⽅便, 但是不知道是不是在win下的原因, 经常会出现不能启动的问题, 这些问题也很难解决, 通常我只能重启电脑 , 最让⼈郁闷的就是, 重启它还就真的恢复正常了! 也不是不能⽤, 就是这种⾃⼰⽆法掌控的东西, 总给我⼀种不靠谱的感觉
正⽂
所以, win下的docker , 我⼤概率是要开始放弃了, 我开始寻求其它⽅式 , 这时候就发现了WSL2 , 没错, 现在加⼊win10预览通道, 升级完之后就可以安装WSL2了, 相⽐⼀代, 极⼤的提升了过去糟糕的IO性能, 亲⾃试了⼀下, 感知很明显, 就这样我激动的难以⾔表, 开发者的福⾳就要到了吗?
安装Ubuntu
安装这块没什么好说的, win10 商店可直接下载, ⼤家应该⽤的都是ubuntu1804 , 只不过装完之后启动默认还是wsl1 , wsl2的启动要求,需要开启hyper-v, 另外, 还需要敲些命令, 指定这个ubuntu以2的⽅式启动
如何搭建php开发环境安装BT
漫漫填坑路
1. WSL2 的IP 是动态分配的, 或者说, 每次启动,都会虚拟出⼀块⼉⽹卡, 所以, 想要固定IP ,难
2. 如上
3. 如上
总体来说优点是⼤于缺点的, ⽐如更⾼的IO性能, 另外有⼀点要说的是, 这次的WSL是类似于虚拟机⼀样的东西, 你可以理解为, 它的开启就是内⽹中多了⼀个你可以访问的linux服务器!
这个⽅式⽹上的评价褒贬不⼀, 但是我个⼈觉得是很好的 , 因为测试中发现, 端⼝是不会和你本机冲突的, 这样的好处⾃然就是可以把的win系统很好的隔绝开来, ⼀台机⼦当两台⽤, 如果, 如果微软把ip的问题解决了. 那我敢断⾔, 它wsl2 真的就是最好的Linux发⾏版 ,没有之⼀.
好了, ⼊正题, 别的⽑病没有, 就是IP这个怎么解决?
我win上的hosts⽂件 , 添加⼀个虚拟域名, 并指向了该WSL的IP , 但是每次重启后, IP都会变动, 我只能被动的每次开机⼿动调整为当前的IP , 很烦, 真的很烦,
后来在某篇⽂章中看到, 利⽤python脚本来实现⾃动更新hosts⽂件, 完全可⾏啊, 本来计划新建⼀个⽂本, ⽤来存储我的虚拟域名列表,然后py读取这个⽂本, 再动态写⼊hosts,但是奈何py没学过, 要改这个对我优点难度…(其实实现了,但不知道为啥, 它不稳定,就是删除之前的数据有时成功,有时失败,最后就会多出来很多之前的数据没有被清理掉)
最后, 还是使⽤了⽂章中的做法, 只更新指向WSL的就好了, 例如我这样配置:
172.25.11.11 ubuntu
那其它的虚拟域名直接指向ubuntu就可以:
ubuntu mytest
经测试完全可⾏
其实到这⾥已经可以使⽤了, 本地开发调试没问题
但是, 代码呢? 放在windows上再使⽤linux下的宝塔指向它, 效率很低. 解决办法就是在linux下新建,千古难题⼜来了, wsl万⼀崩了, 代码怎么办?
所以后来我想到了samba, 在win上映射linux的wwwroot⽬录, 实测可⾏, 访问速度也是可以的, ⽽且IDE也可以直接打开映射的⽬录进⾏编辑 , 本⾝WSL有⼀直微软内置的路径别名\\wsl$ 资源管理器中输⼊就可以直接打开linux的⽂件夹, 但是在做⽹络磁盘映射的时候, 试了很多次, 起初以为linux上的samba配置有问题 , 后来发现, 在配置磁盘映射的时候, 不能使⽤wsl$这个变量, 只能⽤实际IP , 否则⼀直连不上的.提⽰不到该服务器等等…
当然使⽤vscode的远程开发应该也是没有问题的. 但是代码放在这个虚拟机中, 总归是⼼⾥不安,
最后
还是⽼实使⽤wamp开发吧, 如果遇到必须使⽤linux的项⽬, 可以临时使⽤wsl2来解决⼀时之需, 想要长久使⽤wsl2作为开发环境, 还是需要等微软尽早解决这个问题了, 当然, 如果您有更好的解决⽅案, 也请不吝赐教!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。