Springboot项目的服务器部署与发布方式

 更新时间:2025年03月10日 16:40:26   作者:Kisaragi Jyunn  
本文记录了将Springboot项目部署到服务器并发布的过程,包括在IDEA中打包、选择服务器、连接服务器、安装环境、上传jar包、配置环境变量以及运行项目等步骤

Springboot 项目的服务器部署与发布

本文旨在记录第一次将Springboot项目部署到服务器并发布的过程、遇到的问题及解决办法。

一、在IDEA中将项目打包

设置访问端口号

在application.yml这个文件中加入(端口多少由自己设置)

利用idea打包

右侧边栏中点击Maven,打开lifecycle,找到其中的package选项,双击。

当看到BUILD SUCCESS说明已经打包成功了。

jar包保存在项目target文件夹中

二、 连接服务器

租用云服务器

市面上有许许多多的服务器,可自行选择。这里以Google cloud云服务器为例介绍。

1、访问 Google cloud 官网 https://cloud.google.com/,点击右上角“Start Free”按钮。

2、登录谷歌帐号

使用谷歌帐号登录,没有的话注册一个。

2019年,国家/地区选项栏已取消了“中国”选项,这里我们可以随便选一个,比如香港或者台湾。

3、填写注册信息

填写注册信息,包括姓名、地址、联系方式等。

绑定支持双币个人信用卡,会扣除1美元作为卡验证费用,验证通过后会原路返还。

4、完成注册

填写完上述资料后,点击“START MY FREE TRIAL”按钮,便提示已成功注册。获得 300 美元的赠金,一年内有效,而且承诺如果赠金用完,不会主动扣费。

创建VM实例

1、选择 “Computer Engine”

点击菜单中的 Compute Engine,或者直接点击热门产品栏中的“Compute Engine”

2、选择创建 VM 实例

点击创建按钮,来创建一个 VM 实例。

3、填写机器配置

填写名称,选择区域,机器类型等内容,右侧会显示每月的费用,注意累计费用不要超出赠金总额。这里选择了 1 个共享 vCPU + 1.7 GB 内存。

4、启动磁盘

选择启动磁盘,可以修改磁盘大小和类型,还可以选择操作系统。

5、填写网络接口信息

填写网络接口信息,外部 IP 选择固定 IP。

6、完成创建

确认机器配置信息后,点击创建按钮完成 VM 实例的创建。

防火墙配置

1、选择“查看网络详情”

点击实例信息右侧的更多图标,选择“查看网络详情”。

2、创建防火墙规则

点击“防火墙规则”,选择“创建防火墙规则”。

3、完成创建

创建防火墙规则,需要注意的是,目标一栏选择“网络中的所有实例”,不然外网无法访问。

三、通过xshell远程连接服务器

进入xshell官网

xshell官网地址 :https://www.xshell.com/zh/xshell/

1、点击下载

2、选择免费授权页面

3、下载XSHELL

连接服务器

方法一:手动配置

点击左上角文件下方的绿色按钮新建会话,弹出如下窗口。

  • 名称——会话名称
  • 协议——ssh连接选择协议
  • 主机——要连接的服务器ip
  • 端口号——要连接的服务器端口
  • 确定——确定建立新会话

方法二:命令行输入

在命令行中输入:

ssh root@IP号:端口号

四、在linux服务器安装环境上传jar包

1、首先需要熟悉一下linux的命令:

Linux命令速查表:https://quickref.cn/docs/linux-command.html

2、输入命令ls展示当前目录下文件

什么都没显示说明当前目录为空

3、使用mkdir命令创建目录

若出现以下情况,说明用户权限不够,需要添加权限或者使用root登录

添加用户添加权限方法:

首先进入root用户,打开终端

  • 新建用户并创建家目录
sudo useradd -d /home/xpt -m xpt 
  • 更改为bash命令
sudo usermod -s /bin/bash xpt
  • 设置密码
sudo passwd xpt
  • 设置sudo权限
  sudo chmod u+w /etc/sudoers
  sudo vi /etc/sudoers

4、cd命令进入目录

5、使用rz命令上传jar包

弹出打开窗口,找到项目中的target目录,找到jar包并选择打开

上传完毕后使用 ls 命令,jar包已成功上传。

(在上传过程中可能出现如下报错:)

(出现乱码、连接断开,并且无法通过命令行输入重新连接)

失败原因:

经过查阅资料,有可能是因为windows的文件带有一些特殊字符,编码方式不同,导致传输失败。

解决方法:

重新打开会话重新连接服务器,并使用rz -be 命令

安装JDK

错误方法:

