手把手教你实现:将后端SpringBoot项目部署到华为云服务器上

news2024/11/27 3:48:12

前言

前提:有一个后端项目,项目能够运行在本地,可以通过本地访问(localhost)
如果没有可以看这篇:一个基于SpringBoot的后端项目

注册华为云账号

华为云官网

购买云服务器

产品 -> 华为云耀云服务器L实例 或者 ESC弹性云服务器-> 购买
有免费试用的,也有包年的,也有三个月的,具体容量、带宽参数根据自己的需求(挑最便宜的)来定。

配置服务器环境

其实所谓的服务器就是 一台 远程的电脑主机,当你购买后,会给你一个账号和密码,让你通过远程登录去操作这台主机。
我们需要在这台主机上配置好项目运行的基本环境,如 JDK、Mysql数据库等。
然后只需要将项目编译打包成jar文件,并上传布置到 这台主机,运行启动即可。

登录服务器

根据购买提供的账号远程登录云主机。

登录后,你就可以看到一个黑乎乎的屏幕:

配置JAVA SDK 21

先查看云服务器的主机类型,一般来说是购买的云主机都是 Linux操作系统
入口为华为云官网: 控制台 -> 我的资源 ->云服务器

下载Java Sdk 21:
Java JDK 官网
找到和你云主机类型符合的包,比如这个:
在这里插入图片描述
下载后,在云主机上找到,opt文件夹,新建一个文件夹叫jdk, 然后将 下载的JDK上传到这个目录。

解压JDK

输入命令:
进入这个目录

# cd /opt/jdk

查看目录的文件

# ls

解压

# tar -zxvf jdk-21_linux-x64_bin.tar.gz

配置java home路径

# cd /
# vim /etc/profile

按下 键盘 “i” 键, 在后面新增以下内容:
(注意这个 JAVA_HOME是否和你JDK解压路径一致)

export JAVA_HOME=/opt/jdk/jdk-21

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVAHOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

按下 键盘 “ESC” 键,然后输入 :wq 回车。

:wq

输入 java -version 看是否配置成功

# source /etc/profile
# java -version

在这里插入图片描述

配置Mysql

配置mysql会遇到很多坑,先打个预防针,各种数据库问题都可能遇到,同时Mysql 8.0的sql语法也有所变化。

下载Mysql

Mysql 官网

根据你所购买的云主机,选择合适的型号:

上传到指定目录 /opt/mysql

在opt文件夹中,单击右键新建文件夹 mysql, 然后上传刚下载的mysql包。

解压 mysql

# cd /opt/mysql
# ls
# tar -xf mysql-server_8.1.0-1ubuntu22.04_amd64.deb-bundle.tar

安装libmecab2包

这个包有些云主机会没有导致,mysql安装失败。

# cd /
# sudo apt-get update
# sudo apt-get install libmecab2

安装 Mysql 包

# cd /opt/mysql
# ls

你可以看到解压后的mysql有很多个 .deb类型的包。
我们需要安装以下4个包:

libmysqlclient22_8.1.0-1ubuntu22.04_amd64.deb
mysql-common_8.1.0-1ubuntu22.04_amd64.deb
mysql-server_8.1.0-1ubuntu22.04_amd64.deb
mysql-client_8.1.0-1ubuntu22.04_amd64.deb

但是,由于这4个包还会有依赖包,所以安装上面几个包时,他会提示你要先安装依赖包
所以以下依赖包也是需要安装的。

mysql-community-client_8.1.0-1ubuntu22.04_amd64.deb
mysql-community-client-core_8.1.0-1ubuntu22.04_amd64.deb
mysql-community-client-plugins_8.1.0-1ubuntu22.04_amd64.deb

mysql-community-server_8.1.0-1ubuntu22.04_amd64.deb
mysql-community-server-core_8.1.0-1ubuntu22.04_amd64.deb

安装命令

# sudo dpkg -i 文件名.deb

输入命令,回车后,它会有安装是否成功提示,如果出现依赖缺少,它是会提示你的,那你请先安装它所提示的包。
所有包都安装成功后,查看是否可以工作。

# mysql -V

在这里插入图片描述

修改mysql端口号

# cd /etc/mysql/mysql.conf.d
# vim mysqld.cnf

按下 键盘 “i” 键, 在[mysqld]标签下面新增以下内容:

port = 3308

在这里插入图片描述

按下 键盘“ESC” ,输入 :wq退出

:wq

端口号未必就要3308,可以自己定义,主要目的是为了避免mysql默认端口号3306被占用导致mysql访问不了的问题。

启动mysql

# cd /
# service mysqld start
# service mysqld status

如果你看到这个,说明你的Mysql启动成功了。
在这里插入图片描述

创建新用户

# mysql -u root -p
# 在输入密码地方,直接回车

