使用assembly打包dubbo provider部署到Linux

在使用dubbo開發分佈式項目時,一般都遵循如下架構

[外鏈圖片轉存失敗(img-m8cwheJj-1564403658476)(D:\note\CSDN博客\1564230196296.png)]

最近在寫的分佈電商項目中

我使用了zookeeper作註冊中心,provider作數據訪問服務層

consumer就是一般開發的web項目,我按照功能分了幾個子項目,只不過它進行數據訪問

時,是通過註冊中心也就是zookeeper獲取到provider提供的服務,monitor是數據統計的一個服務,我項目中沒用使用到。

以上是dubbo的大致架構,也是我項目的劃分依據。

其中consumer依賴了註冊接口就可以當普通項目直接部署

註冊中心zookeeper佔用單獨的進程、端口號

而provider也是項目中獨立的,重要的一塊,下面講講如將provider何打包成一個獨立的,可運行的jar包部署到linux上

打包provider模塊

這是我的項目結構:其中dubbo-service-impl就是我們要打包的provider,我們用assmebly將它打包

[外鏈圖片轉存失敗(img-XKqyr9yH-1564403658478)(D:\note\CSDN博客\1564236343404.png)]

1.由於Impl需要依賴service項目中的相關jar,所以打包前先將依賴的dubbo-service項目安裝

​ 右鍵項目>run as >mavan install

2.在impl項目的pom文件加入assembly插件

<build>
		<plugins>
			<!-- 指定項目的打包插件信息 -->
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<!-- 指定打包描述文件的位置:相對項目根目錄的路徑 -->
					<!-- assembly打包的描述文件 -->
					<descriptor>assembly/assembly.xml</descriptor>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

3.在項目下創建文件夾assmebly,並在assmebly下創建文件assmebly.xml

在這裏插入圖片描述

4.assmebly.xml內容:

<?xml version='1.0' encoding='UTF-8'?>
<assembly
	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
	<!-- 該字符會添加到最終tar.gz包的名稱後面,作爲後綴 -->
	<id>assembly</id>
	<!-- 指定打包的格式爲tar.gz,該類型壓縮包在linux中比較常見 -->
	<formats>
		<format>tar.gz</format>
	</formats>
	<!-- 在tar.gz壓縮包中是否包含根文件夾,該根文件夾名稱和tar.gz去掉id後綴一致 -->
	<includeBaseDirectory>true</includeBaseDirectory>
	<fileSets>
		<!-- 將項目根路徑下assembly/bin路徑中的內容打包到壓縮包中的根目錄下的bin目錄中 -->
		<fileSet>
			<!-- 相對項目根路徑的相對路徑 -->
			<directory>assembly/bin</directory>
			<outputDirectory>bin</outputDirectory>
			<!-- 設置最終tar.gz中該文件夾下的權限,跟linux權限寫法一致 -->
			<fileMode>0755</fileMode>
		</fileSet>
		<!-- 將項目根路徑下assembly/conf路徑中的內容打包到壓縮包中的根目錄下的conf目錄中 -->
		<fileSet>
			<directory>assembly/conf</directory>
			<outputDirectory>conf</outputDirectory>
			<!-- 設置其linux權限 -->
			<fileMode>0644</fileMode>
		</fileSet>
	</fileSets>
	<!-- 將所有依賴的jar包打包到壓縮包中的根目錄下的lib目錄中 -->
	<!-- 此lib目錄中包含自己開發的項目jar包以及demo_service.jar,還有第三方的jar包 -->
	<dependencySets>
		<dependencySet>
			<outputDirectory>lib</outputDirectory>
		</dependencySet>
	</dependencySets>
</assembly>

5.在assembly下創建bin和conf文件夾,裏面還需要幾個文件,把這幾個文件複製進去,這裏是是打包好的assembly

鏈接:https://pan.baidu.com/s/18kbdHp0KUl9emGXXIknRGg
提取碼:fxk2

6.run as maven install 在target下生成壓縮文件

[外鏈圖片轉存失敗(img-jmgNHORv-1564403841048)(D:\note\CSDN博客\1564403441216.png)]

解壓tar.gz結尾的文件

[外鏈圖片轉存失敗(img-rtbGxMbn-1564403841049)(D:\note\CSDN博客\1564403549130.png)]

發現裏面有個bin目錄,windows下啓動start.bat,linux中啓動start.sh,即可啓動這個provider

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章