将jar包部署到CentOS7操作系统

发布于:2024-05-10 ⋅ 阅读:(33) ⋅ 点赞:(0)

1、手工部署项目

1、在IDEA中开发SpringBoot项目并打成jar包

(通过Maven进行打包)

(在target目录下的 jar包)

2、将jar包上传到Linux服务器

# 创建目录,将项目jar包放到此目录
mkdir /usr/local/app

具体操作步骤:

[root@localhost ~]# cd /usr/local
[root@localhost local]# mkdir app
[root@localhost local]# cd app
[root@localhost app]# rz

上传jar包

如果你使用rz上传卡住不动0%,可以退出来重新传。

检验上传是否成功:

[root@localhost app]# ll
总用量 61692
-r--------. 1 root root 63172330 5月   6 22:47 reggie_take_out-1.0-SNAPSHOT.jar

3、启动SpringBoot程序

通过  java -jar <.jar>

注意使用java -jar 运行请看以往篇章:

在CentOS7系统中安装JAVA JDK1.8_centos7 java1.8-CSDN博客

[root@localhost app]# java -jar reggie_take_out-1.0-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.5)

2024-05-06 23:01:45.375  INFO 84728 --- [           main] com.itheima.reggie.ReggieApplication     : Starting ReggieApplication v1.0-SNAPSHOT using Java 1.8.0_401 on localhost.localdomain with PID 84728 (/usr/local/app/reggie_take_out-1.0-SNAPSHOT.jar started by root in /usr/local/app)
2024-05-06 23:01:45.388  INFO 84728 --- [           main] com.itheima.reggie.ReggieApplication     : No active profile set, falling back to default profiles: default
2024-05-06 23:01:50.835  INFO 84728 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2024-05-06 23:01:50.920  INFO 84728 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-05-06 23:01:50.920  INFO 84728 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.45]
2024-05-06 23:01:51.113  INFO 84728 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-05-06 23:01:51.114  INFO 84728 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5563 ms
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
2024-05-06 23:01:51.601  INFO 84728 --- [           main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource
2024-05-06 23:01:52.751  INFO 84728 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
Registered plugin: 'com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor@6e509ffa'
Property 'mapperLocations' was not specified.
 _ _   |_  _ _|_. ___ _ |    _ 
| | |\/|_)(_| | |_\  |_)||_|_\ 
     /               |         
                        3.4.2 
2024-05-06 23:01:55.465  INFO 84728 --- [           main] com.itheima.reggie.config.WebMvcConfig   : 扩展消息转换器...
2024-05-06 23:01:55.481  INFO 84728 --- [           main] com.itheima.reggie.config.WebMvcConfig   : 开始进行静态资源映射...
2024-05-06 23:01:56.504  INFO 84728 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2024-05-06 23:01:56.525  INFO 84728 --- [           main] com.itheima.reggie.ReggieApplication     : Started ReggieApplication in 12.714 seconds (JVM running for 15.99)
2024-05-06 23:01:56.532  INFO 84728 --- [           main] com.itheima.reggie.ReggieApplication     : 项目启动成功...

项目启动成功,端口号8080

4、检查防火墙,确保8080端口对外开放,访问SpringBoot项目

关于防火墙的配置请看以往篇章:

防火墙操作命令: Linux 防火墙 操作命令【实用】-CSDN博客

由于我们的项目进程窗口正在运行中,我们需要另建一个标签:

 

输入 firewall-cmd --zone=public --add-port=8080/tcp --permanent 查看当前开放端口

# 查看当前开放端口
[root@localhost ~]# firewall-cmd --zone=public --list-ports
8080/tcp 3306/tcp

如果你没有查询到8080端口,那么请你按照我提供的文章进行操作。

在浏览器打开 http://192.168.23.128:8080/ 进行访问项目

可以在shell终端命令中看到拦截信息

2024-05-06 23:14:16.322  INFO 84728 --- [nio-8080-exec-6] c.i.reggie.filter.LoginCheckFilter       : 用户未登录

如果我们断开标签,就无法访问站点了

 

为了解决这个控制台霸屏运行方式,请参考以下:

5、改为后台运行SpringBoot程序,并将日志输出到日志文件

  • 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行
  • 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

# 语法格式
nohup Command [ Arg … ] [ & ]

# 参数说明
Command:要执行的命令。

Arg:一些参数,可以指定输出文件。

&:让命令在后台执行,终端退出后命令仍旧执行。


# 实例
# 以下命令在后台执行 root 目录下的 runoob.sh 脚本:
nohup /root/runoob.sh &

# 在终端如果看到以下输出说明运行成功:
appending output to nohup.out

# 这时我们打开 root 目录 可以看到生成了 nohup.out 文件。

# 如果要停止运行,你需要使用以下命令查找到 nohup 运行脚本到 PID,然后使用 kill 命令来删除:
ps -aux | grep "runoob.sh" 

# 参数说明:
a : 显示所有程序
u : 以用户为主的格式来显示
x : 显示所有程序,不区分终端机

# 另外也可以使用 ps -def | grep "runoob.sh" 命令来查找。

# 找到 PID 后,就可以使用 kill PID 来删除。
kill -9  进程号PID

# 以下命令在后台执行 root 目录下的 runoob.sh 脚本,并重定向输入到 runoob.log 文件:
nohup /root/runoob.sh > runoob.log 2>&1 &

# 2>&1 解释:
# 将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。
0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)

 

了解了nohup后,来执行 

# 后台运行java -jar命令,并将日志输出到reggie_logs文件中
nohup java -jar reggie_take_out-1.0-SNAPSHOT.jar &> reggie.log &

(执行结果)

打开刚刚的浏览器地址 http://192.168.23.128:8080/ 访问:

可以通过以下命令查看日志

# 查看运行日志
more reggie.log 

这时候再关闭或断开FinalShell标签,依然可以访问。

6、停止SpringBoot程序

请查看这篇文章,关于进程查杀:验证Tomcat进程是否启动成功 ps -ef | grep tomcat-CSDN博客

[root@localhost ~]# ps -ef | grep java
root      17918      1  2 23:42 ?        00:00:15 java -jar reggie_take_out-1.0-SNAPSHOT.jar
root      32688  32475  0 23:52 pts/0    00:00:00 grep --color=auto java
[root@localhost ~]# 

从查询结果可以看到进程id是17918

[root@localhost ~]# kill -9 17918
[root@localhost ~]# ps -ef | grep java
root      34303  32475  0 23:54 pts/0    00:00:00 grep --color=auto java
[root@localhost ~]# 

 

这时候再去访问刚刚的地址已经失效了:

如果你是瑞吉外卖请访问:http://192.168.23.128:8080/backend/page/login/login.html

说明进程已经关闭,进程服务无法进行访问了。 


网站公告

今日签到

点亮在社区的每一天
去签到