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

前言

前提:有一个后端项目,项目能够运行在本地,可以通过本地访问(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-21export PATH=$JAVA_HOME/bin:$PATHexport 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.debmysql-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.mzph.cn/news/88397.shtml

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

相关文章

【数据结构-树】哈夫曼树

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

图片编辑小程序源码/拼图小程序源码

图片编辑小程序源码,拼图小程序源码。全能、便捷的图片编辑工具。实现了图片裁剪、添加文字、涂鸦、拼长图、拼相框等图片编辑功能,另外还有一个简易的表情包制作功能。 主要有以下几个功能:图片裁剪、添加文字、涂鸦功能、拼长图、拼相框、表…

mybati缓存了解

title: “mybati缓存了解” createTime: 2021-12-08T12:19:5708:00 updateTime: 2021-12-08T12:19:5708:00 draft: false author: “ggball” tags: [“mybatis”] categories: [“java”] description: “mybati缓存了解” mybatis的缓存 首先来看下mybatis对缓存的规范&…

Ingress Controller

什么是 Ingress Controller ? 在云原生生态中,通常来讲,入口控制器( Ingress Controller )是 Kubernetes 中的一个关键组件,用于管理入口资源对象。 Ingress 资源对象用于定义来自外网的 HTTP 和 HTTPS 规则,以控制进…

el-image 和 el-table冲突层级冲突问题

其中原理,很多博客已经所过了,table组件中使用图片,会出现层级过低问题, 网上大部分解决方式是 使用穿透 // 单元格样式 ::v-deep(.el-table__cell) {position: static !important; }我在此不推荐这种解决方式,原因&a…

Leetcode228. 汇总区间

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属…

二、VXLAN BGP EVPN基本原理

VXLAN BGP EVPN基本原理 1、BGP EVPN2、BGP EVPN路由2.1、Type2路由——MAC/IP路由2.2、Type3路由——Inclusive Multicast路由2.3、Type5路由——Inclusive Multicast路由 ————————————————————————————————————————————————…

聚焦云原生安全|如何为5G边缘云和工业互联网应用筑牢安全防线

9月22日,2023年中国信息通信业发展高层论坛5G工业互联网分论坛在北京顺利举办。 作为国内云原生安全领导厂商,安全狗受邀出席此次活动。 据悉,中国信息通信业发展高层论坛是致力于研究信息通信业发展新问题、新趋势,推动信息通信…

uniapp项目实践总结(二十三)网页和小程序应用打包教程

导语:当你的应用程序开发完成后,在发布到互联网之前,需要进行打包操作,包括网页端、小程序端的打包。 目录 准备工作网页打包小程序打包 准备工作 在打包之前,请保证你的 uniapp 应用程序编译到网页、小程序是可以正…

标准化、逻辑回归、随机梯度参数估计

机器学习入门 数据预处理: 将?替换为缺失值 data data.replace(to_replace"?",valuenp.nan)丢掉缺失值 data.dropna(how"any) #howall删除全是缺失值的行和列 #haowany删除有缺失值的行和列将数据集划分成测试集和训练集 data[colu…

tensor数学运算

运算函数加add减sub乘mul除div矩阵相乘matmul次方pow平方根及其倒数sqrt 和 rsqrt向下/向上取整floor / ceil分离出整数/小数trunc / frac近似解四舍五入round裁剪clamp 1、矩阵元素的加减乘除 注意是矩阵间对应位置元素进行加减乘除 add 和 a torch.rand(3,4) b torch.…

ceph分布式存储部署

一、概述 是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。 特点 1、统一存储 虽然 ceph 底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万…

面试打底稿④ 专业技能的第四部分

简历原文 抽查部分 了解Python的使用(第一篇关于Python升级版本bug解决的文章斩获6W阅读),用python实现了几篇图像信息隐藏领 域论文的复现(博客中有提及); 了解Django基本框架,写过Django框架的…

【深度学习实验】卷积神经网络(二):自定义简单的二维卷积神经网络

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 二维互相关运算(corr2d) 2. 二维卷积层类(Conv2D) a. __init__(初始化) b. forward(前向传…

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 B: 双子数

[蓝桥杯 2023 国 B] 双子数 试题 B: 双子数 【问题描述】 若一个正整数 x x x 可以被表示为 p 2 q 2 p^2 \times q^2 p2q2,其中 p p p、 q q q 为质数且 p ≠ q p \neq q pq,则 x x x 是 一个 “双子数”。请计算区间 [ 2333 , 233333333333…

千兆光模块和万兆光模块的差别是什么?

千兆光模块和万兆光模块是目前使用最广泛的光模块之一,它们之间有什么差别呢?下面从传输速率、光纤类型、距离等多个方面详细分析千兆光模块和万兆光模块的差别。 一、传输速率 千兆光模块的传输速率为1.25Gbps,而万兆光模块的传输速率为10…

记录一下 malloc 是如何分配内存的

系统深入学习笔记-malloc 以 32 位系统为例,,通过这张图你可以看到,用户空间内存从低到高分别是 6 种不同的内存段: 代码段,包括二进制可执行代码;数据段,包括已初始化的静态常量和全局变量B…

燃气安全如何保障?万宾燃气管网监测系统时刻感知管网运行态势

近年来随着我国城镇化建设的加快,燃气已经成为每个家庭的必需品。然而,每年夏季频繁发生的燃气爆炸事故,已经严重危害人民生命财产安全危害社会公共安全和公共利益。为了保障燃气安全运行,近日,许多城市都在大力推进燃…

深入浅出Java的多线程编程——第二篇

目录 前情回顾 1. 中断一个线程 1.1 中断的API 1.2 小结 2. 等待一个线程 2.1 等待的API 3. 线程的状态 3.1 贯彻线程的所有状态 3.2 线程状态和状态转移的意义 4. 多线程带来的的风险-线程安全 (重点) 4.1 观察线程不安全 4.2 线程安全的概念 4.3 线程不安全的原因…

代码随想录算法训练营第23期day7| 454.四数相加II 、383. 赎金信 、15. 三数之和、18. 四数之和

目录 一、(leetode 454)四数相加II 二、(leetcode 383)赎金信 暴力解法 哈希法 三、(leetcode 15)三数之和 四、(leetcode 18)四数之和 一、(leetode 454&#xf…