欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot項(xiàng)目部署到服務(wù)器的兩種方式

 更新時(shí)間:2024年10月08日 09:39:57   作者:Java架構(gòu)何哥  
目前,前后端分離的架構(gòu)已成主流,而使用SpringBoot構(gòu)建Web應(yīng)用是非??焖俚?項(xiàng)目發(fā)布到服務(wù)器上的時(shí)候,只需要打成一個(gè)jar包,然后通過(guò)命令 : java -jar jar包名稱即可啟動(dòng)服務(wù)了,本文介紹了SpringBoot項(xiàng)目部署到服務(wù)器的兩種方式,需要的朋友可以參考下

前言

目前,前后端分離的架構(gòu)已成主流,而使用SpringBoot構(gòu)建Web應(yīng)用是非常快速的,項(xiàng)目發(fā)布到服務(wù)器上的時(shí)候,只需要打成一個(gè)jar包,然后通過(guò)命令 : java -jar jar包名稱即可啟動(dòng)服務(wù)了。

一、jar包(官方推薦)

SpringBoot項(xiàng)目默認(rèn)打包成jar包

jar包方式啟動(dòng),也就是使用SpringBoot內(nèi)置的tomcat運(yùn)行。服務(wù)器上面只要你配置了jdk1.8及以上就ok,不需要外置tomcat。

1、SpringBoot將項(xiàng)目打包成jar包

a.首先在pom.xml文件中導(dǎo)入Springboot的maven依賴

<!--將應(yīng)用打包成一個(gè)可以執(zhí)行的jar包-->
   <build>
 
        <plugins>
 
            <plugin>
 
                <groupId>org.springframework.boot</groupId>
 
                <artifactId>spring-boot-maven-plugin</artifactId>
 
            </plugin>
 
        </plugins>
 
    </build>

b.package一下

c.package完成以后,target中會(huì)生成一個(gè).jar包;

d.將jar包放到Linux服務(wù)器任意目錄,執(zhí)行下面的命令即可啟動(dòng)項(xiàng)目服務(wù)

$ nohup java -jar test.jar >temp.txt &
 
//這種方法會(huì)把日志文件輸入到你指定的文件中,沒(méi)有則會(huì)自動(dòng)創(chuàng)建。進(jìn)程會(huì)在后臺(tái)運(yùn)行。

2、Linux運(yùn)行jar包與停止命令

a、執(zhí)行jar包的命令和在windows操作系統(tǒng)上是一樣的,都是java -jar xxxx.jar。

b、后臺(tái)運(yùn)行,nohup 意思是不掛斷運(yùn)行命令,當(dāng)賬戶退出或終端關(guān)閉時(shí),程序仍然運(yùn)行

當(dāng)用 nohup 命令執(zhí)行作業(yè)時(shí),缺省情況下該作業(yè)的所有輸出被重定向到nohup.out的文件中,除非另外指定了輸出文件。

nohup java -jar shareniu.jar

c、如果想殺掉運(yùn)行中的jar程序,查看進(jìn)程命令為:

ps aux|grep getCimiss-surf.jar

將會(huì)看到此jar的進(jìn)程信息

data 5796 0.0 0.0 112656 996 pts/1 S+ 09:11 0:00 grep --color=auto getCimiss-surf.jar data 30768 6.3 0.4 35468508 576800 ? Sl 09:09 0:08 java -jar getCimiss-surf.jar

其中30768則為此jar的pid,殺掉命令為

kill -9 30768

二、war包

傳統(tǒng)的部署方式:將項(xiàng)目打成war包,放入tomcat 的webapps目錄下面,啟動(dòng)tomcat,即可訪問(wèn)。

SpringBoot項(xiàng)目改造打包成war的流程

1、pom.xml配置修改

<packaging>jar</packaging>
//修改為
<packaging>war</packaging>

2、pom文件添加如些依賴

 <!--添加servlet-api的依賴,用來(lái)打war包  -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>

這個(gè)依賴主要是用于在和jsp進(jìn)行整合的使用,可酌情添加

3、排除springboot內(nèi)置的tomcat干擾

 <!--最終打成war包,排除內(nèi)置的tomcat-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

