linux Springbootプロジェクトの導入(jarパッケージまたはwarパッケージ)


Jarパッケージの配置
主にnohupコマンドを使用して実現します.
例:
nohup java -jar xxx.jar &

これにより、nohupは、実行結果のログを現在のフォルダの下のnohupに出力.outファイルでは、通常、上記のコマンドを使用します.次のようなパラメータを手動で指定して、ログ・ファイルの出力場所を指定することもできます.
nohup java -jar xxx.jar > catalina.out  2>&1 &

ログを出力する必要がない場合は、次のコマンドを使用します.
nohup java -jar xxx.jar >/dev/null &

だからnohup java-jar yourappを使うだけです.jar&コマンドでyourapp.jarはバックグラウンドで実行されました.
管理を容易にするために、次のようなアプリケーションを起動するためのスクリプトをShellで作成することもできます.
アプリケーションのスクリプトを閉じる:stop.sh
#!/bin/bash
PID=$(ps -ef | grep yourapp.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo Application is already stopped
else
    echo kill $PID
    kill $PID
fi

アプリケーションを起動するスクリプト:start.sh
#!/bin/bash
nohup java -jar yourapp.jar --server.port=8888 &

閉じて起動するスクリプトを統合しました:run.shは、まずアプリケーションを閉じてからアプリケーションを起動するため、ポート競合などの問題を引き起こすことなく、持続的な統合システムで繰り返し呼び出すのに適しています.
#!/bin/bash
echo stop application
source stop.sh
echo start application
source start.sh

Warパッケージの導入
スタートアップエントリの変更
package com.hongguaninfo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;

/**
 * Created by chenqinglong on 2019/2/1 0001.
 */
@SpringBootApplication
@ComponentScan(basePackages = { "com.hongguaninfo" })
@MapperScan("com.hongguaninfo.quartz.mapper")
public class QuartzApplication extends SpringBootServletInitializer {
    public static void main(String[] args){
        SpringApplication.run(QuartzApplication.class, args);
    }

    /**
     *   SpringBootServletInitializer   configure    war        。
     *    web    war      tomcat           
     * @param application
     * @return
     */
    @Override
    protected final SpringApplicationBuilder configure(final SpringApplicationBuilder application) {
        return application.sources(QuartzApplication.class);
    }
}

Springbootプロジェクトがwarパッケージとしてtomcatに配備される場合、起動方法を変更する必要があります.そうしないと、tomcatを実行するとwarパッケージは解凍するだけですが、ロードできません.
継承が必要ですorg.springframework.boot.context.web.SpringBootServeretInitializerクラス、そのconfig(SpringApplicationBuilder)メソッドを上書きする
pomファイルの変更
  • warパッケージを指定する場合、tomcat関連のパッケージは不要になります.springboot内蔵tomcatを排除してパッケージ化する必要があります.
  • 
        org.springframework.boot
        spring-boot-starter-web
        
            
                org.springframework.boot
                spring-boot-starter-tomcat
            
        
    

    (注意:ローカルmainメソッドの実行時には、除外部分のコメントを削除する必要があります)
    2、springbootプロジェクトjspページを使用する場合、以下の依存が追加されますが、外部tomcatの実行時にエラーが発生します.
    tomcat/libの下にあるjarパケット(jasper.jar,jsp-api.jarなど)はwarパケットプロジェクトパス/libの下にある解析jspのjarパケットと衝突するため
    プロジェクトパス/libの関連jarパッケージを削除すると、次のようになります.
    
        org.apache.tomcat.embed
        tomcat-embed-jasper
        provided
    
    
        javax.servlet
        javax.servlet-api
        provided
    

    (注意:ローカルmainメソッドの実行時にprovided部分を注釈する必要があります)
     
    Webを追加します.xml
    warにパッケージして、パッケージ後のファイルにwebがない場合.xmlファイルなら自分で一番簡単なwebを入れることができます.xml(ルートノードの定義のみで、サブ要素がない)は、webの欠如を防止する.xmlファイルの配置に失敗しました