天天看點

WebRose平台搭建本地開發環境(一鍵綠色解壓版,零配置)

作者:老徐SH1205

https://gitee.com/shxch1205/webrose(開源位址)

www.webrose.net.cn(官網,有線上Demo與API文檔)

如果沒耐心看文字介紹,點選此連結看:視訊介紹,在工程目錄檔案/docs/1-開發環境搭建說明.docx也有更詳細介紹。

現在軟體開發需要的技術棧非常多,是以搭建本地開發環境能把系統跑起來已經成了一個比較複雜的事情,有時甚至成了推廣一個開源項目是否順利的第一道難關,即隻有搭建環境足夠簡單順利人們才有興趣繼續了解。

是以WebRose在這方面秉持“低代碼”極簡思想,做了許多創新,可以做到零配置,一鍵解壓綠色版,分分鐘就能搭建好跑起來,即想辦法把環境搭建做到簡單到不能再簡單。

具體主要創新點有以下幾點:

  1. 前端是标準原生Web技術部署開發(這也是為了實作PaaS線上編碼),不要安裝與使用NodeJs、npm、yarn、webpack這一大堆腳手架工具,隻要懂點基礎Web原理就可以,是以非常簡單。
  2. 直接把JDK、MySQL、Ant、TomCat等需要的第三方軟體完整上傳到Gitee庫中,下載下傳後一解壓就能跑,這就省去各種啟動指令中路徑變量配置工作,因為都預先配置比對好了。
  3. 開源項目本身就是一個Idea的标準Java工程,而不是Maven工程,把依賴的第三方ClassPath的Jar包都預先設定在工程目錄中,導入Idea後直接編譯就能跑,而且編譯速度快得多。
  4. 前後端工程合在一個Gitee庫中,開發時隻要一個開發工具,每個人可同時編寫前後端代碼,運作與釋出時是前後端分離部署。
  5. 直接編寫Ant腳本編譯打包SpringBoo服務Jar包,不用Maven或其他複雜打包工具,既簡潔透明,又靈活自由。

如果簡單幾句話概括環境搭建就是:第一步解壓Rar環境工具、第二步啟動MySQL、第三步啟動Web伺服器、第四步在Idea中編譯并啟動SpringBoot服務類。

然後就全部OK了,中間每一步都不要做任何配置。

下面具體一一詳細說明(因為内容講解了設計初衷,是以有的文字多了一點)。

Gitee克隆下載下傳環境

https://gitee.com/shxch1205/webrose.git

在Idea中直接導入上述位址,或從Gitee網站下載下傳Zip檔案解壓後導入Idea,兩種方式均可,這裡不詳細說明。

建立本地目錄

這是關鍵第一步,如果建立名為D:\ABCWorkSpace\webrose這樣一個兩層目錄(注意大小寫),然後把工程就導入到這個目錄下,則就可以不要修改後面任何配置(即零配置)一鍵解壓可運作,原因就是後面的一些指令中的路徑變量預設的就是這個路徑名。

是以剛開始為了更順利跑通,建議先在這個預設目錄下搭建,等熟悉後再修改配置使用其他任意目錄肯定也是沒問題的。

一鍵解壓MySQL/JDK/Ant/TomCat等運作環境工具

Gitee下載下傳後整個工程目錄結構如下圖:

WebRose平台搭建本地開發環境(一鍵綠色解壓版,零配置)

工程目錄說明

其中RunTimeEnv目錄下有幾個Rar檔案,就是運作環境工具,理論上直接解壓後就可以。

但如果直接解壓在目前Idea工程檔案夾下,會造成Idea建索引檔案,因為檔案數量太多非常耗時,而且這些檔案其實是外部環境工具軟體,不屬于工程開發用檔案,沒必要建索引,是以最好的辦法就是複制到工程外某個目錄進行解壓。是以在目錄下還特意寫了個CopyFile.cmd,把檔案複制到D:\ABCWorkSpace\webroseEnvTemp目錄,輕按兩下此指令即可,指令内容如下:

md D:\ABCWorkSpace\webroseEnvTemp
copy .\*.rar D:\ABCWorkSpace\webroseEnvTemp           

如果手工建立這個臨時目錄,然後手工複制,當然也是可以的。

之是以必須叫這個目錄名,也是因為後面一些指令參數中的路徑也是預設為這個名字的,這樣就可以零配置。

拷貝到臨時目錄後,手工直接解壓各個Rar檔案至目前檔案夾就可以了,不要做任何其他配置,截圖如下:

WebRose平台搭建本地開發環境(一鍵綠色解壓版,零配置)

外部環境工具臨時目錄

啟動MySQL資料庫

上一步解壓各個Rar後,啟動MySQL非常簡單,因為這個MySQL已做成綠色解壓版,隻要直接進入目MySQL5_1_57錄輕按兩下其中執行指令【★★MyStart-MySQL★★.cmd】即可,啟動後界面如下:

