中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么將本地SpringBoot項目jar包部署到Linux環境中

發布時間:2023-05-16 14:23:22 來源:億速云 閱讀:109 作者:iii 欄目:編程語言

這篇文章主要介紹了怎么將本地SpringBoot項目jar包部署到Linux環境中的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇怎么將本地SpringBoot項目jar包部署到Linux環境中文章都會有所收獲,下面我們一起來看看吧。

    迭代步驟

    • 在windows環境使用命令啟動SpringBoot項目

    • 在Linux環境使用命令啟動項目

    • 在Linux環境使用腳本啟動項目

    • 優化腳本,每次重啟時先關閉項目

    • 分離依賴,每次上傳Linux環境只上傳幾百k的代碼包

    • 搭配IDEA插件,實現在IDEA中一鍵部署

    一、前提:

    有一個Windows環境可以啟動的SpringBoot項目jar包

    1、使用Maven的package命令打出一個攜帶依賴的jar包

    例如:

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    2、Window啟動jar包
    java -jar SpringBootTest-0.0.1-SNAPSHOT.jar

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    啟動完畢,說明jar包是可以正常啟動的。

    二、linux環境啟動jar包

    1、先將jar包扔到linux環境

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    2、測試是否可以啟動(需要有Java環境)
    java -jar SpringBootTest-0.0.1-SNAPSHOT.jar

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    說明在Linux環境也是可以正常啟動的

    但是以上的啟動方式有個問題,窗口一關項目就自動關閉了

    3、優化啟動腳本,改為后臺啟動,并將日志輸出到springboot.log
    nohup java -jar SpringBootTest-0.0.1-SNAPSHOT.jar > springboot.log &

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    啟動成功,進程號為9777

    以上的腳本也存在問題,第二次啟動的時候,會因為已經啟動了一個服務,端口占用啟動不了

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    4、完善腳本,啟動時,如果存在已經啟動的服務,先關閉,再啟動

    創建腳本

    vim start.sh

    腳本內容

    # 關閉程序
    # fileName為jar包的名稱
    fileName=SpringBootTest-0.0.1-SNAPSHOT.jar
    pid=$(ps -ef | grep $fileName| grep -v "grep" | awk '{print $2}')
    kill -9 $pid
    
    # 啟動項目
    nohup java -jar $fileName > springboot.log &

    之后,啟動項目就可以

    sh start.sh

    至此,SpringBoot項目在Linux的啟動就說明完畢。

    但是,以上的部署方式還存在一些問題,在只有web依賴的時候,jar的大小就已經達到17M,

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    而在實際開發中,jar包的大小甚至會到達一百多兆。例如這樣:

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    為什么明明沒有多少代碼,包的大小卻這么大呢?

    解壓SpringBootTest-0.0.1-SNAPSHOT.jar包查看內容

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    可以看出,lib文件夾占用了16.7M,而lib文件夾里面是什么東西呢?

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    可以看到,就是各種的依賴。

    所以,就引發了新的優化方向,能不能將依賴包直接放在服務器上,每次只更新自己的代碼?

    答案是:可以!在實際開發中,依賴包一般來說是不會動的,于是開始第三步。

    三、分離依賴部署

    1.上傳依賴jar包Linux服務器

    (1)創建lib文件夾

    mkdir lib

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    (2)將jar包中的/BOOT-INF/lib目錄底下的jar包全部上傳到Linux服務器的lib文件夾

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    2.改造項目的pom.xml文件

    增加配置:

        <build>
            <plugins>
                <!-- 解決jar中沒有主清單屬性問題 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <mainClass>com.example.springboottest.SpringBootTestApplication</mainClass>
                        <!-- jar包不攜帶依賴配置開始-->
                        <layout>ZIP</layout>
                        <includes>
                            <include>
                                <groupId>nothing</groupId>
                                <artifactId>nothing</artifactId>
                            </include>
                        </includes>
                        <!-- jar包不攜帶依賴部署配置結束-->
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    3.重新package

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    新生成的jar包僅僅只有156kb!

    4.上傳到服務器

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    這時候,如果使用原本的腳本啟動就會報錯:

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    5.使用-Dloader.path指定外部依賴包

    (1)增加啟動文件start2.sh

    cp start.sh start2.sh

    (2)在java -jar后追加-Dloader.path=./lib

    # 關閉程序
    fileName=SpringBootTest-0.0.1-SNAPSHOT.jar
    pid=$(ps -ef | grep $fileName| grep -v "grep" | awk '{print $2}')
    kill -9 $pid
    
    # 啟動項目
    nohup java -jar -Dloader.path=./lib  $fileName > springboot.log &

    使用外部依賴啟動成功

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    到此,使用外部依賴啟動就完成了,只要加上-Dloader.path=./lib就可以了

    6.合并start.sh和start2.sh腳本

    第五步還存在的一個問題,雖然這個方法很好用,但是又增加了一個腳本。公司內部,總是有人想要打全量包,使用自帶的依賴,有的人想要打不攜帶依賴的包,可以快速部署啟動,這時候,就需要區分,到底是要用start.sh腳本還是start2.sh腳本,于是,將start.shstart2.sh腳本進行合并,大于10M的時候,就使用內部依賴,小于10M的時候就使用外部依賴

    合并后的start.sh腳本:

    # 關閉程序
    fileName=SpringBootTest-0.0.1-SNAPSHOT.jar
    pid=$(ps -ef | grep $fileName| grep -v "grep" | awk '{print $2}')
    kill -9 $pid
    
    # 獲取jar包的大小
    filesize=`ls -l $fileName | awk '{ print $5 }'`
    # 多少M以上使用外部依賴
    maxsize=$((1024 * 1024 * 10)) # 10M
    
    if [ $filesize -gt $maxsize ]
    then
      echo "文件大小為【$filesize】,使用內部依賴啟動"
      nohup java -jar -Dloader.path=./lib  $fileName > springboot.log &
    else
      echo "文件大小為【$filesize】,使用外部依賴啟動"
      nohup java -jar $fileName > springboot.log &
    fi

    適配兩種情況

    小于10M的jar包使用外部依賴

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    大于10M的jar包使用內部依賴

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    在第三步優化完之后,jar包的大小大大減少,只剩下1M都不到,每次上傳耗時不到1s,還能不能繼續優化呢?

    答案也是可以!當前還存在的問題是:

    1、需要手動選擇文件上傳。

    2、需要手動執行腳本

    于是,進行第四步優化,引入Alibaba Cloud Toolkit插件

    四、搭配Alibaba Cloud Toolkit插件使用,實現一鍵上傳文件,并執行腳本

    1、IDEA安裝Alibaba Cloud Toolkit插件

    1.1 從插件市場中下載Alibaba Cloud Toolkit插件,并重啟IDEA。

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    2.配置服務器地址

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    可以看到就增加了一條新的配置

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    3.配置上傳地址和執行的命令

    查看所在路徑

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    點擊上傳,配置上傳的文件、上傳地址以及執行的腳本

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    填加執行命令

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    4.點擊Upload按鈕

    成果:1秒部署SpringBoot項目

    怎么將本地SpringBoot項目jar包部署到Linux環境中

    關于“怎么將本地SpringBoot項目jar包部署到Linux環境中”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“怎么將本地SpringBoot項目jar包部署到Linux環境中”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    吉隆县| 靖西县| 永平县| 鲁山县| 万年县| 通州区| 呼图壁县| 蓝田县| 泰州市| 武宣县| 秦皇岛市| 盐山县| 贵定县| 凉城县| 溆浦县| 积石山| 永福县| 双江| 保定市| 桂东县| 阆中市| 赤水市| 张掖市| 邵阳市| 绥化市| 敦煌市| 偃师市| 五常市| 夏河县| 周口市| 古浪县| 枣庄市| 新竹县| 柳州市| 台南县| 汶上县| 巫山县| 油尖旺区| 大余县| 双柏县| 永年县|