欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Springboot项目jar包部署到服务器

程序员文章站 2024-02-02 22:55:34
...

最近在帮忙把一个后端项目部署到服务器上,由于自己也是第一次弄服务器,记录一下踩坑过程。

项目部署大致分为三个部分:

  1. 服务器环境安装测试
  2. 项目打包
  3. 上传服务器运行

一. 服务器环境安装

本项目采用的是以jar包形式部署,使用springboot内置的tomcat,所以不需要另外再安装tomcat;只需要安装java环境,数据库,由于这个项目使用了nginx反向代理端口,安装了nginx;
安装环境网上都有很多教程的,我这里就不再重复了,推荐一位大神的安装博客,用的是ubutnu系统,java,tomcat,maven,nginx的安装都有:
环境安装参考

踩坑记录:
  1. 修改配置文件的时候,要添加的内容前面不能加# ,#是注释…
 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

踩的第一个坑,还莫名奇妙了很久,找了很久的原因,后来才发现自己菜到了一种人神共愤的地步…

  1. 在安装mysql数据库的时候,我执行的是
    # sudo apt-get install mysql-server mysql-client
    但是系统并没有提示输入密码,安装完成后连接数据默认密码为空,需要用生成的临时密码登录进入数据库修改root密码:推荐解决方案:修改数据库密码

  2. 修改数据库配置文件,一般是在/etc/mysql/my.cnf里面的[mysql]下修改,但是我的my.cnf里面包含了其他的文件
    Springboot项目jar包部署到服务器
    所以只好依次继续查找配置到底在哪儿,最后再/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