SpringBoot项目部署到云服务器全流程

文章目录

  • 一、前期准备
    • (一)云服务器选择
    • (二)本地环境准备
    • (三)数据库准备(若项目需要)
  • 二、服务器配置
    • (一)获取服务器信息
    • (二)重置实例密码与重启
    • (三)安全组配置
  • 三、远程连接服务器
    • (一)SSH客户端选择
    • (二)建立连接
  • 四、服务器环境搭建
    • (一)安装宝塔面板(可选但推荐)
    • (二)安装JDK和数据库(通过宝塔面板或命令行)
    • (三)项目打包与上传
  • 五、项目部署与启动
    • (一)项目配置文件修改
    • (二)项目启动
    • (三)端口问题排查

一、前期准备

(一)云服务器选择

在将SpringBoot项目部署到云服务器之前,我们需要先准备一台云服务器。这里以阿里云为例,阿里云提供了多种配置的云服务器可供选择,我们可以根据项目的实际需求进行挑选。在选择时,需要考虑以下因素:

  1. 实例规格:如基础配置(2vCPU 2GiB)、标准配置(2vCPU 4GiB)、专业配置(2vCPU 8GiB)、增强配置(4vCPU 8GiB)等。对于一般的小型项目,基础配置可能就足够起步,但如果项目预计会有较高的并发量或较大的资源消耗,就需要选择更高配置的实例。
  2. 存储:云服务器通常包含系统盘和数据盘。系统盘用于安装操作系统,数据盘则用于存储项目文件、数据库数据等。要确保数据盘的容量能够满足项目的运行需求,特别是如果项目涉及大量数据存储或文件上传下载功能。
  3. 网络带宽:预估项目的网络流量,选择合适的带宽。如果项目需要快速传输大量数据,如视频流服务或频繁的数据同步,那么较高的带宽将是必要的。

在这里插入图片描述

在阿里云的产品页面中,我们可以找到云服务器ECS等相关产品,并根据上述因素进行配置选择。例如,选择一个合适的套餐,如99元套餐(包含2核2G、3M固定带宽、40G ESSD Entry盘),该套餐性价比高,适合初学者或小型项目进行试用和部署。同时,选择合适的操作系统镜像,如CentOS 7.9 64位(安全加固)等。

(二)本地环境准备

确保本地的Java开发环境已经安装并配置好,包括JDK(Java Development Kit)和Maven(项目构建工具)。JDK是运行Java程序的基础,而Maven则用于管理项目的依赖关系和构建过程。可以通过在命令行中输入java -versionmvn -v来检查它们是否正确安装并配置。

在这里插入图片描述

(三)数据库准备(若项目需要)

如果项目依赖数据库,如MySQL、PostgreSQL等,需要在云服务器上安装相应的数据库服务。以MySQL为例,在云服务器上执行安装命令,安装过程中设置好数据库的用户名、密码和字符集等参数。同时,在本地开发环境中,确保项目的数据库连接配置与云服务器上的数据库设置相匹配,包括数据库地址(通常为云服务器的公网IP地址)、端口号、用户名、密码以及数据库名称等。

二、服务器配置

(一)获取服务器信息

完成云服务器购买后,我们需要记录下服务器的公网IP地址、用户名和密码。这些信息将用于后续的远程连接和操作。公网IP地址是服务器在互联网上的唯一标识,通过它我们才能从外部访问服务器;用户名和密码则用于登录服务器进行管理操作。

(二)重置实例密码与重启

为了确保服务器的安全性,我们需要先重置实例密码。在阿里云控制台中找到云服务器ECS的实例管理页面,找到对应的实例,点击“重置实例密码”按钮进行密码重置操作。重置完成后,重启服务器使密码生效。不同版本的阿里云控制台界面可能略有不同,但大致位置和操作流程相似,如果在操作过程中遇到困难,可以参考阿里云的帮助文档或在线客服寻求支持。

(三)安全组配置

安全组用于管理服务器的端口访问权限,合理配置安全组规则可以有效保护服务器安全。在阿里云控制台中进入安全组配置页面,我们可以看到默认的安全组规则,也可以创建自定义的安全组。对于我们的SpringBoot项目部署,建议开放以下端口:

  1. 8888端口:用于宝塔面板(如果安装),宝塔面板是一款方便的服务器运维管理工具,通过它可以更便捷地管理服务器上的各种服务和应用。
  2. 22端口:用于SSH远程服务,这是我们远程连接服务器进行操作的主要端口,如通过SSH客户端(如Xshell)登录服务器进行命令行操作。
  3. 3306端口:如果项目使用MySQL数据库,需要开放该端口以允许外部应用连接数据库。
  4. 8080端口:SpringBoot项目启动默认端口,用于访问项目的服务接口。当然,如果项目中配置了其他端口,也需要相应地开放。

