Springboot项目jar包部署到服务器
最近在帮忙把一个后端项目部署到服务器上,由于自己也是第一次弄服务器,记录一下踩坑过程。
项目部署大致分为三个部分:
- 服务器环境安装测试
- 项目打包
- 上传服务器运行
一. 服务器环境安装
本项目采用的是以jar包形式部署,使用springboot内置的tomcat,所以不需要另外再安装tomcat;只需要安装java环境,数据库,由于这个项目使用了nginx反向代理端口,安装了nginx;
安装环境网上都有很多教程的,我这里就不再重复了,推荐一位大神的安装博客,用的是ubutnu系统,java,tomcat,maven,nginx的安装都有:
环境安装参考
踩坑记录:
- 修改配置文件的时候,要添加的内容前面不能加# ,#是注释…
export JAVA_HOME=/usr/local/java/jdk1.8.0_241
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
踩的第一个坑,还莫名奇妙了很久,找了很久的原因,后来才发现自己菜到了一种人神共愤的地步…
-
在安装mysql数据库的时候,我执行的是
# sudo apt-get install mysql-server mysql-client
但是系统并没有提示输入密码,安装完成后连接数据默认密码为空,需要用生成的临时密码登录进入数据库修改root密码:推荐解决方案:修改数据库密码 -
修改数据库配置文件,一般是在/etc/mysql/my.cnf里面的[mysql]下修改,但是我的my.cnf里面包含了其他的文件
所以只好依次继续查找配置到底在哪儿,最后再/etc/mysql/mysql.conf.d/mysqld.cnf里面找到了数据库的相关配置
安装数据之后记得要在配置文件里面设置编码,不然会出现编码不统一,不能存中文的情况。
二.项目打包
我用的是idea,idea有两种打jar包的方式,都比较简单,我自己比较喜欢命令行的形式。
在pom文件里添加打包依赖:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
在控制台进入项目根目录,执行命名mvn clean package 就可以了,然后会生成target文件存放jar包,这种打包方式可以自己命名jar包,设置版本之类的信息。artifacts的打包方式生成的是classes文件存储jar包
踩坑记录
<skip>true</skip>
是跳过测试的意思,我本地数据库和服务器数据密码不一样,之前打包没跳过测试,每次打包都要把测试运行一遍,然后由于密码不一样连不上数据库就疯狂报错,没明白怎么回事,看了很久才发现这个问题。
三. 上传jar包运行
在服务器上新建文件夹data,将jar包从target文件中复制出来,上传到服务器data文件里,java -jar xxx.jar
前台运行jar包,会直接占用服务器终端,xshell关闭后jar包会停止运行。nohup java -jar xxx.jar &
后台运行jar包,可以直接关闭xshell,或者是写一个xshell启动jar包的脚本运行也可以,运行日志输出存在跟jar包同级的nohup.out里面
四.linux命名
第一次弄服务器,用到这么多linux操作命令,记录一下。ll:
查看目录下的文件,后面可以跟目录,不加目录就是查看当前目录下的文件;tail 文件名 :
查看文件内容rz:
上传文件Ctrl+z/c:
强制退出当前界面(在查看日志或者阅读了文件内容之后的退出方式)sudo vim xxx:
以vim模式打开文件,修改的文件的时候会用到,打开文件后按’a’进入编辑模式,编辑完之后,退出:
ESC–> : --> wq保存并退出;q! 不保存退出;q 退出
五.nginx反向代理端口
nginx的安装前面的推荐博客里面也有,我初次使用nginx,也是各种从网上寻找配置,并不熟练
基本配置是
http下的
http{
sever{
listen 80;// 监听端口
server_name www.xxx.xx; //解析的域名或者是ip
}
location /{
proxy_set_header Host $host; // 主机
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
// 这里是你要把www.xxx.xx地址的请求给谁处理,localhost也可以写成ip
}
// 同级的location可以配置多个,将不同的项目代理到不同的端口处理
location /www{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://ip:端口号;
}
请求的时候就可以直接输入www.xxx.xxx/接口url
推荐阅读
-
idea将web项目打成war包并运行到tomcat服务器上
-
Springboot项目打包部署通过Java-jar运行
-
Springboot项目jar包部署到服务器
-
idea将web项目打包成war部署到服务器的tomcat
-
springBoot生成jar包,部署linux系统(一)
-
使用 Docker 部署 SpringBoot 项目 (Jar 包、War包)
-
jenkins部署SpringBoot的jar包项目到docker容器并运行
-
使用Docker运行SpringBoot的WEB应用程序(从生成jar包到运行)
-
idea部署springboot项目到远程docker,centos7
-
dubbo+springboot分模块项目发布为jar包的方法