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
说明进程已经关闭,进程服务无法进行访问了。