前言与注意
这几天在Linux中上线之前的小项目时,遇到了很多的问题,Linux镜像的选择,jdk,
mysql在linux中的下载,使用finallshell连接linux,使用tomcat连接linux中的数据库........
在下面的注意事项中我会将我所遇到的问题提一下。
注意事项
1.Windows中打包的springboot项目是64位的,因此我们选择的Linux镜像也必须是64位的。
2.Linux中使用的jdk版本不得低于Windows下jdk版本。
3.linux的防火墙必须打开(否则Navicat连接数据库,Windows下访问项目都会失败)。
暂时关闭可用systemctl stop firewalld.service。
4.linux中数据库名,表名,数据库密码必须和Springboot项目中配置的一致。
5.使用finallshell连接的Linux用户一定要是root账户,否则无法正常导入打包的项目。
具体步骤
在maven中将项目打包,注意Springboot项目一定要有如下插件
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>3.1.4</version>
</plugin>
如果没有该插件,打包的项目在linux中无法正常启动。
启动linux,使用finallshell连接(方便各种包的导入,与复制粘贴各种语句)
切目录,放到 /下的usr下的local,创建app目录,将打包好的Springboot项目导入app目录下,在finallshell中
切好目录后选择最后一个按钮,选择上传即可。
导入后,输入以下指令,启动项目。(-jar后面是你打包文件的包名)
java -jar springboot_07_ssmp-0.0.1-SNAPSHOT.jar
去windows下的浏览器访问,
记得ip不是127.0.0.1(localhost)而是你linux的ip,
如果无法访问检查是不是linux的防火墙没有关闭。
访问过程不再展示。
问题:这种访问,会将整个屏幕霸占,正常情况下我们可以使用ctrl+c关闭当前项目,如果我们清屏后则无法通过这种方法
1.如何不霸屏?
2.如何采用另外一种方法(不使用ctrl+c)杀死,刚才启动的项目?
1.nohup java -jar springboot_07_ssmp-0.0.1-SNAPSHOT.jar > server.log 2>&1 & 执行后可以看到进程号,可执行相应指令杀死进程。
这段命令是在Linux环境下运行一个Java的Spring Boot应用程序,并将输出重定向到一个名为server.log的文件中。让我逐步解释一下:
nohup: 这个命令可以在你退出当前登录会话后继续在后台运行正在执行的命令或程序,即使你断开了与服务器的连接。
java -jar springboot_07_ssmp-0.0.1-SNAPSHOT.jar: 这是要运行的Java程序的命令。java -jar用于执行一个打包好的Java应用程序,springboot_07_ssmp-0.0.1-SNAPSHOT.jar是要执行的Java可执行文件。
server.log 2>&1: 这部分是将标准输出(stdout)和标准错误输出(stderr)都重定向到一个叫做server.log的文件中。>表示重定向标准输出,2>&1表示将标准错误输出重定向到标准输出,也就是和标准输出一起输出到server.log文件中。
&: 在命令的末尾加上&符号,表示让这个命令在后台运行,这样你就可以继续在同一个终端窗口中执行其他命令了。
因此,这段命令的作用是在后台运行一个Java的Spring Boot应用程序,并将所有的输出(包括标准输出和标准错误输出)保存到server.log文件中(该文件在启动项目的同级目录下)。
如何查看目前所有运行的进程呢?
使用ps -ef | grep "java -jar"查询到进程号。
这条命令的含义是在Linux系统中,使用ps -ef列出当前所有进程的详细信息,然后通过管道|将这些信息传递给grep "java -jar"进行过滤。
具体来说:
ps命令用于显示当前进程的状态。
-ef选项表示显示所有进程的详细信息,包括命令行参数。
|管道符用于将前一个命令的输出作为后一个命令的输入。
grep "java -jar"用于在ps命令的输出中过滤出包含"java -jar"字符串的行,从而找到正在运行的Java进程。
执行 kill -9 进程号
可以杀死相应进程
上面简述了大致步骤,如有错误欢迎指正~