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

相關文章
相關標籤/搜索