使用linux部署Spring Boot程序
SpingBoot的學(xué)習(xí)總算告一段落了,但它還留給了我們一個(gè)疑問,那就是程序在linux服務(wù)器上應(yīng)該怎么部署?使用命令啟動(dòng)程序后如果ssh斷開了程序會(huì)不會(huì)被shutdown?對于第一個(gè)問題比較好解決,只需要保證jdk安裝正確就不會(huì)有太大問題。棘手的問題是后面這個(gè),解決問題的關(guān)鍵就是要保證程序以守護(hù)進(jìn)程(后臺方式)運(yùn)行。這次就分享下linux下如何正確部署程序
為了解決這個(gè)問題,我查閱網(wǎng)上的資料找到了下面3種解決方案
1 把jar包弄成系統(tǒng)服務(wù)(不推薦)
這種方法缺點(diǎn)也比較明顯,那就是容易出現(xiàn)服務(wù)啟動(dòng)不起來,因?yàn)椴煌膌inux發(fā)行版本都或多或少存在差異
2 使用nohup 命令配合kill -9 xxx
這種方法比較容易接受,也是一種折中的做法,但是要停止程序會(huì)比較麻煩需要使用命令找到進(jìn)程再使用kill -9 ,還是有點(diǎn)麻煩
3 使用screen、tmux等方式(推薦)
綜合考慮這種方法比較科學(xué)因?yàn)樗峁┝私y(tǒng)一的管理多個(gè)會(huì)話的界面和相應(yīng)的功能,操作起來比較簡單些,缺點(diǎn)是需要一點(diǎn)點(diǎn)的學(xué)習(xí)成本
tmux常用命令:
$ tmux new -s session-name 新建會(huì)話
$ tmux a -t session-name 接入指定會(huì)話
$ tmux detach /$ Ctrl-b d 斷開當(dāng)前會(huì)話
$ tmux kill-session -t session-name 關(guān)閉會(huì)話
$ tmux ls 顯示所有會(huì)話
screen常用命令:
$ screen -S window-name 新建會(huì)話
$ screen -r 會(huì)話編號或名稱 接入指定會(huì)話/重新連接會(huì)話
$ screen -ls 顯示所有會(huì)話
Ctrl+a b 分離當(dāng)前會(huì)話
Ctrl+a k
以下是它們的區(qū)別,雖說tmux比較先進(jìn)但究竟如何選擇還是看大家的使用習(xí)慣
tmux 和 screen 很像,但比 screen 更好。要問好在哪里,簡單的回答就是雖然與 screen 的功能相同,但是 tmux 設(shè)計(jì)得更好。screen 雖然可用,但是很不穩(wěn)定。
以下是一些 tmux 超越 screen 的地方:
- screen 的項(xiàng)目大體上已經(jīng)終止了,并且代碼中有大量的問題
- tmux 是一個(gè)活躍的項(xiàng)目,并且其代碼庫經(jīng)常進(jìn)行更新
- tmux 使用的是真正的客戶端/服務(wù)器模型,而 screen 只是模擬了這種模型的行為
- tmux 同時(shí)支持 emacs 和 vim 的快捷鍵
- tmux 支持自動(dòng)重命名窗口
- tmux 可以高度的腳本化
- tmux 的窗口分割功能更加先進(jìn)
SpringBoot使用maven打包比較方便,打包時(shí)檢查下pom.xml的配置,確保有如下配置:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!--fork : 如果沒有該項(xiàng)配置,devtools不會(huì)起作用,即應(yīng)用不會(huì)restart --> <fork>true</fork> <!-- 可選的配置 --> <executable>true</executable> </configuration> </plugin> </plugins> lt;/build>
打包就用maven install就行了,如果打包成功找到相應(yīng)的jar重命名后上傳到linux服務(wù)器授權(quán)一下就行
這樣應(yīng)用就啟動(dòng)了,即使命令行關(guān)閉了或者從ssh斷開也不會(huì)影響程序的正常運(yùn)行
斷開連接
結(jié)束會(huì)話后程序就被shutdown了,如下所示
screen的使用和tmux大同小異,這邊已經(jīng)實(shí)踐過了,就部署程序使其在后臺運(yùn)行,選screen和tmux效果都差不多。
PS:下面給大家介紹linux部署spring-boot
先對項(xiàng)目maven clean 然后在項(xiàng)目上maven install 打成jar包,之后到linux上刪除前一個(gè)版本的進(jìn)程
查看java進(jìn)程的命令 ps -ef | grep java
殺死進(jìn)程 kill -9 進(jìn)程號
直接運(yùn)行spring-boot項(xiàng)目 nohup java -jar sinocube.jar & 使用nohup一定要以&結(jié)尾
nohup 回輸出日志文件,日志文件可以自定義文件名,默認(rèn)為nohup.nohup.out
cat nohup.out 查看日志nohup.out是文件名稱
tailf nohup.out 實(shí)時(shí)查看日志
相關(guān)文章
SpringCloud?微服務(wù)數(shù)據(jù)權(quán)限控制的實(shí)現(xiàn)
這篇文章主要介紹的是權(quán)限控制的數(shù)據(jù)權(quán)限層面,意思是控制可訪問數(shù)據(jù)資源的數(shù)量,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-11-11Spring AOP中定義切點(diǎn)的實(shí)現(xiàn)方法示例
這篇文章主要介紹了Spring AOP中定義切點(diǎn)的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了spring面向切面AOP定義切點(diǎn)的具體步驟、實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下2020-01-01java實(shí)現(xiàn)切圖并且判斷圖片是不是純色/彩色圖片
本篇文章主要介紹了java實(shí)現(xiàn)切圖并且判斷圖片是否是純色/彩色圖片,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08Maven將代碼及依賴打成一個(gè)Jar包的方式詳解(最新推薦)
這篇文章主要介紹了Maven將代碼及依賴打成一個(gè)Jar包的方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05