SpringBoot項目部署進階


一、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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM