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