CentOS7配置SpringBoot项目为war包以及Systemctl方式启动jar

SpringBoot有很多种部署方式,最简单的还是直接打成可执行jar,丢到服务器上运行。但是可能业务需求是war,简单配置下就能达成war包。总之很方便,这里记录下Systemctl的配置方式,防止需要。
653258-636550011735261816-16x9.jpg

References:

首先是将项目打成war包,虽然springboot内置了服务器,但有时候需要手动配置服务器,就需要项目为war的形式。修改配置简单的一种方式:
springboot项目的启动类继承SpringBootServletInitializer并重写其configure方法,如下:

@SpringBootApplication
@EnableScheduling
public class WechatApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(this.getClass());
    }

    public static void main(String[] args) {
        SpringApplication.run(WechatApplication.class, args);
    }
}

然后就是修改打包生成的文件类型,以Maven为例,设置packaging为war:

<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

最后就是确保内置的服务器不会影响到war包部署的服务器,这需要把内置的服务器配置为可选的:

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

特殊情况下的配置请查阅官方文档。
以上就是将springboot项目打包为war需要的配置。
如果tomcat需要在启动时指定配置文件位置,可以修改catalina.sh,250行左右,加上如下内容:

JAVA_OPTS="$JAVA_OPTS -Dspring.config.location=/opt/config/application.properties"

以上指定了配置文件位置。



下面是区别于上面的单独配置,将对其能在CentOS7上运行做一些配置,以Systemctl方式管理jar项目:
还是先配置文件,以Maven为例:

<build>
    <!-- 打包文件名 -->
    <finalName>weixinapp</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <!-- 允许项目直接启动 -->
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

这样打好的jar包就可以在CentOS7上运行了,但是配置为Systemctl服务还需要在服务器上配置,简单点就是在/etc/systemd/system路径下新建一个配置文件,如“wechat.service”,内容如下:

[Unit]
Description=wechat
After=network.target

[Service]
WorkingDirectory=/var/app
ExecStart=/usr/local/java/bin/java -jar /usr/local/wechat/weixinapp.jar --spring.config.location=/opt/config/application.properties
ExecStop=kill $MAINPID
Restart=always
RestartSec=60

[Install]
WantedBy=multi-user.target

具体配置的内容参考其他文章,这里不多介绍,唯一说明的就是--spring.config.location=/opt/config/application.properties表示启动时读取配置文件的路径,这样就方便开发和生产的配置不同也不用切换,而且也不会暴露生产的配置信息。

标签: none

添加新评论

ali-01.gifali-58.gifali-09.gifali-23.gifali-04.gifali-46.gifali-57.gifali-22.gifali-38.gifali-13.gifali-10.gifali-34.gifali-06.gifali-37.gifali-42.gifali-35.gifali-12.gifali-30.gifali-16.gifali-54.gifali-55.gifali-59.gif

加载中……