Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

war部署

打包方式

修改pom.xml

....
    <name>ms-mcms</name>
    <!-- 打包war包 -->
    <packaging>war</packaging>
....
mvn clean package

部署

linux

1.将打包好的war包放进Tomcat的webapps下

2.修改Tomcat bin 目录下的catalina.sh,添加一行修改语言和时区的脚本

# OS specific support.  $var _must_ be set to either true or false.
export JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/shanghai -Duser.language=zh -Duser.region=CN"

3.执行bin 目录下的startup.sh启动项目

Tip

注意:在SpringBoot3版本以上需要Tomcat版本10以上

window

1.将打包好的war包放进Tomcat

Important

如果本地开发没有使用项目名context-path,且没有项目名需求,需要把xxx.war重命名为ROOT.war,并删除ROOT文件夹,否则会多一层访问路径导致资源404

2.点击startup.bat启动项目,默认生成的日志文件mcms.log

Important

如果是通过ningx+tomcat的方式部署,需要修改tomcatserver.xml的Host的域名,否则会出现静态化之后,页面会出现错误的url地址127.0.0.1,application.yml 里面配置的端口必须与 tomcat(或其他容器)端口一致

国产中间件

国产中间件通常是打包war包的方式部署,开发者直接根据pom.xml的注释引导信息导出war包,

Tip

第一次部署war成功之后,以后更新服务器就直接通过文件覆盖的方式更新对应的文件夹,不需要每次都部署war包的方式,否则会出现文件被覆盖的情况;如果非得要每次war部署,那建议部署前先把静态文件先备份一下。等war部署好后再覆盖还原这些进来文件夹。

重点!!!

Warning

如果部署失败第一时间连接中间件供应商,基本都有正确的解答,必要的时候请求远程调试;

包加载顺序(老版本之前会打包有ms-mcms-co的包就采用这个顺序配置,还有使用站群插件也需要这样配置)

因为war包部署时候存在一个jar包加载顺序的问题,需要手动修改lib目录下的jar包名称,主要目的控制jar包在容器中的加载顺序,让jar包中重写的代码生效,只需要在jar包文件名称前面增加a、b、c字符来调整顺序即可,具体的根据pom.xml的顺序一致;


<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <!-- 排除多个需要解压的 JAR 包 -->
        <packagingExcludes>
            WEB-INF/lib/ms-site.jar,
            WEB-INF/lib/ms-module-a.jar,
            WEB-INF/lib/ms-module-b.jar
        </packagingExcludes>
        
        <overlays>
            <!-- 按顺序定义 overlays,后面的会覆盖前面的 -->
            
            <!-- 第一个 overlay:基础模块(优先级最低) -->
            <overlay>
                <groupId>net.mingsoft</groupId>
                <artifactId>ms-module-a</artifactId>
                <type>jar</type>
                <targetPath>WEB-INF/classes</targetPath>
                <includes>
                    <include>**/*.class</include>
                </includes>
            </overlay>
            
            <!-- 第二个 overlay:中间模块 -->
            <overlay>
                <groupId>net.mingsoft</groupId>
                <artifactId>ms-module-b</artifactId>
                <type>jar</type>
                <targetPath>WEB-INF/classes</targetPath>
                <includes>
                    <include>**/*.class</include>
                </includes>
            </overlay>
            
            <!-- 第三个 overlay:ms-site(优先级最高,会覆盖前面的) -->
            <overlay>
                <groupId>net.mingsoft</groupId>
                <artifactId>ms-site</artifactId>
                <type>jar</type>
                <targetPath>WEB-INF/classes</targetPath>
                <includes>
                    <include>**/*.class</include>
                </includes>
                <!-- 可以添加其他资源文件 -->
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </overlay>
        </overlays>
    </configuration>
</plugin>

Tip

推荐jar包方式部署,jar部署方式基本可以与本地开发运行效果一直