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 服务器中即可。