Linux 部署 SpringBoot 项目

    技术2022-07-11  104

    Jar 包部署

    Maven 打包项目:

    [root@centos] maven package

    把打出来的 jar 包放到 Linux 服务器下,直接使用 Java 启动:

    [root@centos] nohup java -jar yourProject.jar &

    其中 & 表示后台运行程序:

    结果会输出到终端使用 Ctrl + C 发送 SIGINT 信号,程序免疫关闭session发送SIGHUP信号,程序关闭

    使用 nohup 运行程序:

    结果默认会输出到 nohup.out使用Ctrl + C发送SIGINT信号,程序关闭关闭session发送SIGHUP信号,程序免疫

    由于 nohup 输出的文件会越来越大,很占内存,我们可以选择重定向到 /dev/null 中,放弃 nohup.out 的信息输出:

    [root@centos] nohup java -jar yourProject.jar >/dev/null 2>erro.log 2>&1 &

    这里 >/dev/null 表示把所有信息都扔掉,2>err.log 表示把错误输出到 erro.log 文件中(0表示标准输入,1表示标准输出,2表示错误输出)

    如果什么也不输出的话直接使用:

    [root@centos] nohup java -jar yourProject.jar >/dev/null 2>&1 &

    查看后台进程

    列出所有后台执行的作业,并且每个作业前面都有个编号:

    [root@centos] jobs

    将某个作业调回前台控制,只需要 fg + 编号 即可

    [root@centos] fg 2

    查看端口占用的线程 pid

    [root@centos] netstat -nlp | grep :8080 # 或者 [root@centos] ps -aux | grep java

    杀死进程

    # 正常杀死 [root@centos] kill -15 pid号 # 强制杀死 [root@centos] kill -9 pid号

    war 包部署

    Spring Boot 由于默认内嵌 Tomcat 容器,所以打出来的 jar 包即可直接运⾏,但是我们 有时候希望将其部署于外置的 Tomcat 服务器中,这时候就要打 war 包了。

    打 war 包之前需要做⼏个代码上的配置:

    1、修改 pom.xml 中的打包⽅式

    将:

    <packaging>jar</packaging>

    修改为:

    <packaging>war</packaging>

    2、剔除内嵌的Tomcat

    修改 pom.xml ⽂件,在原先的配置:

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

    下面加入如下配置:

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

    provided 表示该包只在编译和测试中使⽤,在发布时去除。

    3、修改项⽬启动类

    在 Spring Boot 中我们平常都⽤ main ⽅法启动的⽅式,都有⼀个 SpringBootApplication 的启动 类,例如 xxxApplication.java 的启动主类⽂件.

    ⽽我们现在需要类似于 web.xml 的配置⽅式来启动 Spring 应⽤,为此,我们在 Application 类的同 级⽬录下再添加⼀个 SpringBootStartApplication 类:

    SpringBootStartApplication.java

    代码如下:

    public class SpringBootStartApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 在这⾥要指向原先⽤main⽅法执⾏的 xxxApplication 启动类 return builder.sources(xxxApplication.class); } }

    4、打包部署:

    [root@centos] mvn clean [root@centos] mvn package

    等待构建打成 war 包,打包结果仍然位于 target 目录下,然后直接部署到 Tomcat 服务器中即可。

    Processed: 0.012, SQL: 9