目录
一、环境配置
二、建构项目并打包
三、上传Jar包到服务器, 并运行
3.1 上传Jar包
3.2 运行 jar 包
3.3 开放端口号
四、其他问题
4.1 运行异常问题
4.2 杀掉进程
五、总结
一、环境配置
如果本地项目是SpringBoot项目,使用的数据库是MySQL,那么就需要在Linux系统上安装JDK,MySQL,需要跟本地项目使用的版本一致。可参考上篇内容:
Linux搭建Java部署环境:安装 JDK 和 MySQL 的教程
接着在Linux系统上导入本地项目所用的sql文件,完成之后,修改本地项目里的数据库配置,改为Linux系统上的数据库用户名和密码。并且将日志文件的位置改为Linux系统上的文件位置(位置随意,没有的话可以提前建一个)。
如果配置文件有两个,专门设置了本地环境运行和线上环境运行的配置文件,那么可以如下操作:
针对不同平台创建不同的配置文件,要求名字为 application-XXX.yml 或者 application-XXX.properties 。以下以 application-XXX.yml为例:
(固定格式,只有后面的字母可以修改)
application-dev.yml :
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
application-prod.yml :
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
在主配置文件
application.yml
中指定配置文件, 并删除数据库相关配置 :
spring:
profiles:
active: prod
二、建构项目并打包
在本地使用maven进行打包。如果Test代码中有与环境配置相关的操作(比如数据库相关的操作),打包会失败,点击如下图标,可以跳过测试打包,随后点击点击 clean->package :
三、上传Jar包到服务器, 并运行
3.1 上传Jar包
直接拖动打好的jar包到xshell窗口即可完成文件的上传:
Xshell 可以直接拖动文件到窗口,达到上传文件的目的,如果使用其他客户端,不支持文件的上传,需要借助 lrzsz 命令:
上传文件:
sz filename
下载文件:
rz
执行该命令后,在弹出框中选择要上传的文件即可,上传的速度取决于网络。
问题: 如果执行上述命令之后,提示 Command 'XX' not found,表示当前云服务器未安装lrzsz 命令,需要先进行安装。
安装 lrzsz:
apt-get install lrzsz
3.2 运行 jar 包
nohup java -jar blog-spring-0.0.1-SNAPSHOT.jar &
nohup : 后台运行程序,用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。语法格式:nohup Command [ Arg … ] [ & ]
参数说明:Command:要执行的命令。Arg:一些参数,可以指定输出文件。&:让命令在后台执行,终端退出后命令仍旧执行。
3.3 开放端口号
如果外网需要访问该服务,需要先服务器防火墙开放对应的端口号。
本着服务器安全的原则,云服务器上的端口非必要不开启。比如常见端口号:数据库 3306 , Redis 6379,尽可能避免开放,而是采用其他方式来连接,比如配置隧道的方式。
以腾讯云服务器举例:
1) 进入防火墙管理页面
2) 添加规则
端口号写需要开放的端口号,多个端口号以逗号分割。
完成之后就可以验证了。访问项目: http://IP:Port/blog_login.html 。IP改为云服务器的IP,Port改为项目的端口号,可以正常访问即可。
四、其他问题
4.1 运行异常问题
一个程序的正常运行,需要程序的正确和环境的正确。同样的代码在Windows上可以运行成功,不一定在 Linux上运行成功。不同的系统对代码的理解和支持是不同的。比如Windows系统对MySQL不区分大小写,Linux区分大小写。
服务不能正常访问的原因有很多,主要分以下方面:
1. 服务未启动:
- 使用 ps -ef|grep java 查看程序是否在运行。
- 使用 curl http://127.0.0.1:8080/blog_login.html 看下是否有返回html页面, 如果有返回, 说明程序启动成功了, 考虑端口未开放。
- 如果未启动成功, 需要查看对应的日志, 根据原因来分析:数据库不存在;表不存在(区分大小写) ;数据库密码不正确;Jdk 安装版本不对, 或者未安装;mysql未设置密码 等等。
2. http端口未开放:
检查云服务器防火墙/安全组是否开放相应端口(如8080)
4.2 杀掉进程
如果我们需要重启服务,或者重新部署等,都需要先停止之前的服务。
查看当前服务的进程:
ps -ef|grep java
上图35443 就是该服务的进程。
杀掉进程:
kill -9 PID
五、总结
- 连接Linux服务器的方式有很多,xshell只是其中一种,xshell是一个客户端,而非服务器。
- Ubuntu 软件管理工具是apt,其他的linux发性版本软件包管理工具不同,比如CentOS是使用yum来管理软件的。
- SpringBoot可以使用多个配置文件来完成不同平台的配置。
- 在Window上可以运性成功的代码,在Linux上不一定能运性成功。
- 启动程序需要使用nohup后台运行,需要停止服务时, 使用kill命令。