springboot -jar部署


springboot的打包方式有很多種。有打成war的,有打成jar的,也有直接提交到github,通過jekins進行打包部署的。這里主要介紹如何打成jar進行部署。不推薦用war,因為springboot適合前后端分離,打成jar進行部署更合適。 首先需要在application.properties當中配置端口

1.pom.xml配置

    <groupId>com.web.boot</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1</version>
    <!--默認為jar方式 -->
    <packaging>jar</packaging> 
    <!--改為war方式 -->
    <!--  <packaging>war</packaging>-->

 

<build>
        <!-- 指定打包項目名稱 -->
        <finalName>SpringBoot</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${jdk.version}</source><!-- 指定jdk版本 -->
                    <target>${jdk.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding><!-- 指定編碼版本 -->
                </configuration>
            </plugin>
            <!--該插件的主要功能是進行項目的打包發布處理 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.5.4.RELEASE</version>
                <configuration> <!--設置程序執行的主類,指定程序入口 -->
                    <mainClass>com.web.boot.ApplicationStart</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal><!-- repackage將jar / war 重新打包為可執行文件-->
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

2.打包 項目右鍵 --> run as -->Maven clean

​ 項目右鍵 --> run as -->Maven build 出現如下界面

 

 

 在Goals后面的框中輸入打包命令:

clean package  
clean package -D maven.test.skip=true   //不執行測試用例,也不編譯測試用例類
clean package -D skipTests     //不執行測試用例,但編譯測試用例類生成相應的class文件至target/test-classes下。

確認打包:run

3.此時將形成“SpringBoot.jar”程序文件,並且這個文件里面包含有全部的依賴支持庫文件。

 

 4.將“SpringBoot.jar”文件隨意拷貝到一個路徑之中,例如:D盤,而后進入到命令行方式:java -jar SpringBoot.jar

 

 5.執行完成之后,我們的服務就跑起來了,可以通過瀏覽器正常訪問:

 http://localhost:8200/SpringBoot/testcontroller/testfile

 

 

 

 6.Linux下發布過程,如下:

 6.1 (特殊情況)查看項目端口是否被占用,格式:

netstat -tunlp | grep 端口號

 

 

 可以看到 8200 端口已經被輕 java 服務占用,PID(113670)  

此種情況的解決辦法有如下兩種:

@A   使用kill命令結束占用端口的進程后繼續布置項目,格式如:kill -9 PID
@B   修改項目配置文件application.properties的端口配置,修改一個沒被占用的端口,重新打包部署
@C   換一台沒有占用此端口的服務器繼續部署項目

6.2 項目已經部署過了,更新了項目內容后,重新部署替代之前的版本的項目,那么一般則分為以下三個步驟:

@A  結束上一個版本的進程,不然會沖突:kill -9 $(ps -aef | grep p1upgradeTask-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}')

以下對此命令作解釋

ps -aef | grep SpringBoot.jar  

//查詢出我們部署的項目的信息(包含有grep本身的進程信息)

包含內容有:UID PID PPID C STIME TTY TIME CMD這幾個選項

UID:用戶ID

PID:進程ID

PPID:父進程ID

C:CPU用於計算執行優先級的因子。數值越大,表明進程是CPU密集型運算,執行優先級會降低;數值越小,表明進程是I/O密集型運算,執行優先級會提高

STIME:進程啟動的時間

TTY:完整的終端名稱

TIME:CPU時間

CMD:完整的啟動進程所用的命令和參數



其中的grep -v grep 是干啥的呢 ?

為了去除包含grep的進程行 ,避免影響最終數據的正確性 ,因為grep本身也是一個進程。



 
awk是行處理器: 相比較屏幕處理的優點,在處理龐大文件時不會出現內存溢出或是處理緩慢的問題,通常用來格式化文本信息
$2:表示第二個字段

print $2 : 打印第二個字段

awk '{print $2}' : 一行一行的讀取指定的文件, 以空格作為分隔符,打印第二個字段

   6.3 備份

 mv SpringBoot.jar SpringBoot__`date '+%Y-%m-%dT%H-%M-%S'`.jar.backups

注意:“`” 重音符或抑音符,又稱反單引號,是西文字符中的附加符號,主要用於計算機相關領域。位置在鍵盤中數字鍵“1”的左邊,其上檔符號是“~ ”,使用Shift鍵可以換擋輸入。由於計算機顯示的原因,反單引號非常容易和單引號 ‘ 混淆。

 

 

 6.4 導入新版本的jar包

mv /opt/upfile/SpringBoot.jar  SpringBoot.jar

這里說明以下,我提前把打好的jar包放入了/opt/upfile/目錄下,這一步自己去做,方式有很多種,我用的“rz”命令,傳入的。

 

 

 6.5 防火牆開放端口,不然項目發布,外部是訪問不到的

vi /etc/sysconfig/iptables

 

 

重啟服務:service iptables restart

 

 

測試端口是否開通:Telnet 192.168.95.4 8200

6.6  項目發布

如果不需要輸出日志,可以使用如下命令

后台無窗口發布:nohup java -jar SpringBoot.jar >/dev/null &

 

我們也可以手動指定一個參數來規定日志文件的輸出地點,如:


后台無窗口發布:nohup java -jar SpringBoot.jar >nohup.out 2>&1 &

 

上面的2 和 1 的意思如下:

0    標准輸入(一般是鍵盤)
1    標准輸出(一般是顯示屏,是用戶終端控制台)
2    標准錯誤(錯誤信息輸出)

將運行的jar 錯誤日志信息輸出到nohup.out文件中,

然后(>&1)就是繼續輸出到標准輸出(前面加的&,是為了讓系統識別是標准輸出),最后一個&,表示在后台運行。

 

6.7 訪問測試

http://192.168.95.4:8200/SpringBoot/testcontroller/testfile


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM