Spring Boot 兩種部署到服務(wù)器的方式
jar包(官方推薦)
jar包方式啟動(dòng),也就是使用spring boot內(nèi)置的tomcat運(yùn)行。服務(wù)器上面只要你配置了jdk1.8及以上,就ok。不需要外置tomcat
1.打成jar包
2.將jar包放到任意目錄,執(zhí)行下面的命令
$ nohup java -jar test.jar >temp.txt &
//這種方法會(huì)把日志文件輸入到你指定的文件中,沒(méi)有則會(huì)自動(dòng)創(chuàng)建。進(jìn)程會(huì)在后臺(tái)運(yùn)行。
ps:Linux jar包運(yùn)行命令詳細(xì)說(shuō)明,請(qǐng)查看這篇博客:Linux后臺(tái)運(yùn)行Jar方法
3.阿里云服務(wù)器需要放開(kāi)對(duì)應(yīng)的端口
添加安全組:我的項(xiàng)目中配置的啟動(dòng)端口是18080,故這里需要放開(kāi)18080端口,才能訪問(wèn)

4.訪問(wèn)swagger
訪問(wèn)格式:服務(wù)器ip:啟動(dòng)端口/swagger-ui.html
如:http://59.110.155.32:18080/swagger-ui.html
我的項(xiàng)目配置:

=======================
我們?cè)倏纯催M(jìn)程:
執(zhí)行jps ,如下圖,我們可以看到j(luò)ar 進(jìn)程有兩個(gè),原因是我這里使用java -jar 啟動(dòng)了兩個(gè)項(xiàng)目。

war包
傳統(tǒng)的部署方式:將項(xiàng)目打成war包,放入tomcat 的webapps目錄下面,啟動(dòng)tomcat,即可訪問(wèn)。
開(kāi)發(fā)環(huán)境:jdk1.8 + IDEA
下面搭建一個(gè)demo演示如何打war包部署并且如何訪問(wèn):spring boot + maven,(下面我講的有點(diǎn)啰嗦,用了很多截圖,主要目的是照顧跟我一樣的小白同學(xué)~~愿世界和平!)
1.新建spring boot + maven 項(xiàng)目(簡(jiǎn)單貼兩張圖)
這里我們默認(rèn)打成jar包,不用修改。
2.項(xiàng)目新建完成后,修改啟動(dòng)Application文件繼承SpringBootServletInitializer,實(shí)現(xiàn)configure方法

package com.example.demo1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class Demo1Application extends SpringBootServletInitializer {
// 用來(lái)測(cè)試訪問(wèn)
@RequestMapping("/")
public String home() {
return "hello 朋友";
}
public static void main(String[] args) {
SpringApplication.run(Demo1Application.class, args);
}
// 繼承SpringBootServletInitializer 實(shí)現(xiàn)configure 方便打war 外部服務(wù)器部署。
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Demo1Application.class);
}
}
3.修改pom.xml
<packaging>war</packaging>
完整pom.xml代碼如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven./POM/4.0.0" xmlns:xsi="http://www./2001/XMLSchema-instance"
xsi:schemaLocation="http://maven./POM/4.0.0 http://maven./xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 這里打成war包 若打jar,需將war改為jar -->
<packaging>war</packaging>
<name>demo1</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>demo1</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.打包
這里可以直接到項(xiàng)目根目錄下面:運(yùn)行 maven package 命令,打包。
我這里直接使用idea打包,如下圖:

5.將war放入外部tomcat的webapps目錄下

6.啟動(dòng)tomcat

會(huì)彈出一個(gè)黑框,你會(huì)看到項(xiàng)目啟動(dòng),啟動(dòng)完成后,直接訪問(wèn):localhost:8080/demo1(即:ip:端口/項(xiàng)目名稱,這里的端口是外部tomcat配置的端口,項(xiàng)目名稱是war包得名稱),瀏覽器輸出“hello 朋友”,表示運(yùn)行成功!

一定注意 :我這里訪問(wèn)的端口是8080,也就是外部tomcat設(shè)置的端口。而不是項(xiàng)目,
application.yml中配置的server.port。
小結(jié)
1.對(duì)比兩種打包方式,jar更加簡(jiǎn)單,方便。具體使用哪種方式,應(yīng)視應(yīng)用場(chǎng)景而定。
2.再說(shuō)一次,將項(xiàng)目打成war包,部署到外部的tomcat中,這個(gè)時(shí)候,不能直接訪問(wèn)spring boot 項(xiàng)目中配置文件配置的端口。application.yml 中配置的server.port 配置的是spring boot內(nèi)置的tomcat的端口號(hào), 打成war包部署在獨(dú)立的tomcat上之后, 你配置的server.port 是不起作用的。一定要注意這一點(diǎn)??!
其實(shí)我們從tomcat的啟動(dòng)界面,已經(jīng)可以看出,是啟動(dòng)的哪個(gè)端口:
很明顯,日志告訴我們,我們應(yīng)該訪問(wèn)8080端口。
下圖是使用spring boot 內(nèi)置tomcat啟動(dòng)日志,可以看出配置的server.port是生效了的!

3.ok,如果你用的spring boot + gradle。基本一樣。。這里就不詳細(xì)說(shuō)了
|