在这里插入图片描述
sql语句不区分大小写,用大写还是小写看你个人习惯。

> CREATE USER '用户名'@'%' IDENTIFIED BY '密码';

查看目前所有的mysql用户账号

> SELECT user,host FROM mysql.user;

在这里插入图片描述

授予新用户远程访问的权限

如果上面👆 root账号的 host 为 localhost, 你需要先执行

> update user set host='%' where user='root';

授予远程权限

> GRANT ALL PRIVILEGES ON *.* TO '新用户名'@'%' WITH GRANT OPTION;
> flush privileges;

根据你的后端项目建立数据库、建立表、测试

建立数据库

> create DATABASE 数据库名;
> use 数据库名;

建立表
【字段名 类型 不为空 默认值 】按照这个顺序
【PRIVARY KEY】修饰的字段为key
【UNIQUE KEY】修饰的字段为key且为唯一的key。

> create TABLE 表名(
  uid INT NOT NULL auto_increment,
  字段名 CHAR(10) NOT NULL,
  字段名 VARCHAR(50) NOT NULL,
  字段名 INT DEFAULT 0,
  UNIQUE KEY (uid)
)ENGINE = INNODB;

往表中添加数据以及查询数据:

> insert into 表名(字段名,字段名....) values(字段值,字段值,字段值);
> select * from 表名;

远程连接mysql

退出数据库操作模式

> exit;

修改mysql配置文件

# cd /etc/mysql/mysql.conf.d
# vim mysqld.cnf

按下 键盘 “i” 键, 在[mysqld]标签下面新增以下内容:

bind-address    = xx.xx.xx.xx(华为云服务器分配的公网IP地址)

在这里插入图片描述
输入完成后,按“ESC”键,输入 :wq 保存退出。

华为云服务器分配的公网IP地址入口在:
华为云控制台 -> 我的资源 -> 云服务器

开放远程端口

华为云控制台 -> 我的资源 -> 云服务器 -> 安全组 -> 入方向规则 ->添加规则

  1. 添加 8080端口(你Sprig Boot项目启动时的端口,如果Spring Boot项目没有设置,默认是8080)
  2. 添加 3308端口 (你Mysql 刚才设置的端口,默认是 3306)
    在这里插入图片描述

测试远程连接是否成功

下载 Mysql WorkBench, 官网地址
安装完成应用后,打开应用
新建连接 -> 输入Mysql数据库远程地址、端口号、用户名、密码

如果连接成功,继续往下走,否则需要去看一下连接不上的原因,查看mysql配置文件是否开放了远程连接,远程连接地址是否正确,以及华为云安全组是否开放了 端口号。

修改Spring Boot项目关于Mysql的连接配置

在这里插入图片描述

编译后端项目为jar文件

如果你的后端项目使用Gradle管理的,编译方法如下:
gradle 打包 springboot项目
如果你的后端项目使用maven管理的,编译方法如下:
maven 打包 springboot项目

上传项目jar文件到云服务器

在根目录新建一个文件夹,命名为projects, 然后单击右键上传文件。
上传成功后,运行项目。

# cd /
# cd /projects
# nohup java -jar 项目编译.jar > spring.log &

运行日志,你就可以在 /projects/spring.log 双击文件中看到了
在这里插入图片描述

最后

最后就是你正常访问你的后端项目API了。
比如我的:

接口域名:http://124.71.83.237:8080
接口路径:/register
请求方式:POST
请求体参数:
{
  "name": "xxxxx",
  "phoneNumber": "1858346xxxx""password": "xxxxxx"
}
返回结构:
{
  "code": 200,
  "message": "操作成功",
  "data": []
}

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

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

相关文章

数据结构--插入排序

目录 插入排序 算法实现 算法效率分析 插入排序的优化-折半插入排序 最终的结果:(方式) 优化-折半查找的代码实现 ​回顾 插入排序 算法实现 算法效率分析 空间复杂度和问题规模无关 插入排序的优化-折半插入排序 之前的元素有序&am…

【2023集创赛】加速科技杯三等奖作品:私密性高精度刷手身份认证系统

本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)加速科技杯三等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼…

pdf怎么压缩?pdf压缩方法大全

pdf怎么压缩?PDF是一种广受欢迎的文件格式,相信现在有很多用户都在使用。这是因为PDF具有出色的兼容性,适用于包含数据、图片、表格和文字等各种内容,不管是在电脑、手机、平板上,都可以让文件以最规范的方式打开呈现给…

垃圾收集器ParNewCMS与底层三色标记算法

JVM字节码文件class:(16进制) 前四个字节码CA FE BA BE,固定logo包含lineNumberTable:用于异常的定位默认第一个localVariableTable为this,无构造方法也会存在最大接口数FFFF 》65535包含最大操作数栈深度…

【算法思想】贪心

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

postgresql,在pgAdmin中修改列名称和列的类型

