一:兩種部署包:
部署之前先說下兩種包,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節點需要增加這樣的配置:
<!--這樣配置后,通過maven打出來的jar 可以直接 執行 ./aabb.jar 就能運行起來。 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
- 在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可以在項目中引用,例如:
5、tomcat啟動方式。
直接將*.jar文件拷貝到tomcat\webapps\目錄下,啟動tomcat,訪問localhost:8080/jar包名即可。
注意:啟動tomcat的時候優先用服務方式啟動tomcat如下:
nohup ./startup.sh &
(&可以用於后台運行)
注意:用tomcat啟動jar需要注意的是打包的時候需要把包里面tomcat排除掉:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
6、基於docker雲部署。
http://www.jianshu.com/p/ec477d84fc7d
最后補充一些常規命令:
在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目錄下。如下圖
b.在bin目錄下運行命令 startup.bat 啟動項目。(在bin目錄里按 shift+右鍵 即可調出命令框。關閉項目 shutdown.bat)如下圖
你放在wabapp下的所有項目就會自啟動,自啟動伴隨着解壓縮包的動作,啟動完成后在wabapp下會看到解壓后的項目文件夾。運行成功的命令顯示如下
這樣就表示項目啟動成功!打開瀏覽器訪問下