java linux 服務_java項目部署Linux服務器幾種啟動方式總結經驗

一:兩種部署包:

部署之前先說下兩種包,java項目部署到服務器一般有用war包的,也有用jar包的,微服務spring-cloud普及后大部分打包都是jar,部署之前先搞清楚自己要打war包還是jar包,下面小介紹兩種包的區別:

spring boot既可以打成war發布,也可以找成jar包發布。說一下區別:

jar包:直接通過內置tomcat運行,不需要額外安裝tomcat。如需修改內置tomcat的配置,只需要在spring boot的配置文件中配置。內置tomcat沒有自己的日志輸出,全靠jar包應用輸出日志。但是比較方便,快速,比較簡單。

war包:傳統的應用交付方式,需要安裝tomcat,然后放到waeapps目錄下運行war包,可以靈活選擇tomcat版本,可以直接修改tomcat的配置,有自己的tomcat日志輸出,可以靈活配置安全策略。相對打成jar包來說沒那么快速方便。

個人比較偏向打成jar包的方式發布應用,因為spring boot已經內置了tomcat,無需額外配置。其實可以搜索下spring

boot的特點,有個非常重要的特性就是spring

boot把市面優秀的開源技術,都集合起來,方便快速應用。技術沒有百分百這種好,也沒有百分百那種不好,存在即合理,最主要還是看個人習慣和業務場景需求了。

二:jar包署部署(推薦)

先說下jar包怎么部署啟動項目,這里的jar包前提是springboot項目打的,pom文件已經設置過了入口文件等相應設置,具體設置這里就不說了。

先把jar包上傳到Linux服務器

1.安裝 xshell 、xftp軟件

Xshell功能簡介

Xshell [1] 是一個強大的安全終端模擬軟件,它支持SSH1, SSH2, 以及Microsoft Windows 平臺的TELNET 協議。Xshell 通過互聯網到遠程主機的安全連接以及它創新性的設計和特色幫助用戶在復雜的網絡環境中享受他們的工作。

Xshell可以在Windows界面下用來訪問遠端不同系統下的服務器,從而比較好的達到遠程控制終端的目的。除此之外,其還有豐富的外觀配色方案以及樣式選擇。

Xftp 功能簡介

是一個基于 MS windows 平臺的功能強大的SFTP、FTP 文件傳輸軟件。使用了 Xftp 以后,MS windows 用戶能安全地在 UNIX/Linux 和 Windows PC 之間傳輸文件。Xftp 能同時適應初級用戶和高級用戶的需要。它采用了標準的 Windows 風格的向導,它簡單的界面能與其他 Windows 應用程序緊密地協同工作,此外它還為高級用戶提供了眾多強勁的功能特性。

2.通過安裝以上兩個軟件可以實現window電腦遠程控制Linux服務器,這樣就可以將我們打包好的jar文件傳輸到Linux服務器上進行項目的部署。

假設Linux服務上已經有了打好的jar包,下面介紹幾種常用的部署方式:

1、java -jar啟動方式。

java -jar *.jar

此中方式只會運行在當前窗口,當關閉窗口或斷開連接,jar程序就會結束。

2、nohup啟動方式。(推薦)

# nohub: 不掛斷的運行命令

# &:后臺運行

# >: 日志重定向輸出到

nohub java -jar *.jar >jarLog.txt &

3、注冊為Linux服務(推薦)

首先需要現修改pom中spring-boot-maven-plugin配置,其實spring boot 打成jar包以后,是可以直接像shell腳本一樣直接運行的,要實現這樣可以直接運行,pom.xml 的build節點需要增加這樣的配置:

org.springframework.boot

spring-boot-maven-plugin

true

在Linux上注冊服務(此處基于init.d注冊部署)

將打好的jar包放到Linux任意目錄 eg: /var/project/

sudo ln -s /var/project/demo.jar /etc/init.d/abc

(其中demo為jar包名稱,abc為服務名稱)

之后就可以用 service XXX start 命令來啟動jar包

啟動/關閉 服務

service abc start/stop

查看狀態

service abc status

設置開機自啟

chkconfig abc on

4、systemctl啟動方式。

在/usr/lib/systemd/system目錄新增’abc.service’文件(文件名自己定義我這里例子是abc.service),具體內容如下:

[Unit]

Description=abc.service

Requires=mysql.service mongod.service redis.service

Wants=abc.service

After=syslog.target network.target mysql.service mongod.service redis.service abc.service

[Service]

User=manager

Group=manager

EnvironmentFile=/home/.bash_profile

WorkingDirectory=/home/tomcat

ExecStart=/usr/bin/java -Xms512m -Xmx512m -jar /home/你的項目名.jar --spring.profiles.active=test

[Install]

WantedBy=multi-user.target

更改service之后要:systemctl daemon-reload,上述文件中用到的.bash_profile文件如下:

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

LOG_PATH=/home/logs

export LOG_PATH

export PATH

其中上述中的LOG_PATH可以在項目中引用,例如:

