1. 程式人生 > >SpringBoot項目部署進階

SpringBoot項目部署進階

pri docker 以及 互聯網 遠程 restart linu 這也 con

一、war包部署

通過“雲開發”平臺初始化的SpringBoot項目默認采用jar形式打包,這也是我們推薦的方式。但是,因為某些原因,軟件需求方特別要求用war形式打包,我們該怎麽做?

1.項目尚未開始

如果開發前,軟件需求就指明要war形式打包和部署,那麽我們在利用IntelliJ IDEA創建Spring Boot項目時直接選擇打包方式(Packaging)是war形式即可:

技術分享圖片

打包方法和上篇文章jar的打包方式一樣。也可以通過指令打包,方法是先在Mac終端中進入項目根路徑,然後運行指令:

mvn package

技術分享圖片

2.項目已開發

如果軟件需求方中途要求通過war形式打包和發布,而我們是通過jar形式創建的項目該怎麽做呢?

1>.pom.xml

將“jar”改為:

<packaging>war</packaging>

增加如下依賴覆蓋默認內嵌的Tomcat依賴:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <scope>provided</scope>
</dependency
>

技術分享圖片

2>.增加ServletInitializer類

package mobi.weiapp.cms;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

/**
 * war打包時指定啟動類
 */
public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    
protected SpringApplicationBuilder configure(SpringApplicationBuilder application){ return application.sources(CmsApplication.class); } }

技術分享圖片

3.部署war包

安裝過Tomcat後,tomcat索引目錄為:/usr/share/tomcat

技術分享圖片

我們將Mac中打包好的war包重命名為"cms.war"拷貝到CentOS7虛擬機中tomcat的webapps目錄下,它會自動解壓:

技術分享圖片

安裝Tomcat時我們將Tomcat設置為虛擬機啟動時自動開啟,使用的是8080端口,現在我們訪問:http://localhost:8080/cms

二、jar包部署

上一篇我們已經示範了怎樣進行jar形式的打包和部署。
我們通常將Linux下運行的軟件註冊為服務。這裏介紹如何將jar包註冊為Linux服務,實現通過指令開啟、關閉以及保持開機啟動等功能。

1.修改pom.xml中的編譯插件配置

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
</build>

將上面spring-boot-maven-plugin的配置修改為:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <executable>true</executable>
                </configuration>
            </plugin>
        </plugins>
</build>

2.編譯成jar包

通過指令“mvn package”打包,或用上篇介紹的方法:

技術分享圖片

3. 上傳jar包

進入CentOS7虛擬機(或遠程Linux服務器),進入"/var"目錄:

技術分享圖片

在該目錄下看看有沒有“apps”目錄,如果沒有就新建一個:
指令:

mkdir apps

技術分享圖片

將上面編譯的jar包可以重命名為"cms-service.jar",拷貝到CentOS7虛擬機的"/var/apps"下:

技術分享圖片

4.基於Linux的Systemd部署

在CentOS7的“/etc/systemd/system/”目錄下新建文件"cms.service":
指令:

nano /etc/systemd/system/cms.service

寫入如下配置:

[Unit]
Description=cms
After=syslog.target

[Service]
ExecStart= /usr/bin/java -jar /var/apps/cms-service.jar

[Install]
WantedBy=multi-user.target

技術分享圖片

服務指令
啟動服務:

systemctl start cms.service

停止服務:

systemctl stop cms.service

服務狀態:

systemctl status cms.service

開機啟動:

systemctl enable cms.service

查看項目日誌:

journalctl -u cms.service

三、基於Docker雲部署

1.在CentOS7中建立存放jar包的docker目錄

技術分享圖片

2.將jar包存放在該目錄下

技術分享圖片

3.在jar包存放的目錄建立如下Dockerfile

技術分享圖片

內容如下:

FROM java:8

MAINTAINER mac.manon

ADD cms.jar app.jar

EXPOSE 8888

ENTRYPOINT ["java","-jar","/app.jar"]

技術分享圖片

4.編譯鏡像

編譯鏡像前確保虛擬機是可以連互聯網的。
在/var/apps/cmsdocker目錄下執行編譯鏡像的指令。
指令:

docker build -t cloudev/cmsdocker .

技術分享圖片

技術分享圖片

編譯好後查看本地鏡像:
指令:

docker images

技術分享圖片

5.運行鏡像

指令:

docker run -d --restart=always --name mycms -p 8888:8888 cloudev/cmsdocker

技術分享圖片

SpringBoot項目部署進階