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

先说结论

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

图片.png

一 需求分析

Linux与Windows之争:

在SpringBoot与Angular的学习过程当中,Linux具备很大的优点。
可Linux的致命伤就是软件生态:QQ和Tim须要用Wine来实现,Office须要寻找替代品,而像钉钉OneNote这类软件就直接无解了...而且,直接使用Windows系统配置环境,就比较麻烦,既要配置复杂的环境变量,又要忍受不熟悉的dos命令(鄙人只熟悉Shell)。java

目前已有的解决方案

  • 在Windows上搭建开发环境,但须要抛弃Unix Shell
  • Windows下安装Linux虚拟机
  • Linux下安装Windows虚拟机
  • 使用MacOS(推荐,既保留了Unix的特性,又解决了生态问题,惟一的问题就是烧钱

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

子系统是Windows10新出的的功能,它不是虚拟机,而是直接把Linux内核运行在Windows中,磁盘共享,端口共享,能够直接用Shell操做Windows文件,也能够直接访问子系统中的端口。
经过WSL能够实现大部分Linux系统的功能,而性能几乎没有损失
(注:WSL目前对Docker的支持不完整)python

咱们要作的,其实就是借鉴先后端分离的思想,把Windows做为Linux的UI,Windows只充当编辑器的角色。
因此才有一种戏称:Windows是最好用的Linux发行版mysql

二 安装WSL

控制面板中启用Linux子系统:
图片.pnglinux

开发者选项中启用开发模式:
图片.pnggit

在微软商店中安装Linux发行版:
图片.pngspring

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

//完成子系统的安装
ubuntu
//用户名(自行替换)
user
//密码(自行替换)
123456

而后出现了久违的Unix提示符,WSL安装完成:
图片.png数据库

三 WSL中配置环境

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

接下来以《Spring + Angular 入门实例教程》为例,目标配置环境。

WSL中须要安装:

  1. Node.JS
  2. Http-server
  3. JDK
  4. MAVEN
  5. Git
  6. Mysql

Windows中须要安装:

  1. WebStorm
  2. IDEA
  3. Navicat

第一步:换源

(Linux用户基本操做,换阿里源或清华源皆可)
换源以后,如下操做在子系统的终端中进行。

NodeJs

//下载安装程序
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

//执行安装程序
sudo apt-get install -y nodejs

而后出现了如下状况:
图片.png

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

//安装Python
sudo apt-get install python-minimal

//执行安装程序
sudo apt-get install -y nodejs

//查看版本
node -v
npm -v

图片.png

http-server

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

图片.png

顺便说一句,node启动的时候,弹出了以下画面:
图片.png
WSL中的每一个进程,在Windows中都有对应进程,这说明了一个结论:WSL是运行在底层的,不是虚拟机。

JDK

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

//安装JDK
sudo apt install openjdk-8-jdk

图片.png

MAVEN

//安装maven
sudo apt-get install maven

图片.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上面的Dockers不完整,因此放弃。
图片.png

//安装
sudo apt install mysql-server-5.7
//启动
sudo service mysql start
//登陆,密码为空
sudo mysql -uroot -p

图片.png

在Windows中安装Navigate,能够直接链接:
图片.png

WebStorm && IDEA && Navicat

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

四 先后台对接

磁盘共享

因为文件是互通的,咱们尝试在WSL中直接往Windows文件夹中clone项目,克隆后直接在文件管理器中可见,IDE能够直接打开项目
图片.png

图片.png

配置IDE,关联WSL的终端

在Shell path处填:

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

图片.png

成功显示终端:
图片.png

切换到WSL的Node

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

图片.png

尝试运行

ng serve运行成功:
图片.png
因为端口共享,用Windows浏览器能够直接访问:
图片.png

IDEA启动后端时,出现

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

这是因为数据库和系统时区差别所形成的,在JDBC的url上加入:

serverTimezone=GMT

//或使用gmt+8时区
serverTimezone=GMT%2B8

后台启动成功:
图片.png

总结

此方案适用于熟悉Linux开发环境,但因为一些缘由(软件生态、电脑兼容性等等),又不得不在Windows上开发的用户。
这种方式能够在Windows环境下,使用原汁原味的Unix Shell来完成一切命令行操做,而且快速的配环境。
而且因为WSL直接运行在Windows中,几乎没有性能损耗,轻度负载时内存占用极低。
但因为当前WSL并不完善,许多复杂操做暂时是不能实现的,好比Dockers和涉及到底层的开发。

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

参考资料

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

ubuntu16.04和18.04更换国内源

启用Windows10的Linux子系统并安装图形界面

WSL Ubuntu 18.04 中安装 MySQL 5.7

WSL搭建Java开发环境

WSL中安装Docker

IDEA-Webstorm使用WSL做为默认的Terminal并配置nodejs

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

相关文章
相关标签/搜索