手把手教你实现:将后端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地址入口在:
华为云控制台 -> 我的资源 -> 云服务器

开放远程端口
华为云控制台 -> 我的资源 -> 云服务器 -> 安全组 -> 入方向规则 ->添加规则
- 添加 8080端口(你Sprig Boot项目启动时的端口,如果Spring Boot项目没有设置,默认是8080)
- 添加 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": []
}
相关文章:
手把手教你实现:将后端SpringBoot项目部署到华为云服务器上
前言 前提:有一个后端项目,项目能够运行在本地,可以通过本地访问(localhost) 如果没有可以看这篇:一个基于SpringBoot的后端项目 注册华为云账号 华为云官网 购买云服务器 产品 -> 华为云耀云服务器…...
【红队攻防】从零开始的木马免杀到上线
0、环境配置说明 应该全部使用云服务器完整演示比较好,奈何太穷了买不起服务器,只能用本地环境演示。所需环境如下: 系统环境: CentOS 7 ,Windows 10 软件环境 Cobalt Strike 4.7 , ShellQMaker, 360杀…...
Linux命令行操作:使用“more“命令进行分页显示
文章目录 1. 引言1.1 介绍Linux操作系统和命令行界面什么是Linux操作系统?为什么命令行界面在Linux中如此重要? 1.2 介绍Linux中的分页显示命令分页显示命令的作用与意义不同分页显示命令的比较 2. "more"命令的基本用法2.1 安装和启动"m…...
CentOS下安装MySQL 8.1及备份配置
1 卸载原来的MySQL版本 移除之前部署的mysql软链接 # unlink /etc/init.d/mysql # unlink /usr/bin/mysql2 下载最新的MySQL版本 https://dev.mysql.com/downloads/mysql/8.0.html 我这里直接把地址放在这里:https://cdn.mysql.com//Downloads/MySQL-8.1/mysql…...
【RabbitMQ实战】06 3分钟部署一个RabbitMQ集群
一、集群的安装部署 我们还是利用docker来安装RabbitMQ集群。3分钟安装一个集群,开始。 前提条件,docker安装了docker-compose。如果没安装的话,参考这里 docker-compose文件参考bitnami官网:https://github.com/bitnami/contai…...
(c语言)整形提升
#include<stdio.h> //整形提升 int main() { char a 5; //字符型的内存大小为8个比特位,故在进行加法之类的线性运算时需要整形提升 //00000000000000000000000000000101->5 因为字符型的内存大小不足,故在存放整形时需要裁切 …...
上传文件报错:The temporary upload location [/tmp/tomcat/xxx] is not valid
1.上传附加时报错找不到临时目录 Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat/work/Tomcat/localhost/ROOT] is not valid 发生改报错原因为 (1)、SpringBoot项目启动后,系…...
直线模组的品牌有哪些?
中国工业制造业快速发展,工业自动化领域也进入了飞速发展的阶段,直线模组作为工业自动化领域不可缺少的机器人之一,有着重要的不可或缺的作用,在行业内做得好的直线模组品牌有哪些呢? 1、NSK:日本精工株式会…...
零基础学习ESP8266
文章目录 零基础学习ESP8266前言选择硬件如何学习专栏大纲基础部分提高部分 总结 零基础学习ESP8266 前言 最近在空余的时候有用乐鑫的模组,感觉很不错,也决定简单写写。 相信看这篇文章的同学,希望可以熟悉ESP8266这个硬件平台。当然我们…...
基于PYQT5的GUI开发系列教程【二】框架安装和基础环境配置
本文概述 PYQT5是一个基于python的可视化GUI开发框架,具有容易上手,界面美观,多平台部署等优点,作者将通过一系列教程,带领大家从零基础到入门~能够自主实现GUI开发。 作者介绍 作者本人是一名人工智能炼丹师ÿ…...
pg数据库操作,insert(sql)插入一条数据后获返回当前插入数据的id --chatGPT
gpt: 在 PostgreSQL 数据库中,可以使用 INSERT 语句插入一条数据,并通过 RETURNING 子句来返回插入数据的 ID。以下是一个示例 Go 代码来执行这个操作: go package main import ( "database/sql" "fmt" &…...
【数据结构-树】哈夫曼树
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…...
HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒
本文转载自支付宝体验科技,作者是蚂蚁集团客户端工程师博欢,介绍了支付宝如何基于 HarmonyOS 4.0 实况窗实现医疗场景履约智能提醒。 1.话题背景 8 月 4 日,华为在 HDC(华为 2023 开发者大会)上推出了新版本操作系统…...
【响应式布局】
响应式布局 1 什么是响应式布局2 响应式布局的5种实现方案2.1 百分比布局2.2 媒体查询布局2.3 rem响应式布局2.4 vw / vh响应式布局2.5 flex弹性布局 1 什么是响应式布局 响应式布局就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。这个概念是为解决移动互…...
Spring面试题23:Spring支持哪些事务管理类型?Spring框架的事务管理有哪些优点?你更倾向用哪种事务管理类型?
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring支持哪些事务管理类型? Spring 支持以下几种事务管理类型: 编程式事务管理:通过在代码中显式地使用事务管理 API(如 TransactionTempla…...
Leetcode—— LCR 122. 路径加密
LCR 122. 路径加密 假定一段路径记作字符串 path,其中以 "." 作为分隔符。现需将路径加密,加密方法为将 path 中的分隔符替换为空格 " ",请返回加密后的字符串。 示例 1: 输入:path "a.ae…...
缓冲区溢出漏洞分析
一、实验目的 熟悉软件安全需求分析方法,掌握软件安全分析技术。 二、实验软硬件要求 1、操作系统:windows 7/8/10等 2、开发环境:VS 6.0(C)、OllyDbg 三、实验预习 《软件安全技术》教材第3章 四、实验内容&#…...
【高阶数据结构】红黑树(C++实现)
⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏留言 ⭐系列专栏:C进阶 ⭐代码仓库:C进阶 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注,你们的支持是我…...
算力百川汇蓝海,商海荡漾绘宏图
算力百川汇蓝海 01 新兴技术呼唤算力 崭新时代逐浪前,科技浪潮涌向天。 人工智能、数字孪生、元宇宙等新兴技术的迅速发展,引爆全球算力需求的规模式增长。尤其,以ChatGPT为代表的人工智能技术发展,引发了全球算力需求的进一步增长…...
ORACLE 内存结构之系统全局区(SGA)
每个 Oracle 数据库实例都会在内存中分配一个很大的内存结构, 称为系统全局区(System Global Area), 这是一个大型的共享内存结构,每个Oracle进程都会访问它。 在Linux/Unix操作系统上,SGA是一个物理实体,使用操作系统命令能“看到它”。 它被操作系…...
4个维度解析EAS CLI:移动开发效率提升工具
4个维度解析EAS CLI:移动开发效率提升工具 【免费下载链接】eas-cli Fastest way to build, submit, and update iOS and Android apps 项目地址: https://gitcode.com/gh_mirrors/ea/eas-cli 定位核心价值:重新定义移动开发工作流 在移动应用开…...
Pcap-Analyzer:Python可视化离线数据包分析工具全攻略
Pcap-Analyzer:Python可视化离线数据包分析工具全攻略 【免费下载链接】Pcap-Analyzer Python编写的可视化的离线数据包分析器 项目地址: https://gitcode.com/gh_mirrors/pc/Pcap-Analyzer 一、功能解析:数据包分析的瑞士军刀 1.1 核心功能图谱…...
Volcano调度算法全解析:从DRF公平分配到Binpack节点装箱(含权重调优技巧)
Volcano调度算法深度实战:从DRF公平分配到Binpack节点装箱 在Kubernetes生态中,资源调度一直是决定集群效率和稳定性的核心环节。当你的业务从简单的Web服务扩展到AI训练、大数据处理等复杂场景时,原生Kubernetes调度器的局限性就会凸显——它…...
告别官方包!手把手教你从Gitee源码编译kkFileView v4.4.0(附Maven打包避坑点)
从源码到部署:深度解析kkFileView v4.4.0全流程编译实战 在企业级文档处理场景中,kkFileView作为一款开箱即用的文件预览解决方案,其源码编译能力往往被大多数开发者忽视。本文将打破常规安装包依赖,带你深入源码编译的全链路过程…...
SAP FI年结总账余额结转(FAGLGVTR/F.16)详细注意事项
SAP FI年结总账余额结转(FAGLGVTR/F.16)详细注意事项一、执行前注意事项(核心前提,必查)1. 基础配置与账期检查(重中之重)账期管理:必须通过事务码OB52,确认旧年度1-12期…...
InternLM2-Chat-1.8B在复杂网络问题诊断中的辅助应用
InternLM2-Chat-1.8B在复杂网络问题诊断中的辅助应用 网络问题就像家里的电路故障,灯不亮了,你很难一眼看出是灯泡坏了,还是开关问题,或者是总闸跳了。对于运维工程师来说,服务器连不上、服务访问超时、端口冲突这些“…...
别再傻傻克隆了!Conda 4.14+ 一键重命名虚拟环境的正确姿势(附版本检查)
Conda虚拟环境重命名终极指南:从版本检查到高效实践 在Python开发中,虚拟环境管理是每个开发者必备的核心技能。作为最流行的Python环境管理工具之一,Conda在4.14版本引入了一个革命性功能——直接重命名虚拟环境。这个看似简单的改进&#…...
Python实战:出租车计费模拟器开发(附完整代码与测试用例)
Python实战:出租车计费模拟器开发(附完整代码与测试用例) 出租车计费系统是城市交通中不可或缺的一部分,而用Python模拟这一过程不仅能帮助初学者理解条件分支和输入输出处理,还能培养将现实问题转化为代码的思维能力。…...
Windows 7 SP2重构方案:现代硬件适配与系统焕新体验
Windows 7 SP2重构方案:现代硬件适配与系统焕新体验 【免费下载链接】win7-sp2 UNOFFICIAL Windows 7 Service Pack 2, to improve basic Windows 7 usability on modern systems and fully update Windows 7. 项目地址: https://gitcode.com/gh_mirrors/wi/win7-…...
颠覆式消息留存方案:RevokeMsgPatcher全方位防撤回技术解析
颠覆式消息留存方案:RevokeMsgPatcher全方位防撤回技术解析 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitco…...
