前言
前提:有一个后端项目,项目能够运行在本地,可以通过本地访问(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": []
}