在这里插入图片描述

在配置安全组规则时,指定允许访问的IP地址范围。对于学习和测试环境,我们可以暂时将源IP设置为“0.0.0.0/0”,表示允许所有IP地址访问这些端口。但在生产环境中,为了更高的安全性,应该只允许特定的可信IP地址或IP地址段访问相关端口。例如,若要限制只有本地IP地址(如192.168.1.0/24网段)可以访问数据库端口3306,就在安全组规则中设置源IP为“192.168.1.0/24”。

三、远程连接服务器

(一)SSH客户端选择

推荐使用Xshell作为SSH客户端工具来连接远程服务器,当然,也可以选择其他类似的工具,如Putty等。Xshell提供了友好的用户界面和丰富的功能,方便我们进行远程操作。

(二)建立连接

在这里插入图片描述

打开Xshell,点击“新建”按钮创建一个新的连接会话。在会话属性中,设置以下参数:

  1. 协议:选择“SSH”,这是用于安全远程登录的协议。
  2. 主机:输入云服务器的公网IP地址,这是我们之前记录下来的服务器在互联网上的标识。
  3. 端口号:默认的SSH端口号为22,如果在安全组中修改了SSH端口号,需要在这里填写修改后的端口号。
  4. 用户名:填写服务器的用户名,通常为root或其他具有管理员权限的用户名。
  5. 密码:输入之前重置后的服务器密码。

设置完成后,点击“确定”按钮保存会话设置。然后在Xshell的会话管理器中,选中新建的会话并点击“连接”按钮,即可尝试连接到远程服务器。如果连接成功,将进入服务器的命令行界面,此时就可以在本地通过命令行操作服务器了。

四、服务器环境搭建

(一)安装宝塔面板(可选但推荐)

宝塔面板是一款功能强大的Linux服务器运维管理工具,它提供了可视化的界面,使我们能够更方便地管理服务器上的各种软件和服务。虽然不是必需的,但对于不熟悉命令行操作的用户来说,宝塔面板可以大大简化服务器环境的搭建和管理过程。

  1. 访问宝塔官网(bt.cn),根据服务器的操作系统版本选择相应的安装脚本。例如,对于CentOS系统,在SSH连接到服务器后,执行以下命令(注意将命令中的网址复制自宝塔官网最新的安装脚本地址):
    yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
    
  2. 安装过程大约需要2分钟左右,安装完成后,会在命令行中显示宝塔面板的登录网址、用户名和密码。注意,这里的用户名和密码是用于登录宝塔面板的,与服务器的用户名和密码不同。
  3. 复制登录网址到浏览器中,输入显示的用户名和密码,即可登录到宝塔面板的管理界面。在第一次登录时,可能会要求注册宝塔官网账号,注册后使用该账号登录宝塔面板。
    在这里插入图片描述

(二)安装JDK和数据库(通过宝塔面板或命令行)

  1. 通过宝塔面板安装(以MySQL为例)
    • 登录宝塔面板后,在软件商店中搜索“MySQL”,找到官方的MySQL版本并点击“安装”按钮。在安装过程中,可以选择合适的版本(如MySQL 8.0.24),并根据项目需求进行一些基本配置,如设置数据库的root用户密码等。
    • 安装完成后,在宝塔面板的数据库管理界面中,可以看到已安装的MySQL数据库信息。点击“添加数据库”按钮,创建项目所需的数据库,设置数据库名、用户名和密码等信息。同时,务必在“权限”设置中将访问权限修改为“所有人”,这样才能方便地通过外部工具(如Navicat)连接和管理数据库。否则,可能会遇到连接数据库时权限不足的问题。

在这里插入图片描述

  1. 通过命令行安装(以JDK为例)
    • 如果选择通过命令行安装JDK,首先需要从JDK官方网站下载适合服务器操作系统的JDK版本。例如,对于CentOS系统,可以下载JDK的rpm包。
    • 使用SSH连接到服务器,进入下载目录(假设下载到了/home目录),执行以下命令安装JDK(以JDK 8为例,实际版本号根据下载的文件而定):
      rpm -ivh jdk-8uXXX-linux-x64.rpm
      
    • 安装完成后,通过java -version命令检查JDK是否安装成功。如果显示JDK的版本信息,则表示安装成功。

(三)项目打包与上传

  1. 在本地项目根目录下,使用Maven命令对SpringBoot项目进行打包。打开命令行工具,进入项目根目录,执行以下命令:
    mvn clean package
    
    这将对项目进行清理,并生成一个可执行的JAR文件,通常位于项目的target目录下。例如,生成的JAR文件可能名为your-project-name.jar

