如何部署後端jar包?
雖然是前端,但是自己啟動了以vue,typescript,iview,spring-boot,mysql為技術棧啟動的arya-spring-vue全棧專案。
前端檔案部署已經初步掌握:如何部署前端dist目錄?。
但是服務端是有點懵的:一來自己不是後端,平時沒有這方面的經驗;二來無論是node全棧專案,還是vue+spring全棧專案,都僅僅在自己本地執行成功過。
也剛剛成功將arya-spring-vue-be成功部署到了一臺CentOS騰訊雲伺服器上,趁熱記錄一下。
- 前置知識
- Spring Boot Maven Plugin打包出內嵌tomcat的jar包
- CentOS安裝jdk並設定環境變數
- CentOS7安裝MySQL
- 新建資料庫和使用者並執行jar包
前置知識
maven,tomcat,jar。 雖然有nodejs服務端經驗,但我是java技術棧萌新,所以有以下疑問:
- 在伺服器上java服務端的服務是怎樣跑起來的?
- 會像前端構建一個類似dist的包嗎?
在思考這兩個問題之前,先來補充一些前置知識。
- maven:[譯]Maven in 5 Minutes,[譯]Maven Getting Started Guide
- tomcat:Apache Tomcat初體驗
- jar:[譯]Create a Fat Jar App with Spring Boot,[譯]Running a Spring Boot App with Maven vs an Executable War/Jar
在伺服器上java服務端的服務是怎樣跑起來的?tomcat環境下執行的jar包;內嵌tomcat的jar包。
會像前端構建一個類似dist的包嗎?需要,通常是jar包,也可以是war包。mvn package
或mvn package spring-boot:repackage
打包。
Spring Boot Maven Plugin打包出內嵌tomcat的jar包
已有條件: spring-boot專案arya-spring-vue-be maven已安裝 jdk已安裝
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
複製程式碼
<build>
<plugins>
...
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
...
</plugins>
</build>
複製程式碼
打包
mvn clean package spring-boot:repackage
複製程式碼
打包出內嵌tomcat的jar包:arya-spring-vue-be-0.0.1-SNAPSHOT.jar
CentOS安裝jdk並設定環境變數
安裝JDK
mkdir /usr/java # 建立 java 資料夾
cd /usr/java # 進入 java 資料夾
複製程式碼
本地下載好jdk-11.0.5_linux-x64_bin.tar.gz。 使用FileZila將JDK 安裝包上傳到上述 java 資料夾下,然後解壓安裝包。
// 解壓安裝包
chmod +x jdk-11.0.5_linux-x64_bin.tar.gz
tar -xzvf jdk-11.0.5_linux-x64_bin.tar.gz
複製程式碼
// 設定環境變數
開啟 /etc/profile 檔案。
vim /etc/profile
複製程式碼
輸入以下配置並儲存:
export JAVA_HOME=/usr/java/jdk-11.0.5
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
複製程式碼
// 配置檔案立即生效
source /etc/profile
複製程式碼
CentOS7安裝MySQL
[譯]How To Install MySQL On CentOS 7
在sudo yum install mysql-server
這一步是存在一些坑的,其次就是下載mysql需要一些等待時間。
新建資料庫和使用者並執行jar包
檢視https://github.com/arya-spring-vue/arya-spring-vue-be/blob/master/src/main/resources/application.properties
看到如下資料庫配置
spring.datasource.url=jdbc:mysql://localhost:3306/arya_spring_vue_be
spring.datasource.username=arya_spring_vue_user
spring.datasource.password=password
複製程式碼
因此如此建立資料庫和使用者
mysql> create database arya_spring_vue_be;
mysql> create user 'arya_spring_vue_user'@'%' identified by 'password';
mysql> grant all on arya_spring_vue_be.* to 'arya_spring_vue_user'@'%';
複製程式碼
執行jar包:jar -jar arya-spring-vue-be-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__,| / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.3.RELEASE)
2019-11-29 18:05:43.092 INFO 10520 --- [ main] c.a.s.v.a.AryaSpringVueBeApplication : Starting AryaSpringVueBeApplication v0.0.1-SNAPSHOT on VM_0_11_centos with PID 10520 (/usr/java/arya-spring-vue-be-0.0.1-SNAPSHOT.jar started by root in /usr/java)
...
2019-11-29 18:06:00.154 INFO 10520 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2019-11-29 18:06:00.184 INFO 10520 --- [ main] c.a.s.v.a.AryaSpringVueBeApplication : Started AryaSpringVueBeApplication in 19.419 seconds (JVM running for 21.197)
複製程式碼
- 好看的Spring提示
- Tomcat成功執行在8080埠
- AryaSpringVueBeApplication成功啟動
至此,後端jar包部署成功!