SpringBoot 部署【jar】前后端分離(nginx)


 1、SpringBoot打成jar形式,xml配置如下,主要是高亮部分,其他作為參考

<?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>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.6.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.dm</groupId>
	<artifactId>botconf</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging> #高亮
	<name>botconf</name>
	<description>bot config</description>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<skiptests>true</skiptests>
		<resource.delimiter>#</resource.delimiter>
		<jackson.version>2.11.0</jackson.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-aop</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.8.0</version>
		</dependency>
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.8.0</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.22</version>
		</dependency>
		<!--MySQL數據庫驅動-->
		<dependency>
			<groupId>javax.jms</groupId>
			<artifactId>javax.jms-api</artifactId>
			<version>2.0.1</version>
		</dependency>
		<dependency>
			<groupId>com.caucho</groupId>
			<artifactId>hessian</artifactId>
			<version>4.0.38</version>
		</dependency>
		<!-- json schema 轉換 fge -->
		<dependency>
			<groupId>com.github.fge</groupId>
			<artifactId>json-schema-validator</artifactId>
			<version>2.2.6</version>
		</dependency>
		<!-- 解決FluentIterable.class找不到問題 -->
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
			<version>26.0-jre</version>
		</dependency>
		<dependency>
			<groupId>javax.xml.bind</groupId>
			<artifactId>jaxb-api</artifactId>
			<version>2.3.0</version>
		</dependency>
		<!-- mybatis-plus -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.4.0</version>
		</dependency>
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-support</artifactId>
			<version>2.3</version>
		</dependency>
		<!--<dependency>-->
			<!--<groupId>com.baomidou</groupId>-->
			<!--<artifactId>mybatis-plus-extension</artifactId>-->
			<!--<version>3.4.0</version>-->
		<!--</dependency>-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>easyexcel</artifactId>
			<version>2.1.6</version>
		</dependency>
		<dependency>
			<groupId>org.mapstruct</groupId>
			<artifactId>mapstruct-processor</artifactId>
			<version>1.3.0.Final</version>
		</dependency>
		<!-- 解決springboot 項目使用 lombok 插件后,添加 mapstruct  插件,maven 編譯時 mapstruct 插件不起作用 -->
		<dependency>
			<groupId>org.mapstruct</groupId>
			<artifactId>mapstruct-jdk8</artifactId>
			<version>1.3.0.Final</version>
		</dependency>
		<dependency>
			<groupId>com.smart</groupId>
			<artifactId>smart-sso-client</artifactId>
			<version>1.2.4</version>
			<exclusions>
				<exclusion>
					<artifactId>spring-session-data-redis</artifactId>
					<groupId>org.springframework.session</groupId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

	<build>
		<plugins>#高亮開始
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<fork>true</fork>
				</configuration>
			</plugin>
		</plugins>#高亮結束

		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.txt</include>
					<include>**/*.yml</include>
					<include>**/*.xml</include>
					<include>**/application-${spring.profiles.active}.properties</include>
				</includes>
				<filtering>true</filtering>
			</resource>
		</resources>
		<finalName>botconf-${spring.profiles.active}</finalName>
	</build>

	<profiles>
		<profile>
			<id>dev</id>
			<properties>
				<spring.profiles.active>dev</spring.profiles.active>
			</properties>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
		<profile>
			<id>test</id>
			<properties>
				<spring.profiles.active>test</spring.profiles.active>
			</properties>
		</profile>
	</profiles>
</project>

2、application.yml配置文件如下(含MybatisPlus配置)

server:
  port: 9900
  servlet.context-path: /botconf
# 驅動配置信息
spring:
  profiles:
    active: #spring.profiles.active#
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://${dbs.database.host}:${dbs.database.port}/${dbs.database.databasename}?characterEncoding=UTF-8
    username: ${dbs.database.username}
    password: ${dbs.database.password}
    initialSize: 5    # 初始化大小,最小,最大
    minIdle: 5
    maxActive: 500
    maxWait: 60000    # 配置獲取連接等待超時的時間
    timeBetweenEvictionRunsMillis: 60000    # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
    minEvictableIdleTimeMillis: 300000    # 配置一個連接在池中最小生存的時間,單位是毫秒
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000    # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄

  mybatis-plus:
    type-aliases-package: com.dm.repository.entity  #MyBaits 別名包掃描路徑,通過該屬性可以給包中的類注冊別名,注冊后在 Mapper 對應的 XML 文件中可以直接使用類名,而不用使用全限定的類名(即 XML 中調用的時候不用包含包名)
#    mapper-locations: classpath:/com/dm/repository/mapper/*Mapper.xml
    global-config:
      db-config:
#        id-type: auto
#        field-strategy: not_empty
#             logic-delete-field: flag         # 全局邏輯刪除的實體字段名(since 3.3.0,配置后可以忽略不配置步驟2)
#        logic-delete-value: 0            # 邏輯已刪除值(默認為 1)
#        logic-not-delete-value: 1        # 邏輯未刪除值(默認為 0)
      db-type: mysql
#      refresh: false                          #Mapper 對應的 XML 文件會自動刷新,更改 XML 文件后,無需再次重啟工程,生產環境無需打開
    configuration:
      map-underscore-to-camel-case: true    #是否開啟自動駝峰命名規則(camel case)映射,即從經典數據庫列名 A_COLUMN(下划線命名) 到經典 Java 屬性名 aColumn(駝峰命名) 的類似映射。
      cache-enabled: false                    #是否開啟二級緩存

application-dev.properties配置如下

profile=dev

dbs.database.host=
dbs.database.port=3306
dbs.database.username=
dbs.database.password=
dbs.database.databasename=

spring.redis.host=
spring.redis.port=6379
spring.redis.database=9

swagger.enable=true

log.pool.corePoolSize=5
log.pool.maxPoolSize=99
log.pool.keepAliveSeconds=300
log.pool.queueCapacity=999
log.pool.threadNamePrefix=Log-

#logging.config=classpath:logback.xml
logging.level.com.dm.repository.mapper=debug

3、進行maven打包

 

 4、將打包好的jar放到服務器上運行命令

nohup  java  -jar  項目.jar   &

5、將前端放到nginx的html目錄,並參照如下修改配置文件nginx.conf

 server {
        listen       80;
        server_name  127.0.0.1;	
        # 將帶有jeecg-boot的訪問路徑代理到http://127.0.0.1:8091/上面的#context-path/,jeecg-boot/后面的依次替換
		location  /jeecg-boot/ {
			proxy_pass              http://127.0.0.1:8091/上面的context-path/;
			proxy_set_header        Host 127.0.0.1;
			proxy_set_header        X-Real-IP $remote_addr;
			proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		}

# 訪問80端口,訪問到前端頁面
        location / {
            root   html;
            index  index.html index.htm;
			if (!-e $request_filename) {
				rewrite ^(.*)$ /index.html?s=$1 last;
				break;
			}
        }
    }

6、重啟並訪問項目

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM