java regux_Windows下搭建最接近Linux体验的开发环境——使用WSL(Linux子系统)

先说结论

我们的最终目的,是为了在Windows上搭建一个十分接近Linux体验的开发环境。让IDE直接运行在Windows系统中,把所有的服务部署在WSL上。这样在配置环境和编译的过程中,使用的都是真正的Linux,所有的命令行都使用Shell,vim、git等功能更是开箱即用,不必再用Dos命令了。而且Windows强大的生态,解除了Linux的后顾之忧。

0803caa0268c35ff3d49fa05ca39ce45.png

一 需求分析

Linux与Windows之争:

在SpringBoot与Angular的学习过程中,Linux具有很大的优势。

可Linux的致命伤就是软件生态:QQ和Tim需要用Wine来实现,Office需要寻找替代品,而像钉钉和OneNote这类软件就直接无解了...并且,直接使用Windows系统配置环境,就比较麻烦,既要配置复杂的环境变量,又要忍受不熟悉的dos命令(鄙人只熟悉Shell)。

目前已有的解决方案

在Windows上搭建开发环境,但需要抛弃Unix Shell

Windows下安装Linux虚拟机

Linux下安装Windows虚拟机

使用MacOS(推荐,既保留了Unix的特性,又解决了生态问题,唯一的问题就是烧钱)

而我们今天要讨论的就是基于Windows10的Linux子系统(WSL)。

子系统是Windows10新出的的功能,它不是虚拟机,而是直接把Linux内核运行在Windows中,磁盘共享,端口共享,可以直接用Shell操作Windows文件,也可以直接访问子系统中的端口。

通过WSL可以实现大部分Linux系统的功能,而性能几乎没有损失。

(注:WSL目前对Docker的支持不完整)

我们要做的,其实就是借鉴前后端分离的思想,把Windows作为Linux的UI,Windows只充当编辑器的角色。

所以才有一种戏称:Windows是最好用的Linux发行版。

二 安装WSL

控制面板中启用Linux子系统:

59ebe9d999c568dbff291299321e5e63.png

开发者选项中启用开发模式:

96260bcfe0f22e7b7223d46e5ecb7163.png

在微软商店中安装Linux发行版:

16d426b28bb20cfb30e432b354049b77.png

安装完成后在CMD中依次输入:

//完成子系统的安装

ubuntu

//用户名(自行替换)

user

//密码(自行替换)

123456

然后出现了久违的Unix提示符,WSL安装完成:

a4708ed5b04378344bc91026a0eac793.png

三 WSL中配置环境

有了Linux子系统之后,我们的各种环境配置都可以用Linux的方法——也就是Shell,一键完成,再也不用点来点去了!

WSL中需要安装:

Node.JS

Http-server

JDK

MAVEN

Git

Mysql

Windows中需要安装:

WebStorm

IDEA

Navicat

第一步:换源

(Linux用户基本操作,换阿里源或清华源皆可)

换源之后,以下操作在子系统的终端中进行。

NodeJs

//下载安装程序

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

//执行安装程序

sudo apt-get install -y nodejs

然后出现了以下情况:

48627b82954a058da6ac53536f46d846.png

这说明:WSL体积很小,许多标准Ubuntu中的组件,在WSL并没有安装。

//安装Python

sudo apt-get install python-minimal

//执行安装程序

sudo apt-get install -y nodejs

//查看版本

node -v

npm -v

d953e9fdc5fd5b4aab25d38120abf670.png

http-server

//安装

npm install http-server -g --registry=https://registry.npm.taobao.org

54efa533d5ff412382293f52c6774d90.png

顺便说一句,node启动的时候,弹出了如下画面:

ac193b0b9345f6e5f5796781e5b49c87.png

WSL中的每个进程,在Windows中都有对应进程,这说明了一个结论:WSL是运行在底层的,不是虚拟机。

JDK

最爽的步骤来了:一想起Windows中配置JDK就头疼,现在,一条命令搞定。

//安装JDK

sudo apt install openjdk-8-jdk

fe8bef5b7a9b1fee2f95c487fea0f78c.png

MAVEN

//安装maven

sudo apt-get install maven

46ad00e1f48d58cd3aedf8ffe1b722ba.png

Git初始化信息

//WSL中内置git

git config --global user.name xxxxx

git config --global user.email xxxxx@live.com

git config --global credential.helper store

Mysql

起初尝试在WSL上安装Dockers,然后不能启动,查阅之后发现WSL对Docker的支持不完整,所以放弃。

(有Docker需求的用户,只能考虑在Windows上安装了,但是Windows版本的docker需要虚拟化、需要开启HyperV,很麻烦...)

d295ac3448853f98b60c71831ee1c5b9.png

//安装

sudo apt install mysql-server-5.7

//启动

sudo service mysql start

//登录,密码为空

sudo mysql -uroot -p

1d5499022215eb9cb2218165d335622d.png

在Windows中安装Navicat,可以直接连接:

80a8ff36c90ac52f3dd5856645fbfa3a.png

WebStorm && IDEA && Navicat

在Windows中安装,很简单,不废话

四 前后台对接

磁盘共享

由于文件是互通的,我们尝试在WSL中直接往Windows文件夹中clone项目,克隆后直接在文件管理器中可见,IDE可以直接打开项目

7b6184692eacd7fe94524b1b07804fb1.png

0ce4a089de4034f090555b9f5d37002f.png

配置IDE,关联WSL的终端

在Shell path处填:

"cmd.exe" /k "wsl.exe"

729a43a8edecd5de3206a460a937af26.png

成功显示终端:

24bfcd5b20927496df50c9de606bafc8.png

切换到WSL的Node

File -> Settings -> Languages & Frameworks -> Node.js and NPM

9b8883cacb6bfe7a6f99391f49a934f7.png

f9309e051106b962f1a62dc265aa731e.png

尝试运行

ng serve运行成功:

53f76724de4b3e08ea110a52999681e1.png

由于端口共享,用Windows浏览器可以直接访问:

24c55f0cc2a926a48be0a071af04bd6c.png

IDEA启动后端时,出现

mysql java.sql.SQLException: The server time zone value‘XXXXXX' is unrecognized or represents

这是由于数据库和系统时区差异所造成的,

方法一:在JDBC配置文件的url上加入:

//使用GMT

serverTimezone=GMT

//或使用gmt+8时区

serverTimezone=GMT%2B8

方法二,可以避免改项目代码,让Windows使用UTC时间

在管理员模式的CMD中输入:

Reg add HKLM\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation /v RealTimeIsUniversal /t REG\_DWORD /d 1

后台启动成功:

42393110f67f3f299f41d0a8d56bd125.png

总结

此方案适用于熟悉Linux开发环境,但由于一些原因(软件生态、电脑兼容性等等),又不得不在Windows上开发的用户。

这种方式可以在Windows环境下,使用原汁原味的Unix Shell来完成一切命令行操作,并且快速的配环境。

并且由于WSL直接运行在Windows中,几乎没有性能损耗,轻度负载时内存占用极低。

但由于当前WSL并不完善,许多复杂操作暂时是不能实现的,比如Dockers和涉及到底层的开发。

本文的目的是进行探索,如果发现此方案的不足之处或更好的方案欢迎补充。

参考资料

(扩展延伸,比正文重要)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值