咱们的最终目的,是为了在Windows上搭建一个十分接近Linux体验的开发环境。让IDE直接运行在Windows系统中,把全部的服务部署在WSL上。这样在配置环境和编译的过程当中,使用的都是真正的Linux,全部的命令行都使用Shell,vim、git等功能更是开箱即用,没必要再用Dos命令了。并且Windows强大的生态,解除了Linux的后顾之忧。html
在SpringBoot与Angular的学习过程当中,Linux具备很大的优点。
可Linux的致命伤就是软件生态:QQ和Tim须要用Wine来实现,Office须要寻找替代品,而像钉钉和OneNote这类软件就直接无解了...而且,直接使用Windows系统配置环境,就比较麻烦,既要配置复杂的环境变量,又要忍受不熟悉的dos命令(鄙人只熟悉Shell)。java
而咱们今天要讨论的就是基于Windows10的Linux子系统(WSL)。node
子系统是Windows10新出的的功能,它不是虚拟机,而是直接把Linux内核运行在Windows中,磁盘共享,端口共享,能够直接用Shell操做Windows文件,也能够直接访问子系统中的端口。
经过WSL能够实现大部分Linux系统的功能,而性能几乎没有损失。
(注:WSL目前对Docker的支持不完整)python
咱们要作的,其实就是借鉴先后端分离的思想,把Windows做为Linux的UI,Windows只充当编辑器的角色。
因此才有一种戏称:Windows是最好用的Linux发行版。mysql
控制面板中启用Linux子系统:linux
开发者选项中启用开发模式:git
在微软商店中安装Linux发行版:spring
安装完成后在CMD中依次输入:sql
//完成子系统的安装 ubuntu //用户名(自行替换) user //密码(自行替换) 123456
而后出现了久违的Unix提示符,WSL安装完成:数据库
有了Linux子系统以后,咱们的各类环境配置均可以用Linux的方法——也就是Shell,一键完成,不再用点来点去了!
接下来以《Spring + Angular 入门实例教程》为例,目标配置环境。
WSL中须要安装:
Windows中须要安装:
(Linux用户基本操做,换阿里源或清华源皆可)
换源以后,如下操做在子系统的终端中进行。
//下载安装程序 curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - //执行安装程序 sudo apt-get install -y nodejs
而后出现了如下状况:
这说明:WSL体积很小,许多标准Ubuntu中的组件,在WSL并无安装。
//安装Python sudo apt-get install python-minimal //执行安装程序 sudo apt-get install -y nodejs //查看版本 node -v npm -v
//安装 npm install http-server -g --registry=https://registry.npm.taobao.org
顺便说一句,node启动的时候,弹出了以下画面:
WSL中的每一个进程,在Windows中都有对应进程,这说明了一个结论:WSL是运行在底层的,不是虚拟机。
最爽的步骤来了:一想起Windows中配置JDK就头疼,如今,一条命令搞定。
//安装JDK sudo apt install openjdk-8-jdk
//安装maven sudo apt-get install maven
//WSL中内置git git config --global user.name xxxxx git config --global user.email xxxxx@live.com git config --global credential.helper store
起初尝试在WSL上安装Dockers,而后不能启动,查阅以后发现WSL上面的Dockers不完整,因此放弃。
//安装 sudo apt install mysql-server-5.7 //启动 sudo service mysql start //登陆,密码为空 sudo mysql -uroot -p
在Windows中安装Navigate,能够直接链接:
在Windows中安装,很简单,不废话
因为文件是互通的,咱们尝试在WSL中直接往Windows文件夹中clone项目,克隆后直接在文件管理器中可见,IDE能够直接打开项目
在Shell path处填:
"cmd.exe" /k "wsl.exe"
成功显示终端:
File -> Settings -> Languages & Frameworks -> Node.js and NPM
ng serve运行成功:
因为端口共享,用Windows浏览器能够直接访问:
IDEA启动后端时,出现
mysql java.sql.SQLException: The server time zone value‘XXXXXX' is unrecognized or represents
这是因为数据库和系统时区差别所形成的,在JDBC的url上加入:
serverTimezone=GMT //或使用gmt+8时区 serverTimezone=GMT%2B8
后台启动成功:
此方案适用于熟悉Linux开发环境,但因为一些缘由(软件生态、电脑兼容性等等),又不得不在Windows上开发的用户。
这种方式能够在Windows环境下,使用原汁原味的Unix Shell来完成一切命令行操做,而且快速的配环境。
而且因为WSL直接运行在Windows中,几乎没有性能损耗,轻度负载时内存占用极低。
但因为当前WSL并不完善,许多复杂操做暂时是不能实现的,好比Dockers和涉及到底层的开发。
本文的目的是进行探索,若是发现此方案的不足之处或更好的方案欢迎补充。
(扩展延伸,比正文重要)
WSL Ubuntu 18.04 中安装 MySQL 5.7
IDEA-Webstorm使用WSL做为默认的Terminal并配置nodejs
解决mysql java.sql.SQLException: The server time zone value‘XXXXXX' is unrecognized or represents