linux Springbootプロジェクトの導入(jarパッケージまたはwarパッケージ)
4127 ワード
Jarパッケージの配置
主にnohupコマンドを使用して実現します.
例:
これにより、nohupは、実行結果のログを現在のフォルダの下のnohupに出力.outファイルでは、通常、上記のコマンドを使用します.次のようなパラメータを手動で指定して、ログ・ファイルの出力場所を指定することもできます.
ログを出力する必要がない場合は、次のコマンドを使用します.
だからnohup java-jar yourappを使うだけです.jar&コマンドでyourapp.jarはバックグラウンドで実行されました.
管理を容易にするために、次のようなアプリケーションを起動するためのスクリプトをShellで作成することもできます.
アプリケーションのスクリプトを閉じる:stop.sh
アプリケーションを起動するスクリプト:start.sh
閉じて起動するスクリプトを統合しました:run.shは、まずアプリケーションを閉じてからアプリケーションを起動するため、ポート競合などの問題を引き起こすことなく、持続的な統合システムで繰り返し呼び出すのに適しています.
Warパッケージの導入
スタートアップエントリの変更
Springbootプロジェクトがwarパッケージとしてtomcatに配備される場合、起動方法を変更する必要があります.そうしないと、tomcatを実行するとwarパッケージは解凍するだけですが、ロードできません.
継承が必要ですorg.springframework.boot.context.web.SpringBootServeretInitializerクラス、そのconfig(SpringApplicationBuilder)メソッドを上書きする
pomファイルの変更 warパッケージを指定する場合、tomcat関連のパッケージは不要になります.springboot内蔵tomcatを排除してパッケージ化する必要があります.
(注意:ローカルmainメソッドの実行時には、除外部分のコメントを削除する必要があります)
2、springbootプロジェクトjspページを使用する場合、以下の依存が追加されますが、外部tomcatの実行時にエラーが発生します.
tomcat/libの下にあるjarパケット(jasper.jar,jsp-api.jarなど)はwarパケットプロジェクトパス/libの下にある解析jspのjarパケットと衝突するため
プロジェクトパス/libの関連jarパッケージを削除すると、次のようになります.
(注意:ローカルmainメソッドの実行時にprovided部分を注釈する必要があります)
Webを追加します.xml
warにパッケージして、パッケージ後のファイルにwebがない場合.xmlファイルなら自分で一番簡単なwebを入れることができます.xml(ルートノードの定義のみで、サブ要素がない)は、webの欠如を防止する.xmlファイルの配置に失敗しました
主に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ファイルの変更
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ファイルの配置に失敗しました