633fb43b9511e60cb8b818539d00231a.png

5、tomcat啟動方式。

直接將*.jar文件拷貝到tomcat\webapps\目錄下,啟動tomcat,訪問localhost:8080/jar包名即可。

注意:啟動tomcat的時候優先用服務方式啟動tomcat如下:

nohup ./startup.sh &(&可以用于后臺運行)

注意:用tomcat啟動jar需要注意的是打包的時候需要把包里面tomcat排除掉:

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-tomcat

最后補充一些常規命令:

在Linux項目上對項目進行操作的命令符如下:

后臺暫時運行:java -jar /root/yyxx/cloud-yyxx-web-1.0-exec.jar(后臺暫時運行)

后臺永久運行,想要停止需殺死后臺進程:nohup java -jar /root/yyxx/cloud-yyxx-web-1.0-exec.jar &()

查看jar進程:ps aux|grep cloud-yyxx-web-1.0-exec.jar

殺掉進程: kill -9 進程號

三:war包署部署

最簡單,常見的部署方法,直接將war包放到tomcat的wabapp目錄下,運行tomcat就行。

具體步驟如下:

a. 把項目打包到wabapp目錄下。如下圖

6b289cfe7477715de845099bc09cdefa.png

b.在bin目錄下運行命令 startup.bat 啟動項目。(在bin目錄里按 shift+右鍵 即可調出命令框。關閉項目 shutdown.bat)如下圖

2fa98da747389e6e041ae75233a04999.png

你放在wabapp下的所有項目就會自啟動,自啟動伴隨著解壓縮包的動作,啟動完成后在wabapp下會看到解壓后的項目文件夾。運行成功的命令顯示如下

fcb475dca4c6e1369939ffff9dbcea81.png

這樣就表示項目啟動成功!打開瀏覽器訪問下

f441811c8b3b91f4c9b3d23fd3fe2783.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540029.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540029.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540029.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTML溫故知新1

什么是 HTML? HTML 是用來描述網頁的一種語言。 HTML 指的是超文本標記語言 (Hyper Text Markup Language)HTML 不是一種編程語言,而是一種標記語言 (markup language)標記語言是一套標記標簽 (markup tag)HTML 使用標記標簽來描述網頁 HTML 標簽 HTML 標…

java 接口與包_java常用類包接口

