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,我内心始终怀揣着对数据库内部运作机制的无尽向往。开源如同一把钥匙,为我们这些求知欲旺盛的“好奇猫”解锁了通往新知的神秘大门。在众多分布…

Java、Android引用类型

Java/Android中有四种引用类型,分别是: Strong reference - 强引用 Soft Reference - 软引用 Weak Reference - 弱引用 Phantom Reference - 虚引用 不同的引用类型有着不同的特性,同时也对应着不同的使用场景。 Strong reference - 强引用…

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

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

微前端基础知识入门篇(二)

概述 在上一篇介绍了一些微前端的基础知识,详见微前端基础知识入门篇(一)。本文主要介绍qiankun微前端框架的实战入门内容。 qiankun微前端实践 通过Vite脚手架分别创建三个程序,主应用A为:vite+vue3+ts,两个微应用分别为B:vite+vue3+ts;C:vite+React+ts。因为qiankun的…

实时数据研发 | Flink技术栈

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

DataGear 企业版 1.3.0 发布,数据可视化分析平台

DataGear 企业版 1.3.0 已发布,欢迎体验! http://datagear.tech/pro/ 企业版 1.3.0 新增看板全局导入库管理功能、统一登录功能改进、安全增强,具体更新内容如下: 新增:新增看板全局导入库管理功能,支持…

Spark SQL 之 QueryStage

ExchangeQueryStageExec ExchangeQueryStageExec 分为两种

el-table根据指定字段合并行和列+根据屏幕高度实时设置el-table的高度

文章目录 html代码script代码arraySpanMethod.js代码 html代码 <template><div class"rightBar"><cl-table ref"tableData"border :span-method"arraySpanMethod" :data"tableData" :columns"columns":max-…

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

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

设计模式之 责任链模式

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

Flink-Source的使用

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

python开发之Linux

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

OceanBase 驱动类获取数据库精确类型 “Oracle|MySQL”

当我们需要获取 DataSource 对象所连接的数据库的数据库名称时&#xff0c;正常是通过如下代码来获取&#xff1a; String databaseName dataSource.getConnection().getMetaData().getDatabaseProductName();我们知道 OceanBase 数据库企业版的租户是区分 Oracle 和 MySQL 两…

element-plus入门教程:Button

一、Button组件概述 Element Plus的Button组件是一个常用的操作按钮&#xff0c;提供了多种类型、尺寸、状态等配置选项&#xff0c;以满足不同的交互需求。 二、安装Element Plus 在Vue 3项目中&#xff0c;可以通过npm或yarn来安装Element Plus。 npm install element-pl…

深入解析 Cron 表达式高级用法:Spring 与 Linux Crontab 的全面对比与实践20241120

深入解析 Cron 表达式高级用法&#xff1a;Spring 与 Linux Crontab 的全面对比与实践 任务调度是后台服务中的重要组成部分&#xff0c;无论是定期数据备份、日志归档还是周期性报表生成&#xff0c;Cron 表达式始终是描述这些任务规则的核心工具。本文将聚焦 Spring Cron 表…

python中的map、split、join函数的作用 => ACM输入输出流

map(func,iter) lst_str ["1", "2", "3"] # 得到lst_num为[1, 2, 3] lst_num list(map(int, lst_str))如果想把一个列表里的所有元素批量地调用某一个函数&#xff0c;并映射得到一个新的列表&#xff08;原列表中元素相对位置不变&#xff0…

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

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

【AI日记】24.11.23 学习谷歌数据分析初级课程-第4课

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 核心工作 内容&#xff1a;学习谷歌数据分析初级课程地址&#xff1a;第四课《从脏数据到干净数据的处理》时间&#xff1a;4 小时评估&#xff1a;不错&#xff0c;完成 读书 书名&#xff1a;權力與進步时…

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

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