springboot Linux后台部署

本次主要讨论Spring Boot 打成 Jar 包后的四种部署方式。

    java -jar  nohup  systemd     docker

由于 Jar 包中包含了 Tomcat ,因此可以直接通过对 Jar 操作,实现和 Tomcat 启动 War 包一样。
此处并不涉及对 docker 容器部署的讨论。
java -jar

命令:

java -jar my.jar



这种方式是最为常见的启动方式。在启动时,控制台会打印应用启动时的信息。如果通过 Xshell 等工具打开窗口进行启动,当关闭窗口时或者使用 CTRL + C后,应用会停止。

这种方式只适合临时测试使用。

nohup

nohup java -jar my.jar &  >my.log 2>&1 &


这种方式可以解决上一种,因为关闭窗口或执行终止命令,导致退出的问题。

以这种方式启动时,应用会在后台运行,控制台输出的日志会被写入当前文件夹的my.log中。

如果想要停止应用,可以先使用 jps -l 来查看PID 和应用。然后使用 kill -9 <PID>,便可以停止应用。

_______________________________________________________


systemd

这种方式针对 SpringBoot 来说,管理起来非常的方便和高效。直接将应用注册为服务,借助 systemctl 命令来管理应用。
比上面一种来说,不用找到指定的 jar 所在的路径,全局可用。

1.编写一个 service 文件,my.service。

[Unit]
Description=my service
After=syslog.target

[Service]
User=root
ExecStart=/var/my/my.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target
 


ExecStart :表示需要启动的jar所在位置。

2.然后将 my.service 复制到指定的位置:

cp my.service /etc/systemd/system/

 

3.执行以下命令启动jar:

systemctl enable my.service
systemctl start my.service
 

4.停止和重启

systemctl stop my.service
systemctl restart my.service
 

5.查看控制台输出日志

journalctl -u my.service

 

docker

创建/home/docker文件夹,将打包的jar包上传
创建/home/docker/logs文件夹存放日志文件,该路径与项目中logback中设置的一致
创建Dockerfile,内容如下

#指定基础镜像,不需要另外安装jdk
FROM java:8
#维护者
MAINTAINER lxg
#将本地文件添加到容器中,并更名为myproject.jar
COPY springboot-docker-1.0-SNAPSHOT.jar myproject.jar
#指定访问端口,与yml文件中的端口一致
EXPOSE 8081
#容器启动时,运行该程序
ENTRYPOINT ["java", "-jar", "myproject.jar"]

 

使用命令构建镜像

最后空格和"."不可忽略

docker build -t myproject .

创建并启动容器

docker run -p 8080:8081 --name myproject \
> -v /home/docker/logs:/home/docker/logs \
> -d myproject

8080是外界访问的端口,可以自定义,8081是Dockerfile中定义的端口。
-v是为了将容器中的日志目录挂载出来,冒号之前是linux宿主机自己创建的目录,可以自定义。后面的是logback文件中定义的输出日志的目录。

 

验证

页面成功访问接口,说明部署成功,192.168.56.102是linux的ip。注意防火墙是否开启,端口是否开放。

 

关于使用Docker-Compose 系统化自动部署参考

https://blog.csdn.net/weixin_51099370/article/details/125898845

 


 

posted @ 2022-08-17 20:31  桃花雪  阅读(352)  评论(0编辑  收藏  举报