4、改造啟動(dòng)類

如果是war包發(fā)布,需要增加SpringBootServletInitializer子類,并重寫其configure方法,或者將main函數(shù)所在的類繼承SpringBootServletInitializer子類,并重寫configure方法

當(dāng)時(shí)打包為war時(shí)上傳到tomcat服務(wù)器中訪問(wèn)項(xiàng)目始終報(bào)404錯(cuò)就是忽略了這個(gè)步驟?。。?/p>

改造之前:

@SpringBootApplication
public class MainApp {
 
    public static void main(String[] args) {
        SpringApplication.run(MainApp.class,args);
    }
}
 

改造之后:

@SpringBootApplication
public class MainApp extends SpringBootServletInitializer {
 
    public static void main(String[] args) {
        SpringApplication.run(MainApp.class,args);
    }
  
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
 
        // 注意這里要指向原先用main方法執(zhí)行的Application啟動(dòng)類
        return builder.sources(MainApp.class);
    }
}

這種改造方式也是官方比較推薦的方法

5、pom文件中不要忘了maven編譯插件

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

6、在IDEA中使用mvn clean命令清除舊的包,并使用mvn package生成新的war包

執(zhí)行完畢后,可以看到war包已經(jīng)生成了,默認(rèn)是在target目錄下,位置可以在pom文件中進(jìn)行配置:

7、使用外部Tomcat運(yùn)行該 war 文件,有兩種方式。第一種把 war 文件直接丟到 tomcat的webapps目錄,啟動(dòng)tomcat;第二種使用tomcat - conf - server.xml配置,使用target目錄中war包解壓的文件夾為項(xiàng)目地址進(jìn)行部署

<Service name="testWar">  
  <Connector port="8088"    maxHttpHeaderSize="8192"  maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="true" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true"  URIEncoding="utf-8"/>   
  <Engine name="hnswzy" defaultHost="localhost">
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
     <Host name="localhost" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
         <Context path="" reloadable="true" docBase="D:\project\springboot\war\target\war-0.0.1">
         </Context>
     </Host>
  </Engine>
</Service>

注意事項(xiàng):

將項(xiàng)目打成war包,部署到外部的tomcat中,這個(gè)時(shí)候,不能直接訪問(wèn)spring boot 項(xiàng)目中配置文件配置的端口。application.yml中配置的server.port配置的是spring boot內(nèi)置的tomcat的端口號(hào), 打成war包部署在獨(dú)立的tomcat上之后, 你配置的server.port是不起作用的。一定要注意這一點(diǎn)??!

其實(shí)我們從tomcat的啟動(dòng)界面,已經(jīng)可以看出,是啟動(dòng)的哪個(gè)端口:

很明顯,日志告訴我們,我們應(yīng)該訪問(wèn)8080端口。

三、jar包和war包方式對(duì)比

1.SpringBoot項(xiàng)目打包時(shí)能打成 jar 與 war包,對(duì)比兩種打包方式,jar更加簡(jiǎn)單方便,使用 java -jar xx.jar 就可以啟動(dòng)。所以打成 jar 包的最多。

而 war包可以部署到tomcat的 webapps 中,隨Tomcat的啟動(dòng)而啟動(dòng)。具體使用哪種方式,應(yīng)視應(yīng)用場(chǎng)景而定。

2、打jar包時(shí)不會(huì)把src/main/webapp 下的內(nèi)容打到j(luò)ar包里 (你認(rèn)為的打到j(luò)ar包里面,路徑是不行的會(huì)報(bào)404)

     打war包時(shí)會(huì)把src/main/webapp 下的內(nèi)容打到war包里

