【內容指引】
SpringBoot項目介紹;
打包SpringBoot項目:
1.pom.xml;
2.application.properties配置;
3.application-dev.properties配置;
4.application-prod.properties配置;
5.data.sql;
6.打包設置。
將jar包部署到linux服務器:
1.將jar包從Mac上傳到遠程linux服務器;
2.在Mysql中創建數據庫實例;
3.以生產配置的方式運行jar包。
相關技巧
1.刪除數據庫;
2.查看進程;
3.根據端口查進程;
4.殺死指定進程 。
一、SpringBoot項目介紹
本例用於演示打包部署的java項目有如下特點:
1.采用jar包(而不是war包的方式)的方式打包;
2.雙配置:開發環境采用內置的內存數據庫h2,生產環境采用Mysql數據庫。前兩篇已經在服務器中用Docker的方式安裝了Mysql。
二、打包SpringBoot項目
1.pom.xml
需要特別說明的配置如下:
打包方式
<packaging>jar</packaging>
數據庫相關依賴
依賴JPA、h2數據庫、Mysql數據庫
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
編譯插件
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
以上配置都在“雲開發”平台生成項目初始化代碼時設定好了,無須額外修改。
2.application.properties配置
默認啟用開發配置"dev"。打包時改為“prod”,啟用生產配置。
#Profile設置
spring.profiles.active=dev
3.application-dev.properties配置
開發配置保持默認即可,無特殊說明。
4.application-prod.properties配置
需要注意的配置如下:
JPA配置
與前面Docker中運行的Mysql容器一致,這里設置數據庫名為“pscms”,用戶名為“root”,密碼為“123456”
#JPA spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/pscms?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=123456 spring.jpa.hibernate.ddl-auto=update
端口
Tomcat端口(server.port)以及應用監控端口(management.port)不要與目標服務器上已用的端口號沖突了(必要的情況下,還需要在目標服務器的防火牆中允許這兩個端口).
其它配置不用修改,保持“雲開發”平台初始化的生產配置即可。
5.data.sql
這里是為Spring Security初始化兩個用戶的sql腳本,注意,表名一律用小寫字母,否則可能發布時會報找不到表的異常。
6.打包設置
在"IntelliJ IDEA"的頂部右邊選擇“Edit Configurations”:


添加一個Maven配置:

取一個名稱,如“cms”,然后在Command line中輸入“clean package”,如下圖所示:

如下圖,點擊“運行”按鈕,執行打包:
注意
由於啟用了生產環境的配置,打包前需要Mysql數據庫實例“pscms”是可以正常訪問的,否則會導致編譯失敗。

會生成一個名為"cms-0.0.1.SNAPSHOT.jar"的jar包,其中“cms”是本示范項目的項目名:

三、將jar包部署到linux服務器
1.將jar包從Mac上傳到遠程linux服務器
可以先將本項目target目錄中的jar包重命名為"cms.jar":

右鍵拷貝jar包本地地址:

本例不上傳到遠程服務器,而是CentOS虛擬機。
查詢指導虛擬機的ip是“192.168.10.121”,用戶名是"parallels",桌面地址是“/home/parallels/Desktop”,在Mac終端中用scp拷貝jar包到虛擬機中(從虛擬機的linux終端上傳jar包到遠程linux服務器的方法相同)。
指令語法:scp -r 本地jar包路徑 遠程服務器用戶名@服務器IP:遠程存放jar包的路徑
指令:
scp -r /Users/mac.manon/workspace/JavaProjects/mobi_weiapp_cms/target/cms.jar parallels@192.168.10.121:/home/parallels/Desktop

現在虛擬機桌面就有了cms.jar:

2.在Mysql中創建數據庫實例:
在SpringBoot的生產配置中,我們需要連接的Mysql數據庫實例為“pscms”,這里,我們在虛擬機中,登錄docker創建數據庫,否則運行jar報無法連接的異常。步驟如下:
登錄容器:
docker exec -it first-mysql bash
登錄Mysql:
mysql -u root -p
輸入密碼:
創建數據庫:
CREATE DATABASE `pscms` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

創建成功后退出mysql(quit)、退出容器(exit)。
3.以生產配置的方式運行jar包
指令:
java -jar /home/parallels/Desktop/cms.jar --spring.profiles.active=prod


現在可以在CentOS本地火狐瀏覽器中用http://localhost:8888訪問了,如果在Mac中訪問則將localhost換為虛擬機的ip(如無法訪問,則可能是防火牆的原因)。
四、相關技巧
1.刪除數據庫
指令:
DROP DATABASE `pscms`;
2.查看進程
如查看java的相關的進程
指令:
ps -ef|grep java
如下圖,我們看到cms.jar的進程為30894

3.根據端口查進程
如果用方法2查詢沒找到cms.jar的進程時,我們可以根據該程序占用的端口“8888”查詢。
指令:
netstat -lntp 8888


4.殺死指定進程
指令:
kill -9 進程號

殺死進程后,發布的SpringBoot項目就無法訪問了。