如何以源碼形式運(yùn)行Nacos Server
官方標(biāo)準(zhǔn)運(yùn)行方式
下載解壓可運(yùn)行包
curl?-O?https://github.com/alibaba/nacos/releases/download/1.3.2/nacos-server-1.3.2.tar.gz
tar?-zxvf?nacos-server-1.3.2.tar.gz
cd?nacos/bin
執(zhí)行運(yùn)行
#?Linux/Unix/Mac?啟動(dòng)命令(standalone代表著單機(jī)模式運(yùn)行,非集群模式):
sh?startup.sh?-m?standalone
#?如果您使用的是ubuntu系統(tǒng),或者運(yùn)行腳本報(bào)錯(cuò)提示[[符號(hào)找不到,可嘗試如下運(yùn)行:
bash?startup.sh?-m?standalone
#?Windows?啟動(dòng)命令(或者雙擊startup.cmd運(yùn)行文件)
cmd?startup.cmd
為什么要源碼化運(yùn)行
1. 方便開發(fā)過程使用
如果從 Spring Cloud Netflix 體系遷移到 Spring Cloud Alibaba 技術(shù)體系,明顯的感受是整個(gè)體系得到簡(jiǎn)化。Nacos 承擔(dān)整個(gè) Spring Cloud 的服務(wù)發(fā)現(xiàn)、配置管理部分的實(shí)現(xiàn)。是整個(gè)開發(fā)過程中強(qiáng)依賴,啟動(dòng)微服務(wù)業(yè)務(wù)要去檢查 Nacos Server 是否已經(jīng)啟動(dòng),解壓安裝的方式變的非常不便。
如果把 Nacos Server 作為整個(gè)微服務(wù)框架的一部分直接 Main 啟動(dòng),是不是更加方便便利?
2. UI 個(gè)性定制化
- 若以解壓運(yùn)行方式,修改 UI 幾乎不可能??梢韵螺d Nacos 源碼繼續(xù)修改 然后重新打包運(yùn)行。非常的不方便
git?clone?https://github.com/alibaba/nacos.git
cd?nacos/
mvn?-Prelease-nacos?-Dmaven.test.skip=true?clean?install?-U
ls?-al?distribution/target/
//?change?the?$version?to?your?actual?path
cd?distribution/target/nacos-server-$version/nacos/bin
- 若以源碼方式運(yùn)行,可以試試的調(diào)整 UI 然后 build 看到效果。
3. 保證 Server & Client 保持一致
pig 作為微服務(wù)開源項(xiàng)目,更新迭代速度非???。每個(gè)版本依賴的 Nacos Client 版本都可能發(fā)生變化,這就意味著對(duì)應(yīng)的 Nacos Server 版本也要對(duì)應(yīng)升級(jí),這需要用戶自行下載升級(jí)成本很高。
Nacos 具有良好小版本向下兼容性,但是大版本功能變化挺大,比如 1.2 、1.3 權(quán)限的變更。所以建議大家在實(shí)際開發(fā)過程中保持版本一致。
若以源碼運(yùn)行的方式,可以很好的解決此問題。
如何實(shí)現(xiàn)
1. 下載 Nacos 源碼
只需保留 nacos console 模塊,其他模塊均可刪除
???
2.??Nacos?源碼結(jié)構(gòu)說明
├──?pom.xml
└──?src
????├──?main
????│???├──?java
????│???│???└──?com
????│???│???????└──?alibaba
????│???│???????????└──?nacos
????│???│???????????????├──?Nacos.java??#?main?啟動(dòng)類
????│???│???????????????└──?console????#?控制臺(tái)相關(guān)源碼
????│???└──?resources
????│???????├──?application.properties??#?nacos?配置文件
????│???????└──?static????#?靜態(tài)頁(yè)面目錄
????└──?test????#?單元測(cè)試部分
3. 修改 Nacos.java 類
- 主要在 main 方法中增加 兩個(gè)參數(shù),是否是單機(jī)啟動(dòng) & 是否關(guān)閉權(quán)限校驗(yàn)
@SpringBootApplication(scanBasePackages?=?"com.alibaba.nacos")
@ServletComponentScan
@EnableScheduling
public?class?Nacos?{
????public?static?void?main(String[]?args)?{
????????#?通過環(huán)境變量的形式?設(shè)置?單機(jī)啟動(dòng)
??????System.setProperty(ConfigConstants.STANDALONE_MODE,?"true");
????????#?通過環(huán)境變量的形式?設(shè)置?關(guān)閉權(quán)限校驗(yàn)
??????System.setProperty(ConfigConstants.AUTH_ENABLED,?"false");
????????SpringApplication.run(Nacos.class,?args);
????}
}
4. 修改 console/pom.xml
由于不在使用 nacos bom 管理,需要給所有依賴坐標(biāo)增加版本號(hào)
由于 nacos-config /nacos-naming 等包沒有上傳至中央?yún)⒖?無法下載到,groupId 變更為
com.pig4cloud.nacos即可下載變更后參考如下
<dependency>
??<groupId>com.pig4cloud.nacosgroupId>
??<artifactId>nacos-configartifactId>
??<version>1.3.2version>
dependency>
<dependency>
??<groupId>org.apache.tomcat.embedgroupId>
??<artifactId>tomcat-embed-jasperartifactId>
??<version>7.0.59version>
dependency>
<dependency>
??<groupId>com.pig4cloud.nacosgroupId>
??<artifactId>nacos-namingartifactId>
??<version>1.3.2version>
dependency>
...
總結(jié)
- 1. 以上修改后源碼參考:
參考資料
[1]https://gitee.com/log4j/pig: https://gitee.com/log4j/pig/blob/master/pig-register/pom.xml