3.打成什么文件包進(jìn)行部署與項(xiàng)目業(yè)務(wù)有關(guān),就像提供 restful API 服務(wù)的項(xiàng)目需要打包成 jar文件,用命令運(yùn)行很方便。。。而有大量css、js、html,且需要經(jīng)常改動(dòng)的項(xiàng)目,打成 war 包去運(yùn)行比較方便,因?yàn)楦膭?dòng)靜態(tài)資源可以直接覆蓋,很快看到改動(dòng)后的效果,這是 jar 包不能比的(舉個(gè)‘栗’子:項(xiàng)目打成 jar 包運(yùn)行,一段時(shí)間后,前端要對(duì)其中某幾個(gè)頁(yè)面樣式進(jìn)行改動(dòng),使其更美觀,那么改動(dòng)幾個(gè)css、html后,需要重新打成一個(gè)新的 jar 包,上傳服務(wù)器并運(yùn)行,這種改動(dòng)頻繁時(shí)很不友好,文件大時(shí)上傳服務(wù)器很耗時(shí),那么 war包就能免去這種煩惱,只要覆蓋幾個(gè)css與html即可)

以上就是SpringBoot項(xiàng)目部署到服務(wù)器的兩種方式的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot項(xiàng)目部署到服務(wù)器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringCloud?Stream?整合RabbitMQ的基本步驟

    SpringCloud?Stream?整合RabbitMQ的基本步驟

    這篇文章主要介紹了SpringCloud?Stream?整合RabbitMQ的基本步驟,從項(xiàng)目介紹到生產(chǎn)者結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java實(shí)現(xiàn)迷你圖書管理系統(tǒng)案例全程

    Java實(shí)現(xiàn)迷你圖書管理系統(tǒng)案例全程

    這篇文章主要為大家詳細(xì)介紹了如何利用java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-12-12
  • SpringBoot集成Redis實(shí)現(xiàn)消息隊(duì)列的方法

    SpringBoot集成Redis實(shí)現(xiàn)消息隊(duì)列的方法

    這篇文章主要介紹了SpringBoot集成Redis實(shí)現(xiàn)消息隊(duì)列的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 詳解java中的synchronized關(guān)鍵字

    詳解java中的synchronized關(guān)鍵字

    這篇文章主要介紹了java中的synchronized關(guān)鍵字,可用來(lái)給對(duì)象和方法或者代碼塊加鎖,當(dāng)它鎖定一個(gè)方法或者一個(gè)代碼塊的時(shí)候,同一時(shí)刻最多只有一個(gè)線程執(zhí)行這段代碼,感興趣的小伙伴們可以參考一下
    2015-12-12
  • SpringBoot調(diào)用第三方WebService接口的操作技巧(.wsdl與.asmx類型)

    SpringBoot調(diào)用第三方WebService接口的操作技巧(.wsdl與.asmx類型)

    這篇文章主要介紹了SpringBoot調(diào)第三方WebService接口的操作代碼(.wsdl與.asmx類型 ),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Idea配置maven-tomcat-plugin插件實(shí)現(xiàn)項(xiàng)目部署

    Idea配置maven-tomcat-plugin插件實(shí)現(xiàn)項(xiàng)目部署

    今天小編就為大家分享一篇關(guān)于Idea配置maven-tomcat-plugin插件實(shí)現(xiàn)項(xiàng)目部署,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • 教你怎么使用hadoop來(lái)提取文件中的指定內(nèi)容

    教你怎么使用hadoop來(lái)提取文件中的指定內(nèi)容

    發(fā)現(xiàn)有很多小伙伴不會(huì)使用hadoop來(lái)提取文件中的指定內(nèi)容,今天特地整理了這篇文章,文中有非常詳細(xì)的代碼示例,對(duì)不會(huì)這個(gè)方法的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • mybatis plus in方法使用詳解

    mybatis plus in方法使用詳解

    這篇文章主要介紹了mybatis plus in方法使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 解析JavaSe的抽象類和接口

    解析JavaSe的抽象類和接口

    這篇文章主要為大家詳細(xì)介紹了JavaSe的抽象類和接口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • Spring依賴注入Dependency Injection的三種方式

    Spring依賴注入Dependency Injection的三種方式

    依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個(gè)概念。具體含義是:當(dāng)某個(gè)角色(可能是一個(gè)Java實(shí)例,調(diào)用者)需要另一個(gè)角色(另一個(gè)Java實(shí)例,被調(diào)用者)的協(xié)助時(shí),在傳統(tǒng)的程序設(shè)計(jì)過(guò)程中,通常由調(diào)用者來(lái)創(chuàng)建被調(diào)用者的實(shí)例
    2023-02-02

最新評(píng)論