天天看點

Spring Boot項目打包并部署到雲伺服器

Spring Boot項目打包并部署到雲伺服器

一、雲伺服器的環境

  • ​OS: CentOS 7​

  • ​Jdk 1.8​

  • ​Spring Boot自動內建Tomcat,不需要單獨配置​

二、本地Spring Boot項目打包

  • 我使用的工具是​

    ​IntelliJ IDEA​

    ​​。打包之前先確定​

    ​MAVEN​

    ​​配置正确。在cmd出口中輸入:​

    ​mvn​

    ​用來檢查是否配置正确。
  • 然後在項目的​

    ​pom.xml​

    ​​檔案中加入以下依賴(在​

    ​</project>​

    ​之前)。
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>



      
  • 進行打包指令:​

    ​mvn clean package​

  • 如果IDEA自帶的終端出現:​

    ​mvn不是内部或外部指令,也不是可運作的程式 或批處理檔案。​

    ​​可以使用cmd(​

    ​管理者運作​

    ​​)進入​

    ​項目位置​

    ​。在執行指令。
  • 打包完成以後會在項目的​

    ​target​

    ​​檔案夾下生成​

    ​cms-1.0-SNAPSHOT.jar​

    ​這樣的JAR包。
  • 然後将​

    ​jar包​

    ​​、​

    ​資料庫檔案​

    ​​、​

    ​啟動腳本​

    ​放在一個檔案夾内上傳到雲伺服器。我的是放在:``/usr/server/cms`
  • 啟動腳本可以下載下傳,藍奏雲位址:▶ 啟動腳本
  • 也可以自己建立一個文本文檔命名為:​

    ​catalina.sh​

    ​​,然後複制以下内容。​

    ​JAR包的名稱​

    ​需要自己修改。
#!/bin/bash
#這裡可替換為你自己的執行程式
APP_NAME=cms-1.0-SNAPSHOT.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
       BUILD_ID=dontKillMe
    nohup java -jar $APP_NAME > ./catalina.log &
  fi
}
#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
  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


      

三、啟動Spring Boot服務

  • 首先在雲伺服器安裝​

    ​Java​

    ​​,建議與本地Java版本一緻。可以參考:▶ CentOS 7搭建Java開發平台——Java 8
  • 然後進入​

    ​jar包​

    ​​的​

    ​存放位置​

    ​,添權重限:(我的是在/usr/server/cms下執行)
chmod 777 * .

      
  • ​啟動​

    ​:在jar包的目錄下執行
./catalina.sh start

      
  • 檢視​

    ​啟動日志​

    ​:
tail -f catalina.log

      

四、測試結果

  • 檢視啟動日志,沒有報錯以後可以用Postman或者浏覽器測試結果