1,打開idea命令行,進行項目打包
打包命令:
mvn clean package -DskipTests
命令解釋:
clean 先清空當前class文件,
package進行項目打包
-DskipTests 跳過系統中的測試Test文件
出現BUILD SUCCESS說明打包成功。
成功後打成 的jar包目錄如圖所示
2 通過Xftp或者其他軟件將jar包扔到服務器上
2.1 通過xshell連接centos,查詢當前正在運行的java程序
查詢命令:
ps -ef |grep java
第一個是正在運行的java程序,第二個是當前我們這條查詢語句的進程,所以第二個不用管。
可以看到第一個的進程id 爲 6255,所以我們要先將這個進程給殺掉再運行當打包的項目。
這樣做是爲了避免端口衝突。如果是第一次運行或者項目端口號和目前運行的java程序不一致的話可以忽略此步驟。
殺掉項目進程命令:
kill -9 6255
殺掉進程之後再上上一條語句查詢的話就會發現只有一條搜索進程了,如果還是有兩個進程那就是沒殺掉,再試一次。
3、運行項目
注意:在Linux系統中不能通過 java -jar xxx.jar來運行項目,因爲這樣運行的話關係xshell連接的話項目的進程就自動掉了,所以這種不能用。
解決辦法
在jar包文件所在的目錄執行以下命令:
nohup java -jar springboot-0.0.1-SNAPSHOT.jar >nohup 2>&1 &
nohup: 不掛斷的執行命令,忽略所有的掛斷信號。 運行後臺命令 最後加 &
在jar目錄下會生成一個nohup.out文件,默認的log輸出到這裏了。
命令解釋
以上命令是不輸出啓動日誌的,運行後會只輸出一個運行的進程號。
想要輸出啓動日誌可以這樣:
java -jar xx.jar > log.file 2>&1 &
這裏啓動信息就輸出到了日誌文件上,注意的是log文件需要先創建chmod授權
可以給日誌一個777授權,測試階段無所謂:
chmod 777 -R /home/logs
2>&1含義
& 1 更準確的說是文件描述符 1,
而1 一般代表的就是STDOUT_FILENO,實際上這個操作就是一個dup2(2)調用
.他標準輸出到all_result ,然後複製標準輸出到文件描述符2(STDERR_FILENO), 其後果就是文件描述符1和2指向同一個文件表項,也可以說錯誤的輸出被合併了
.其中0表示鍵盤輸入 1表示屏幕輸出 2表示錯誤輸出.把標準出錯重定向到標準輸出,然後扔到/DEV/NULL下面去。通俗的說,就是把所有標準輸出和標準出錯都扔到垃圾桶裏面。
值 | 含義 |
---|---|
0 | 標準輸入(一般是鍵盤) |
1 | 標準輸出(一般是顯示屏,準確的說是用戶終端控制檯) |
2 | 標準錯誤(出錯信息輸出) |
最後一個& , 是讓該命令在後臺執行
如此:項目就可以正常運行了!!!