在这里插入图片描述

  1. 将打包好的JAR文件上传到云服务器。可以使用FTP工具(如FileZilla)或通过SSH的文件传输功能(如在Xshell中使用SFTP)进行上传。以使用Xshell的SFTP为例,在Xshell的会话中,点击“新建文件传输”按钮,进入SFTP界面。将本地的JAR文件拖放到服务器上指定的目录中,例如/www/wwwroot/目录(可以根据实际情况选择合适的目录)。

在这里插入图片描述

五、项目部署与启动

(一)项目配置文件修改

在服务器上找到上传的项目JAR文件所在目录,打开项目的配置文件(通常为application.propertiesapplication.yml),修改数据库连接等相关配置。例如,如果项目使用MySQL数据库,需要将数据库连接的URL、用户名和密码修改为服务器上MySQL数据库的实际配置:

druid:url: jdbc:mysql://your-server-ip:3306/your-database-name?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghaiusername: your-database-usernamepassword: your-database-password

其中,your-server-ip是云服务器的公网IP地址,your-database-name是在服务器上创建的数据库名称,your-database-usernameyour-database-password是数据库的用户名和密码。

(二)项目启动

  1. 在服务器上进入项目JAR文件所在目录,使用以下命令启动SpringBoot项目:
    java -jar your-project-name.jar
    
    这将启动项目,并在控制台输出项目的启动日志。如果项目启动成功,将可以通过云服务器的公网IP地址和项目配置的端口号访问项目。例如,如果项目配置的端口号是8080,则可以在浏览器中输入http://your-server-ip:8080访问项目。
  2. 如果希望项目在后台运行,即关闭SSH连接后项目仍能继续运行,可以使用nohup命令:
    noohup java -jar your-project-name.jar &
    
    这样,项目将在后台持续运行,并且将输出日志写入到nohup.out文件中。可以使用ps -ef | grep your-project-name.jar命令查看项目的运行进程。

(三)端口问题排查

在项目部署过程中,经常会遇到端口相关的问题。如果无法通过公网IP地址和端口号访问项目,首先检查云服务器的安全组规则是否正确配置了相应端口的访问权限,确保端口已开放。其次,检查项目配置文件中的端口号是否与启动命令中使用的端口号一致,以及是否与服务器上其他应用程序的端口号冲突。另外,有些服务器可能还需要在防火墙中开放相应端口,如在CentOS系统中,可以使用firewall-cmd命令来管理防火墙规则。例如,要开放8080端口,可以执行以下命令:

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

通过以上步骤,我们就可以将SpringBoot项目成功部署到云服务器上,并通过公网访问项目服务。在部署过程中,可能会遇到各种问题,但只要按照上述流程逐步排查和解决,就能够顺利完成项目的部署上线。希望这篇博客能够帮助到大家,祝大家部署顺利!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/60608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【mongodb】社区版8:改变配置bindip和授权

更改配置 sudo systemctl restart mongod (base) root@k8s-master-pfsrv:/home/zhangbin# sudo tail -n 20 /var/log/mongodb/mongod.log 日志感觉是成功了:{"t":{"$date":"2024-11-19T19:57:47.076+08:00"

如何用通义灵码助力项目开发 | OceanBase obdiag 项目共建实践

本文来自 obdiag 项目共建的用户分享 一、背景 我的数据库探索之旅始于OceanBase。作为一位满怀好奇心的DBA,我内心始终怀揣着对数据库内部运作机制的无尽向往。开源如同一把钥匙,为我们这些求知欲旺盛的“好奇猫”解锁了通往新知的神秘大门。在众多分布…

网络安全,文明上网(2)加强网络安全意识

前言 在当今这个数据驱动的时代,对网络安全保持高度警觉已经成为每个人的基本要求。 网络安全意识:信息时代的必备防御 网络已经成为我们生活中不可或缺的一部分,信息技术的快速进步使得我们对网络的依赖性日益增强。然而,网络安全…

实时数据研发 | Flink技术栈

下周要开始接触一些实时的内容了,想来是很幸运的,这是我在新人培训上提问过技术前辈的问题:“想学习实时相关技术,但是部门没有类似的需求,应该如何提升?”当时师姐说先用心去学,然后向主管证明…

Spark SQL 之 QueryStage

ExchangeQueryStageExec ExchangeQueryStageExec 分为两种

探索 RocketMQ:企业级消息中间件的选择与应用