類StringIntegerLongFileDateThread(java.lang.ThreadThread類的定義:public class Thread extends Object implements Runnable)包java.lang.*;java.io.*;java.util.*;java.sql.*;java.math.*;接口:ComparableCollectionMapListRunnable(java.lang.Runnable 該接口…

當使用easyui時,表單的onchange事件失效

功能&#xff1a;新增信徒頁面&#xff0c;當選擇未受洗&#xff0c;設置受洗時間&#xff0c;教堂選項 disabled。 步驟&#xff1a; 在<select>標簽里加入 οnchange"xxxxx()"。 在js里編寫xxxxx()方法。 測試 教堂選項沒有 disabled。 原因&#xff1…

shell腳本:批量修改文件名(文件名中添加字符)

舉例如下&#xff1a;批量創建10個隨機字符串的文件&#xff0c;要求每個文件名后面添加_aaa,后綴名不變&#xff1b; [rootlocalhost goodboy]# ls adddbbdedf.html baacjaiija.html bhcfaabcfh.html dgjdcdfbca.html efejadfdji.html agdhcdeaje.html bgffbffjcg.html …

java 格式化小數_java-如何格式化小數位數精度

正如評論中指出的那樣,如果您只有一個String表示形式,那么就無法判斷它實際上是否有重復的部分,或者精度是否不夠高.更新我正在研究一個用分子和分母表示為BigIntegers的有理數的類(并假定盡可能地簡化).在那里,我實現了一種以十進制字符串形式表示的方法,并提出了以下方法&…

當使用easyui時,jquery的設置disabled屬性方法失效

功能&#xff1a;選擇未受洗&#xff0c;設置受洗時間&#xff0c;教堂選項 disabled 步驟&#xff1a; 使用了常規的jquery的方法 //兩種方法設置disabled屬性$(#areaSelect).attr("disabled",true);$(#areaSelect).attr("disabled","disabled&quo…

用戶登錄提交前,密碼加密傳輸

需求&#xff1a; 因為OA放在外網&#xff0c;為了提高安全性&#xff0c;用戶登錄時&#xff0c;密碼加密傳輸&#xff0c;數據庫密碼加密保存。 解決方案&#xff1a; 前臺加密用JQUERY MD5插件&#xff0c;這個工具從網上下載的。 后臺密碼加密&#xff0c;用java的MD5工…

java 內存分布_一圖看懂JVM內存分布,永久記住!

經常在說JVM內存分布&#xff0c;也經常去看&#xff0c;但是總是在面試的時候說不清楚或者模糊&#xff0c;甚至有可能說錯&#xff0c;只有真正的理解&#xff0c;并且在心中有一個總結構圖才能記得清楚說的清楚&#xff01;| JVM總覽圖java內存區域主要分程序計數器、Java虛…

Winodows10 安全登錄(Administrator賬戶與Microsoft Account關聯

我們都知道windows系統最大的管理員是administrator&#xff0c;linux是root&#xff0c;從windows7時代開始&#xff0c;安裝操作系統的時候會在最后一步提示創建一個本地賬戶一直延續到windows8、windows8.1、windows10。近期微軟發布了windows10后&#xff0c;很多用戶都開始…

微信企業號三個連接模式

在銀行里做微信企業號開發有半年多了&#xff0c;因銀行封裝了調用微信企業號的方法&#xff0c;說是微信企業號開發&#xff0c;其實就是jsp&#xff0c;java代碼的編寫&#xff0c;銀行用的開發工具是EOS&#xff0c;對這個工具我只想說&#xff0c;用久了&#xff0c;就找不…

java opencv安裝路徑_Java搭建opencv開發環境

由本菜13歷經4天才搭建的好的Java OpenCv開發環境帶來 .PS:不保證過程都是必須的,必要的.反正我自己成功了... 嘿嘿嘿.官方網站SourceForge點擊FilesFiles因為我的機器是Mac,所以選擇了unix. 然后下載3.4.3版本3.4.3PS:主要是因為剛開始接觸這個OpenCv的時候是用HomeBrew裝的, …

iBatis——執行原理

a) 執行原理 1、 將一個對象作為 參數&#xff08;對象可以是Java Bean&#xff0c;Map實現和基本類型的包裝類&#xff09;&#xff0c;參數對象將為SQL修改語句和查詢語句設定參數值。 2、 執行 mapped statement。這是SQL Maps最重要的步驟。SQL Map框架將創建一個PreparedS…

讓IT工作者過度勞累的12個壞習慣

1. QQ、MSN、Gtalk&#xff0c;一個都不少。壞習慣 由于聊天對象與聊天內容的不可控制性&#xff0c;使用即時通訊軟件是降低工作效率的罪魁禍首。有調查顯示&#xff0c;使用即時通訊軟件&#xff0c;工作效率會降低 20%. 2. “總想多看一點點”——忘記上網的目的。 本想查找…

flux java_Java反應式框架Reactor中的Mono和Flux

1. 前言最近寫關于響應式編程的東西有點多&#xff0c;很多同學反映對Flux和Mono這兩個Reactor中的概念有點懵逼。但是目前Java響應式編程中我們對這兩個對象的接觸又最多&#xff0c;諸如Spring WebFlux、RSocket、R2DBC。我開始也對這兩個對象頭疼&#xff0c;所以今天我們就…

MySQL grant 權限,分別可以作用在多個層次上

1. grant 作用在整個 MySQL 服務器上&#xff1a;grant select on *.* to dbalocalhost; -- dba 可以查詢 MySQL 中所有數據庫中的表。grant all on *.* to dbalocalhost; -- dba 可以管理 MySQL 中的所有數據庫2. grant 作用在單個數據庫上&#xff1a;grant select on testdb…

用了2年的EOS的感受

EOS是普元信息技術股份有限公司開發的產品&#xff0c;核心是eclipse&#xff0c;給eclipse穿上了很多衣服。不知道普元公司給eclipse捐款了沒。 開發人員可以從它的官網免費下載&#xff0c;免費用。免費版的服務器最多鏈接數是5個人&#xff0c;這5個人在生產上行不通的&…

java 線程分組_Java多線程可以分組,還能這樣玩!

前面的文章&#xff0c;棧長和大家分享過多線程創建的3種方式《實現 Java 多線程的 3 種方式》。但如果線程很多的情況下&#xff0c;你知道如何對它們進行分組嗎&#xff1f;和 Dubbo 的服務分組一樣&#xff0c;Java 可以對相同性質的線程進行分組。來看下線程類 Thread 的所…

關于Android構建

“IDE都是給小白程序員的&#xff0c;大牛級別的程序員一定是命令行控&#xff0c;終端控&#xff0c;你看大牛都是使用vim,emacs 就一切搞定” 這話說的雖然有些絕對&#xff0c;但是也不無道理&#xff0c;做開發這行要想效率高&#xff0c;自動化還真是缺少不了命令行工具&a…

普元EOS開發學習(二)

1、QueryFormQueryForm控件是一個用來輸入查詢條件的表單&#xff0c;作為一個代碼片斷&#xff0c;以<h:form></h:form>形式嵌入在JSP頁面中。表單提交時&#xff0c;根據控件生成時設置的邏輯&#xff0c;可以對指定數據集進行有條件查詢&#xff0c;同時可以根據…

java map class_Java:聲明一個包含兩個相關泛型類型的Map(Map,Class ?extends ClassB )...

另一種方法是提供自己的Map實現.如果擴展現有實現并使用新類型,則不需要太多代碼&#xff1a;public class CompatibleHashMap extends HashMap, ClassB> {}現在,一個CompatibleHashMap< String>只允許你把ClassA< String>作為鍵和ClassB< String>作為價值…