WebRose平台搭建本地開發環境(一鍵綠色解壓版,零配置)

MySQL成功啟動界面

MySQL監聽端口是5306,使用者名是root,密碼是111111,并自帶了兩個Demo示範庫webrose_crm,webrose_ehr,不要再安裝庫。

之是以把整個MySQL做成綠色解壓版全部上傳Gitee庫,而不像有的架構是提供一個.sql檔案,然後執行SQL安裝到自己的MySQL資料庫中,就是為了簡化資料庫環境這一步,因為根據經驗,每個人電腦上的MySQL版本各不一樣(字元集也可能不同),使用者名密碼肯定也不一樣,然後肯定要配置資料源等一堆注意事項,經常有各種各樣的小問題,是以上傳整個庫直接解壓是最穩定最簡單最傻瓜操作的。

之是以選擇一個低版本的MySQL是為了減少整個rar檔案的大小,這樣Gitee上傳下載下傳更快,熟悉以後可自行導入自己偏好的某個高版本的MySQL,但其實這個版本的MySQL也是一個經典穩定版本,完全夠用好用的。

MySQL這個目錄可以再拷貝到其他任意目錄,直接輕按兩下啟動指令就行,因為這是一個綠色解壓版的,無需任何配置。

啟動Web伺服器(TomCat)

前後端分離架構前端要啟動一個Web伺服器,在生産環境現在一般是Ngnix或Apache這樣專業的Web伺服器,開發環境就是根據個人偏好自由選擇,隻要能跑起來就行,我們選擇了綠色解壓版TomCat,啟動方法就是進入TomCat5.5.23目錄輕按兩下執行指令【MyStart-TomCat.cmd】即可(不要做任何配置),啟動後界面如下:

WebRose平台搭建本地開發環境(一鍵綠色解壓版,零配置)

Web伺服器TomCat啟動界面

TomCat監聽端口是5001,啟動後系統通路入口位址是:

http://127.0.0.1:5001/webrose/framework/login.html,使用者名/密碼:xch/1

注意要同時啟動好SpringBoot後端服務,才可以正式登入,否則登入圖檔加載報錯。

之是以選擇TomCat,主要就是因為這是個十分老牌的Web/Java伺服器,極其穩定可靠,不像有的Web伺服器還時不時發生奇怪的緩存重新整理等問題,配置也極其簡單。

之是以選擇一個低版本的TomCat也是為了Rar檔案小一點,Gitee上傳下載下傳快一些,而且這個低版本夠用了,因為我們隻拿他當Web伺服器用,并不是當Java伺服器用。

之是以不要做任何配置就可以成功啟動應用,就是因為啟動指令與Server.xml中配置的路徑正好就是前端強調的預置的目錄名。看下截圖就明白了:

WebRose平台搭建本地開發環境(一鍵綠色解壓版,零配置)

TomCat的啟動指令

WebRose平台搭建本地開發環境(一鍵綠色解壓版,零配置)

TomCat的Server.xml

由截圖可以看出,之是以能零配置的前提就是工程目錄要使用預設目錄,反之,如果想換成其他目錄,隻要把這些配置的路徑改下即可。

啟動SpringBoot服務

因為工程不是一個Maven工程,是一個标準Java工程,即把所有ClassPath依賴的jar檔案都放在目錄\ServiceProject\lib3下了,是以Idea中編譯後端Java工程非常簡單,不要做任何配置,直接編譯Rebuild Project即可。

編譯結束後,搜尋類cn.net.webrose.bs.WebRoseSpringRun,直接Run即可,即在Idea中成功啟動springBoot服務了。

之是以不要做任何配置就可以成功啟動,并連接配接資料庫,是因為 MySQL的相關參數與後面資料源配置/appouter_config/webrose.xml中的内容都是預設比對對上的。截圖如下:

WebRose平台搭建本地開發環境(一鍵綠色解壓版,零配置)

SpringBoot服務啟動成功界面

也就是說,如果不是預先把整個MySQL做成一鍵解壓版,而是使用自己的某個版本的MySQL,則肯定至少要修改這個資料源配置,就可能各種錯誤不順利,無法做到零配置。這也是為什麼我們把整個第三方環境都放在Gitee庫中,直接下載下傳解壓使用的原因,就是減少各種配置,降低出錯與不順利的機率。

Ant編譯生産環境SpringBoot服務包

前面講的是開發工具中環境搭建,最後要釋出到生産環境,有個編譯打包過程。

先強調一下,雖然在開發環境中,前後端代碼的檔案都在同一個Idean工程中,但其實運作也是分前後端執行的。

即前端是TomCat反向映射啟動D:\ABCWorkSpace\webrose\WebProject這個目錄,并沒有使用後端檔案目錄。

而後端是編譯所有src,隻用到了D:\ABCWorkSpace\webrose\ServiceProject目錄下的檔案,并沒有使用前端目錄檔案。