将windows系统中的JDK压缩并通过rz命令上传至linux服务器,通过zip命令解压JDK,并配置环境变量。

结果:

无法使用

正确方法:

1、进入官网下载

官网 - 历史版本下载地址:https://www.oracle.com/java/technologies/downloads/archive/

选择一款JDK后,选择x86Linux系统的版本下载

2、将JDK上传至Linux服务器

  • 使用mkdir命令创建一个java目录
mkdir java
  • 使用cd命令进入java目录
cd java
  • 使用rz命令上传JDK压缩包
rz

使用tar -zxvf命令解压JDK压缩包

tar -zxvf jdk-20.0.2_linux-x64_bin.tar.gz  

压缩完成后会出现新的文件夹

配置环境变量

1、配置profile文件

通过vi命令打开/etc/profile文件

点击键盘中的INSERT按钮,进入编辑。

在文件的最后加上以下代码:

export JAVA_HOME=/home/wrz/java/jdk-20.0.2export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

(注意第一句 export JAVA_HOME=/home/wrz/java/jdk-20.0.2是自己的jdk的路径)

按下ESC退出编辑模式,输入:wq! 保存并退出

报错:

原因:权限不足

解决方法:使用sudo语句或使用root账号登录

(输入密码时不会显示)

编辑完路径后使用wq!保存并退出。

2、重新加载配置文件

使用source命令

source /etc/profile 

java -version 命令可使用,路径配置完成。

五、 运行项目

nohup命令

用途:

不挂断地运行命令。

语法:

nohup Command [ Arg … ] [ & ]
  • 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
  • 如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
  • 如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

退出状态:

该命令返回下列出口值:   

  • 126 可以查找但不能调用 Command 参数指定的命令。   
  • 127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。   
  • 否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

&命令

用途:

在后台运行

nohup command &  

通过nohup和&命令可以实现项目在服务器后台一直挂载运行

1、使用nohup命令运行jar包

nohup java -jar Bolg-0.0.1-SNAPSHOT.jar &   

2、查看项目日志

tail -500f nohup.out  

3、查看进程

使用语句

ps -ef  

至此,项目已在服务器端运行。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java基于UDP实现图片群发功能

    java基于UDP实现图片群发功能

    这篇文章主要为大家详细介绍了java基于UDP实现图片群发功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Springboot+devtools配置热部署过程

    Springboot+devtools配置热部署过程

    SpringBoot提供的spring-boot-devtools模块可以实现应用的热部署,极大提升开发效率,通过添加POM依赖、配置yml文件、使用IDE快捷键等步骤,可以无需手动重启即可自动加载变更,这种方式不仅适用于静态文件的自动加载,也适用于整个SpringBoot工程,是提高开发效率的有效手段
    2024-11-11
  • Mybatis关联映射举例详解

    Mybatis关联映射举例详解

    关联关系是面向对象分析、面向对象设计最终的思想,Mybatis完全可以理解这种关联关系,如果关系得当,Mybatis的关联映射将可以大大简化持久层数据的访问
    2022-07-07
  • java基于反射得到对象属性值的方法

    java基于反射得到对象属性值的方法

    这篇文章主要介绍了java基于反射得到对象属性值的方法,结合实例形式分析了java基于反射获取对象属性值的相关实现方法与操作技巧,需要的朋友可以参考下
    2017-03-03
  • JavaBean实体类处理外键过程解析

    JavaBean实体类处理外键过程解析

    这篇文章主要介绍了JavaBean实体类处理外键过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • IntelliJ IDEA 2020.1 EAP4 发布,重命名/更改签名新功能一览

    IntelliJ IDEA 2020.1 EAP4 发布,重命名/更改签名新功能一览

    这篇文章主要介绍了IntelliJ IDEA 2020.1 EAP4 发布,重命名/更改签名新功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Java线程通信及线程虚假唤醒知识总结

    Java线程通信及线程虚假唤醒知识总结

    今天给大家带来的是关于Java线程的相关知识,文章围绕着Java线程通信及线程虚假唤醒的知识展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • IntelliJ IDEA编译项目报错

    IntelliJ IDEA编译项目报错 "xxx包不存在" 或 "找不到符号"

    这篇文章主要介绍了IntelliJ IDEA编译项目报错 "xxx包不存在" 或 "找不到符号" ,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • PowerJob的AliOssService工作流程源码解读

    PowerJob的AliOssService工作流程源码解读

    这篇文章主要介绍了PowerJob的AliOssServiceg工作流程源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Java自动拆箱空指针异常的解决

    Java自动拆箱空指针异常的解决

    这篇文章主要介绍了Java自动拆箱空指针异常的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论