隨著 Spring Boot、Spring Cloud 的流行,越來越多的公司和企業開始使用微服務分布式架構,大家也都在學習相關知識;在自己做專案的時候,面對龐大的專案檔案和繁雜的邏輯關系,有些同學就不知如何部署自己的專案了,下面我將介紹通用型的微服務專案部署方式,
一、專案分析
在打包部署之前我們先來簡單的分析一下專案結構,這里我拿出最近部署的一個專案作為例子,該專案使用的阿里的 Nacos 服務,沒有使用 Eureka 服務注冊中心,所以少了一個模塊,

這個專案檔案里包含了前端和后端的代碼,還有一些文本檔案;這里我們不關心與后端無關的,先列舉出后端模塊(圖中可以看出檔案夾右下角帶有藍色正方形的就是后端模塊):
business:業務模塊,提供主要的業務邏輯介面file:檔案模塊,提供檔案的上傳下載介面gateway:網關模塊,請求的必經之路,負責攔截請求generator:代碼生成模塊,負責生成重復性代碼server:一些物體類、工具類、列舉類等system:系統模塊,提供用戶相關的介面
這些模塊中只有部分需要打包,最簡單的判別方法就是,有 主啟動類 的模塊需要打包,其余的不需要打包,

如上圖所示,business 模塊就需要打包,同樣有啟動類的模塊還有:file、gateway、system,
所指本專案只有這四個模塊需要打包,
二、打包專案
打包專案肯定是使用最流行的 maven 了,不過在執行 install 之前需要先修改組態檔,確保和下面的一樣:
2.1、父 pom 檔案
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lsu</groupId>
<artifactId>online-course</artifactId>
<packaging>pom</packaging>
<version>1.0.0</version>
<modules>
<module>system</module>
<module>gateway</module>
<module>server</module>
<module>business</module>
<module>generator</module>
<module>file</module>
</modules>
<name>online-course</name>
<description>在線視頻課程系統</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
···
</properties>
<dependencyManagement>
<dependencies>
···
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
···
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<!-- 默認關掉單元測驗,不用手動關閉了 -->
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</project>
- 父
pom中一定要指定maven-compiler-plugin和maven-surefire-plugin插件, <packaging>pom</packaging>打包型別寫pom包,
2.2、子 pom 檔案
這里以 business 模塊的 pom 檔案為例,其余的模塊也類似,
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>online-course</artifactId>
<groupId>com.lsu</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>business</artifactId>
<dependencies>
···
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 指定該 Main Class 為全域的唯一入口 -->
<mainClass>com.lsu.business.BusinessMainApplication</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<!-- 將依賴到的包都放進去 -->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
注意:
- 子 pom 檔案中一定要指定
spring-boot-maven-plugin插件和主啟動類的 全類名 , <packaging>jar</packaging>打包型別寫Jar包,
其中 <goal>repackage</goal>,我寫到了他會將依賴到的包都打進去,具體如下圖:

他會將依賴到的包都放到 BOOT-INF 檔案夾下面的 lib 中:
- 優點是后續不用擔心依賴找不到的問題,高可移植性;
- 缺點是會導致
jar包體積很大,例圖中的包有 60M 大小,如果不將依賴放進去以 KB 為單位,
2.3、執行打包
然后我們通過 IDEA 自帶的 maven 插件打包就行了,或者鍵入 “ mvn package ” 命令,

注意這里只需要點擊父工程的 package 命令,不需要管其他的子工程,因為打包父工程會自動打包所有的子模塊,我們之前設定了父工程的打包方式為 pom,
打包完成以后的 jar 包會出現在模塊各自的 target 目錄下,

進入到該目錄下,輸入命令 java -jar business-1.0.0.jar 即可啟動專案,
三、部署專案
打包好了以后就可以部署了,我這里是部署到了 windows server 2012 系統上面了,該系統已經有 java 的環境,所以直接遠程連接,將 jar 檔案復制過去,然后使用 java 命令啟動即可,Linux 系統也是一樣的,可以使用 XShell 工具先將檔案傳到服務器上面,再啟動,
由于該專案為前后端分離專案,下面介紹一下前端部分的打包部署步驟,

前端我使用了多環境配置,這里一直用的是 .env.dev 檔案,看一下檔案內容,
NODE_ENV=development
VUE_APP_SERVER=http://10.10.3.*:9100
這里的 ip 地址要填寫部署的服務器地址,埠為網關模塊的地址,
在 package.json 檔案中定義腳本檔案,末尾加上引數 --mode dev,代表以 dev 模式啟動:


使用命令執行以后,就會打包前端專案,在根目錄下生成 dist 目錄,我們要做的就是拿走 dist 目錄,放到服務器上面,
然后怎么執行呢,這里有多種方式,最方便的是使用 nginx 啟動,最簡單的使用 http-server 啟動,這里就以后者為例,
// 如果沒有 cnpm 就使用 npm 安裝
1、cnpm install http-server -g
2、進入到 dist 目錄,然后執行 http-server 即可
視窗中會列印出訪問地址,復制到瀏覽器中即可訪問頁面,屆時前后端專案都已經完成部署,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/286758.html
標籤:java
