首页 > 技术文章 > WSL跑linux服务程序

rangeon 2018-03-20 00:25 原文

前段时间折腾了一次WSL下的Apache,无奈遇到各种奇葩问题,总是解决不了,最终放弃,甚至得出了一个现在看来比较可笑的结论:WSL是不可能跑Linux服务程序的!

当时的思路想歪了,由于Apache启动时报的一个错误“IN6_IS_ADDR_V4MAPPED”,就一直往IPV6的方向折腾,觉得WSL是不支持IPV6的,所以最终没搞定!不过当时按照网上的说法,禁用了Win10的IPV6之后,重启系统确实Apache服务可以正常启动了,但启动之后貌似正常监听了80端口,但页面依然不能访问!至此我就判定了WSL是个废柴!不能跑Linux服务程序!

今天又一次机缘巧合,还是需要再折腾一下WSL下的Apache,这一次终于搞定了!!!

上午在查询资料的过程中,浏览到一些WSL方面的资料,顺便收藏了一下,打算晚上抽空再尝试一下,都是来自WSL官方github的几个资料:

趁晚饭之前有点空,就大概看了一下,发现很多人都是由于TencentTGP或者一些VPN软件导致的,所以决定这次折腾的方向是网络驱动,按照指示下载了一个DriverView,查看了一下,果然有个VPN的驱动在系统里!之前由于工作需要,安装了Sangfor的VPN客户端,后来记得把能卸载的都卸载了,但还遗留了这个祸害!(system32/drivers中,SangforVnic.sys和vpntdi64.sys)尝试删除,还删除不了,但发现可以改名,于是改名、重启系统,果然Apache可以正常启动了,而且页面也可以访问了!!!激动啊!!!

匆匆吃完晚饭,回来接着折腾,仔细检查了一下系统,发现Sangfor的残留还不少!而且很顽固!感觉Sangfor有点流氓软件的性质,安装很方便、很自动,卸载却各种万难!甚至在Win10系统中根本无法卸载,一点卸载程序就报错!强行删除安装目录又会导致整个电脑的网络瘫痪,真是太让人恶心了!参考网友的解决方案,总算是把Sangfor清理干净了!我的系统好像和作者的情况不太一样,不需要进安全模式,直接到注册表里删除winsock和winsock2,然后导入两个reg文件(点击下载,来自网友提供的Win10家庭版,我的专业版目前正常,不保证所有系统都正常),重启就可以了。

最后强烈大家谨慎使用Sangfor的产品!如果实在迫不得已,建议在虚拟机里使用,使用后可以还原虚拟机,不留后患!


PS. 更改默认用户已经不再是使用“lxrun /setdefaultuser”命令了,而是使用各发行版自己的命令代替了,比如ubuntu.exe或debian.exe config --default-user root,这样就设置默认用户为root了。管理各个发行版也使用wslconfig命令了,可以使用wslconfig /setdefault debian 设置debian为默认发行版(执行bash或wsl命令自动进入的发行版),非默认发行版也可以执行各自的命令进入,比如ubuntu.exe可以进入Ubuntu,可以参考MS官方的两个链接:
账号管理:https://docs.microsoft.com/en-us/windows/wsl/user-support
发行版管理:https://docs.microsoft.com/en-us/windows/wsl/wsl-config

 

PS. 注意:虽然Windows本身也支持文件名的大小写,但文件系统中记录的应该是同一个文件,但WSL却不同,它创建的指定格式大小写的文件名与Windows的模式不同,我在WSL中通过git clone命令创建的项目目录,在VS中打开时(解决方案中的文件名大小写与实际文件名的大小写不一致)总是提示找不到文件(而且在IIS中运行的时候总是报404错误【MVC项目】,折腾了好久,以为是IIS站点MVC配置问题,最后才发现是这个原因),在Windows命令行中git clone的项目就没有任何问题(在IIS直接跑也没有问题)。

 

推荐阅读