SpringBoot專案在linux系統中的部署(直接部署、外接tomcat中部署)以及配置https

WZH577發表於2018-11-28

利用SpringBoot內建tomcat直接部署

Spring Boot預設提供內嵌的Tomcat,所以打包直接生成jar包,用java -jar命令就可以啟動。

以下內容為在eclipse中針對SpringBoot多模組專案的操作:

1、修改子模組pom.xml,新增<packaging>jar</packaging>;

2、修改啟動模組(即web子模組)pom.xml,新增:

<!--多模組打包:只需在啟動類所在模組的POM檔案:指定打包外掛 -->
    <build>
        <plugins>
            <plugin>
                <!--該外掛主要用途:構建可執行的JAR -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

3、右鍵parent父模組-->Run as-->Maven Clean

4、右鍵parent父模組-->Run as-->Maven Install

5、將target中的jar包放到伺服器下,執行java -jar /usr/local/jar/yichaoWeb.jar,啟動完成後即可訪問

      nohup java -jar /usr/local/jar/yichaoWeb.jar    //不掛機啟動
      ps -ef | grep /usr/local/jar/yichaoWeb.jar         //關閉
      kill -9 5021

6、編寫啟停指令碼(附於文章最後),則可執行以下命令啟停:

    chmod +x /usr/local/jar/jar.sh       //賦予超管許可權
    /usr/local/jar/jar.sh start
    /usr/local/jar/jar.sh stop
    /usr/local/jar/jar.sh restart

外接tomcat部署SpringBoot專案

1、tomcat解壓;

2、安裝JDK並配置環境變數;

3、修改子模組pom.xml,新增<packaging>war</packaging>;

4、將父模組pom.xml中整合tomcat依賴註釋;

5、打包成war包上傳至tomcat伺服器下的webapps目錄下;

6、啟動tomcat伺服器,war包會自動解壓執行

      /usr/local/tomcat/bin/startup.sh             //啟動
      /usr/local/tomcat/bin/shutdown.sh         //關閉

tomcat配置https

1、申請免費證照    https://freessl.cn

2、證照上傳至伺服器,將格式轉為jks

     可參考阿里雲配置:https://help.aliyun.com/knowledge_detail/95505.html?spm=5176.2020520154.0.0.3e4756a72AjNyx

      openssl pkcs12 -export -in full_chain.pem -inkey private.key -out tomcat.p12 -name tomcat      

      keytool -importkeystore -srckeystore tomcat.p12 -destkeystore server.jks -srcstoretype PKCS12 -deststoretype JKS

3、修改conf目錄下的server.xml檔案

      <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="conf/server.jks" keystorePass="yichao"
       />

以上操作中踩的坑:

1、編譯打包的時候報錯

[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

解決:在Windows-->preference-->java-->installed JREs-->add-->選擇本地JDK安裝目錄

2、linux中啟停指令碼執行報錯

#!/bin/bash: No such file or directory

解決:#vi /usr/local/jar/jar.sh,進入文字檢閱模式,輸入:set ff,檢視是否為unix格式,不是則輸入:set ff=unix,然後:wq回車返回

 

啟停指令碼:

#!/bin/bash
#這裡可替換為你自己的執行程式,其他程式碼無需更改
APP_NAME=/usr/local/jar/yichaoWeb.jar
 
#使用說明,用來提示輸入引數
usage() {
    echo "Usage: sh 執行指令碼.sh [start|stop|restart|status]"
    exit 1
}
 
#檢查程式是否在執行
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}
 
#啟動方法
start(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running. pid=${pid} ."
  else
    nohup java -jar $APP_NAME >> catalina.out 2>&1 &
    echo "...start OK!"
  fi
}
 
#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
    echo "...stop OK!"
  else
    echo "${APP_NAME} is not running"
  fi  
}
 
#輸出執行狀態
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}
 
#重啟
restart(){
  stop
  start
}
 
#根據輸入引數,選擇執行對應方法,不輸入則執行使用說明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

 

相關文章