一、关于RocketMQ RocketMQ 是一个高性能、高可靠、可扩展的分布式消息中间件,它是由阿里巴巴开发并贡献给 Apache 软件基金会的一个开源项目。RocketMQ 主要用于处理大规模、高吞吐量、低延迟的消息传递,它是一个轻量级的、功能强大的消息队列系统&…

设计模式之 责任链模式

责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,旨在将多个处理对象通过链式结构连接起来,形成一条处理请求的链条。每个处理对象都有机会处理请求,或者将请求传递给链中的下一个对象。这样&#x…

Flink-Source的使用

Data Sources 是什么呢?就字面意思其实就可以知道:数据来源。 Flink 做为一款流式计算框架,它可用来做批处理,也可以用来做流处理,这个 Data Sources 就是数据的来源地。 flink在批/流处理中常见的source主要有两大类…

python开发之Linux

文章目录 1. 基础2. 进阶链接压缩/解压缩 文件权限用户远程操作编辑文件软件安装 1. 基础 # 查看当前目录下文件 ls# 查看当前目录 pwd# 清除界面内容 clear# 切换目录 cd# 创建目录 mkdir# 创建文件 touch 文件 vi 文件# 强制删除 rm -rf # 复制文件 cp 复制文件 复制文件路径…

【数据结构】七种常用排序总结

一、七种排序及其讲解 以下为七种排序的讲解: 【数据结构】插入排序——直接插入排序 和 希尔排序 【数据结构】选择排序——选择排序 和 堆排序 【数据结构】交换排序——冒泡排序 和 快速排序 【数据结构】归并排序 —— 递归及非递归解决归并排序 二、排序的…

计算机网络(14)ip地址超详解

先看图: 注意看第三列蓝色标注的点不会改变,A类地址第一个比特只会是0,B类是10,C类是110,D类是1110,E类是1111. IPv4地址根据其用途和网络规模的不同,分为五个主要类别(A、B、C、D、…

HashMap底层原理

jdk1.8之后hashmap底层结构 jdk1.8之后,是哈希表数据结构,也可以说是数组链表或红黑树,下图是没有添加数据的一个hashmap。 现在开始添加数据,看下面具体步骤 put操作 如下,我们来简单看看hashmap的put源码&#xff…

【GD32】(三) ISP基本使用

0 前言 有一块GD32的板子不知道为啥用着用着就下载不了程序了,没办法,只能另寻他法。作为STM32的平替,GD32的功能和STM32基本是一致的,所以也可以使用ISP来下载程序。于是就开始复活这块板子。 1 BOOT模式 对于熟悉STM32开发的人…

摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现

随着科技的不断进步,摄像机视频分析软件的发展已经为我们的生活带来了许多便捷。其中,LiteAIServer视频智能分析平台的玩手机打电话检测算法技术尤为突出,它利用先进的图像处理和人工智能技术,能够自动识别并监控视频中的玩手机或…

推荐几个 VSCode 流程图工具

Visual Studio Code(简称VSCode)是一个由微软开发的免费、开源的代码编辑器。 VSCode 发布于 2015 年,而且很快就成为开发者社区中广受欢迎的开发工具。 VSCode 可用于 Windows、macOS 和 Linux 等操作系统。 VSCode 拥有一个庞大的扩展市…

学习Prompt Turning

传统的微调因为代价很高,而且一旦权重很大,这种fine 微微的意思是调不动模型的,所以需要这种提示词调 mindnlp直接有 peft config peft_config PromptTuningConfig(task_type“SEQ_CLS”, num_virtual_tokens10) 方便我们进行prompt tunin…

2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略(详细解题思路)

在当下, 日益发展的时代,宠物的数量应该均为稳步上升,在美国出现了下降的趋势, 中国 2019-2020 年也下降,这部分变化可能与疫情相关。需要对该部分进行必要的解释说明。 问题 1: 基于附件 1 中的数据及您的团队收集的额…

若依-一个请求中返回多个表的信息

背景 主表是点位表关联子表 需要知道对应 合作商的信息关联子表 需要直到对应 区域的信息关联子表 需要直到对应 设备数量 实现的方案 关联实体相关的标签

AWTK-WEB 快速入门(1) - C 语言应用程序

先安装 AWTK Designer 用 AWTK Designer 新建一个应用程序 2.1. 新建应用程序 这里假设应用程序的名称为 AwtkApplicationC,后面会用到,如果使用其它名称,后面要做相应修改。 在窗口上放置一个按钮将按钮的名称改为 “close”将按钮的文本改…

客户流失分析综述

引言 客户流失这个术语通常用来描述在特定时间或合同期内停止与公司进行业务往来的客户倾向性[1]。传统上,关于客户流失的研究始于客户关系管理(CRM)[2]。在运营服务时,防止客户流失至关重要。过去,客户获取相对于流失…