咱們的最終目的,是爲了在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