即檔案合在一個工程中是為了寫代碼與傳Git友善,即一個Git庫,一個工程,一個開發工具就夠了,可以在一個工具界面中同時寫前後端代碼。

然後我們甚至把各個産品與各個項目也放在這一個工程中,隻要在Ant腳本中設定想編譯哪些産品與項目目錄就行了。

這是因為許多中小型軟體公司與項目,因為人力資源有限,往往無法做到前後端程式員是分開的,即經常是一個程式員前後端代碼都要寫,甚至是一個人要同時負責多個項目與産品。

如果前端工程搞一個Git庫,後端工程是另一個,然後每個産品與項目又是一個Git庫,前端開發用VSCode開發工具,後端開發用Idea開發工具,則搭建或切換各産品與項目環境就非常煩瑣,需要在不同的開發工具與工程中來回切換。

是以我們為了簡化環境搭建,就把前後端代碼,各個産品與項目代碼都合在一個工程中,總共就一個工程,一個環境,永遠不要切換。

當然,有人覺得這樣權限沒有分開,即每個人都有所有産品與項目代碼權限,這不安全。這個道理在一些大公司是存在的,在中小企業與項目有時不是非常關鍵,如果真有那種問題,則自己重新設定目錄也是可以的,隻要把Ant編譯打包腳本也相應改下就行。

如果隻想編譯某個産品源碼,不想編譯所有無關源碼,隻要臨時在本地環境中把無關産品源碼設定成普通目錄(不是Sources源碼目錄),這樣就不影響編譯速度。

開發環境的前後端目錄與道理已說明白,下面講如何釋出生産環境。

前端釋出:

前端釋出非常簡單,隻要直接複制開發環境目錄到生産環境的Web伺服器(一般是Ngnix居多)相應目錄下即可,這是因為我們是一個原生Web架構,不需要使用WebPack再做二次打包Build,隻要複制目錄檔案即可,也就是說開發環境與生産環境其實是一模一樣的,就是标準的原生Web。

這也是因為WebPack二次打包與我們後面想實作PaaS線上開發的效果存在“結構性沖突”,PaaS線上開發需要實作儲存立即運作效果,而不是說還要再編譯成另一種格式再上傳,是以這才必須創新思路,回歸原生Web釋出機制。

後端釋出:

後端釋出則需要編譯打包成SpringBoot服務包,即最後隻要一個Jar檔案直接運作,在這個Jar裡面把整個環境的各個Jar都打包在其中。

一般做法就是使用Maven打包,但目錄結構需要遵循Maven許多規則(可能把各産品項目前後端目錄合在一起就有問題),是以我們選擇了直接用Ant腳本打包。其實Maven本質上也是使用Ant執行的(Maven執行提示看得到Ant Task字樣),兩者是一回事,隻不過自己寫Ant腳本更自由靈活,可以做更多的工程目錄的創新設定。

具體Ant執行方法就是直接輕按兩下運作指令\ServiceProject\buildjar\MyAnt.cmd即可。

檢視這個Ant指令内容,可以看出這個指令執行的是ServiceProject\buildjar\MyBuilder.xml這個配置檔案。

檢視MyBuilder.xml配置内容,可以很容易明白其原理(不清楚的可以網上找點Ant資料先學習下),其實就是不斷的複制、編譯、打包、再複制。。最後再打SpringBoot服務包的過程。這個檔案内容如下:

WebRose平台搭建本地開發環境(一鍵綠色解壓版,零配置)

Ant腳本MyBuilder.xml開始部分内容

WebRose平台搭建本地開發環境(一鍵綠色解壓版,零配置)

Ant腳本MyBuilder.xml結尾部分内容

即Ant腳本隻用了5~6種最常用的功能指令,就可以自己完全模拟Maven底層的執行過程,自由組合控制輸出SpringBoot服務Jar包,一切都是透明的。

最主要的是自定義Ant腳本可以自由發揮,不按Maven規則創新設定工程目錄,然後修改腳本按自己的想法打包,甚至可以做一些更大的創新,比如WebRose有個功能可以在中間執行一個程式把所有源代碼先加密,然後打到最後Jar的某個目錄下,然後在發生異常時點選堆棧連結時可以打開源代碼(先解密)界面。要想在打包過程中實作這種自由擴充,使用Maven就不友善,而直接寫Ant腳本就靈活自由。

Ant實際執行截圖如下:

WebRose平台搭建本地開發環境(一鍵綠色解壓版,零配置)

Ant編譯打包執行過程

最後隻要把生成的SpringBoot服務Jar檔案上傳到生産環境(一般是Linux)執行即可。

總結

總而言之,WebRose搭建環境,以及編譯釋出生産環境,都非常簡單并與衆不同,真正做到了一下載下傳、一解壓、零配置,就能跑起來。

繼續閱讀