修改列名 alter table "表名称" rename "旧列名" to "新名称";是否要加引号要看情况,不加引号如果报错,就要加上。无引号:那么所有内容将自动为小写,不区分大小写;带引号:所…

网络安全,weblogic漏洞复现

WebLogic是美国Oracle公司出品的一个Java应用服务器,是一个基于JAVAEE架构的中间件,用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用。 2|0弱口令登陆部署shell文件 App Weblogic Path weblogic/weak_password 2|1介绍 用户管理…

Error: @vitejs/plugin-vue requires vue (>=3.2.13) or @vue/compiler-sfc

启动项目 npm run dev报错: vue3项目运行报错,试了很多方法都无法解决时,请再查看一下是否node版本是否正确,nodejs版本不能低于 16

安防视频/集中云存储平台EasyCVR(V3.3)部分通道显示离线该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

MySQL系统架构设计

MySQL 一、MySQL整体架构1.1 SQL接口1.2 解析器 Parser1.3 查询优化器 Optimizer1.3.1 逻辑优化1.3.2 物理优化1.3.3 explain 1.4 缓存 Cache1.5 存储引擎 Stroage Management1.6 一条查询SQL的执行流程 二、缓存池(Buffer Pool)2.1 Buffer Pool 预读机制…

【JVM】运行时数据区之方法区——自问自答

开局从康师傅那里借图几张 线程共享与私有 《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。” 但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆)&#…

React项目中如何实现一个简单的锚点目录定位

小册 这是我整理的学习资料,非常系统和完善,欢迎一起学习 现代JavaScript高级小册 深入浅出Dart 现代TypeScript高级小册 linwu的算法笔记📒 前言 锚点目录定位功能在长页面和文档类网站中非常常见,它可以让用户快速定位到页面中的某个…

Pridwen: Universally Hardening SGX Programs via Load-Time Synthesis【ATC`22】

目录 摘要引言性能贡献 背景英特尔SGXSGX的异常SGX侧通道WebAssembly(Wasm)Wasm中的内存安全PRIDWEN和Wasm 概述场景威胁模型目标适应性证明性可扩展性 架构 标题:Pridwen: Universally Hardening SGX Programs via Load-Time Synthesis 作者…

系统学习Mysql

1.select语句 关键字执行顺序: 1.from 2.where 3.group by 4.select 5.having 6.order by 7.limit SQL 语句执行顺序如下: FROM: 指定要查询的表或子查询,可以包含 JOIN、WHERE 子句过滤等。 WHERE: 对 FROM 子句指定的表或子查询进行限制和…

OpenCV之直线曲线拟合

直线拟合fitLine void fitLine( InputArray points, OutputArray line, int distType,double param, double reps, double aeps ); points:二维点的数组或vector line:输出直线,Vec4f (2d)或Vec6f (3d)的vector distType:距离类型 param:距离参数 reps:径向的精度参数 a…

Tomcat Takeover

靶场介绍 蓝队靶场练习之Tomcat Takeover 场景介绍 我们的 SOC 团队在公司内部网的一台 Web 服务器上检测到可疑活动。为了更深入地了解情况,该团队捕获了网络流量进行分析。此pcap文件可能包含一系列恶意活动,这些活动已导致Apache Tomcat Web服务器…

Cairo介绍及源码构建安装(1)

一、简介 Cairo是一个支持多个输出设备的2D图形库。目前支持的输出目标包括X Window System、win32、图像缓冲区、PostScript、PDF和SVG。实验后端包括OpenGL、Quartz和XCB文件输出。Cairo旨在在所有输出媒体上产生一致的输出,同时利用可用的显示硬件加速&#xff…

基于 ESP32-C2 的 Wi-Fi/BLE 和 LoRa 极低成本无线组网方案

在物联网高速发展的今天,Wi-Fi 和 LoRa 作为近距离和超远距离通信技术,均有其各自的典型应用场景,在各自应用领域都取得了卓越的成就。Wi-Fi 和 LoRa 技术各具优势,在很多场景需求中,如果将两者结合,一方面…

自动化测试如何落地,一篇搞定

前言 前段时间面试了某零售电商企业的测试经理岗位,面试官当时提了这样一个问题:我们这边测试团队开展自动化测试工作将近一年了,但目前还未看到明显的对测试过程或者质量的改善效果。如果是你,你会如何做? 自动化测…

计算机算法分析与设计(4)---矩阵连乘问题(含C++代码)

文章目录 一、概述1.1 矩阵乘法1.2 穷举法1.3 动态规划 二、代码编写2.1 例题分析2.2 代码 一、概述 1.1 矩阵乘法 1. 矩阵相乘,前一个矩阵的列数需等于后一个矩阵的行数。相乘得到的新矩阵,其行数由前一个矩阵决定,其列数由后一个矩阵决定。…