阿里云服务器配置、搭建(针对Spring boot和MySQL项目)

news2024/10/5 14:37:45

这是一篇极其详细且痛苦的文章,还是在两位后端的大佬手把手教导下、以及我找遍全网所有资料、问了N遍AI、甚至直接申请阿里云工单一对一询问客服一整天、连续清空再上传反复30多次整个项目jar包......总结出来的终极要人命踩坑的问题总结

一、首先购买服务器

其实不管阿里云、华为云、腾讯云.....只要你是第一次用服务器,那么你进入官网,直接拉到底,给我找到【免费试用】这个玩意,给我点进去

我这用的是阿里云,我就拿阿里云做案例

点了之后,直接给我往下拉,找到有标题“免费试用150多款云产品,助力开发者快速上云”的区域,直接!!给我点那个写着“免费额度200元 3个月”的这个【云服务器 Ecs】!!!

然后点【立即使用】,然后选择产品这里按照我这个红框来选,我也不知道为什么反正我后端的朋友就是手把手让我这么选,至于为什么选两台,选一台和选两台都是免费试用,那何不多选一台薅羊毛呢?(那个操作系统不用管你的电脑是什么操作系统,跟那个没关系,这指的是你服务器程序的操作系统)

然后关掉,点击左上角,选择【产品与服务】的【云服务器 Ecs】(没有就在上面搜索框搜“云服务器 Ecs”)

就可以看到我们的两台服务器了,现在想用哪一个就点其中一个,我这里只用了第一个,就直接点第一个

然后记住这里,这就是以后访问这个服务器的地址

然后现在我们来重置一下密码

改一下密码就行,要有大小写和特殊字符

然后我们【win + R】打开cmd操作,来连接上这个服务器,输入这个命令

ssh 你服务器的用户名 @你服务器的公网地址

然后下一步填【yes】回车,然后让你输入密码,输入密码时看不到不代表没输入,而是它故意设置的不显示密码,你直接回车就行

二、安装宝塔Linux面板

重点来了!!有这么一个东西叫【宝塔Linux面板】,这个是一个操作服务器Linux系统的工具,这么理解吧,数据库有MySQL、SQL server这些系统,那么对应就会有datagrip、navicat这些工具来操作MySQL系统;我们也要用“控制面板”、cmd控制台等等工具来操作我们的window系统。

那么【宝塔Linux面板】就是这么一个操作服务器内部系统的工具,用它我们就可以一键部署我们的数据库、java......等等项目到服务器上

那么普遍的做法是手动到官网安装,我的建议是用【cmd控制台】,因为手动安装还要配置一大堆超嗨麻烦,但是【cmd命令】你只需要敲完命令静等启动就行了

那么首先敲入下面这个代码:

curl -sSO http://download.bt.cn/install/install_6.0.sh && bash install_6.0.sh

 接下来就是漫长的安装、配置、启动的过程,啥也不用关,耐心等待就行,实在受不了你就时不时摁一下【回车】

直到,出现这些信息,那么现在你需要记住这两件事:

1、记住黄色方框里的宝塔为你生成的账户密码

2、要启动并进入宝塔网址,你就得复制进入这个【外网面板地址】,但是这里要先记住这个【“:”】后面的【端口号】,因为我们服务器有拦截,在开通这个端口的访问权限之前,这几个网址是进不去的

那么我们现在回到阿里云,在我们那个服务器的页面那点击【安全组】,手动添加【入方向】的安全信任端口,也就是上面图片红色方框的哪个端口号

然后输入这个【外网面板地址】到浏览器就可以进入【宝塔面板】了(跳出危险警告的话你就点“高级”,点“信任并访问该地址”就行了)

然后进来之后,因为我们是cmd直接安装的,可能还没有注册宝塔的账号,还需要点击下面的“注册账户”(刚刚控制台哪个用户名和密码不是宝塔官网登录的账户噢)

然后回到官网,把刚刚注册的账户密码输入登录即可

三、在部署项目到服务器前,用宝塔搭建配置环境

1、首先配置java环境

我们的服务器就相当于一个全新的window系统,当然在服务器环境里是Linux系统,我只是打个比方......那么你点到侧边栏的【网络】,然后这里因为我是写java后端的,那就部署java的环境,点到【Java项目】

那么在一个全新的系统里要用java,那肯定得下载安装java的环境啊,刚进入【Java项目】时会有一个提示要你下载安装java环境,你点击就会跳出一个框,选择跟你要部署的那个java项目一样的java版本,点击安装,然后就可以叉掉这个框,会在后台下载的

那么我们在电脑下载安装java环境的时候也知道,这个b玩意还得配置环境变量;那么这里一样。

一般情况,宝塔会帮你安装好JAVA后,顺便配置好环境变量,你可以用这个命令查一下你的java环境变量【JAVA_HOME】有没有信息:

echo $JAVA_HOME

那么如果没有信息,那么就要手动配置,那么我们直接点击宝塔侧边栏的【文件】,点击【根目录】—>【root目录】—>【.bashrc】文件

往最底部加入下面【两行】:

export·JAVA HOME=/你的jdk路径
export·PATH=$PATH:$JAVA HOME/bin

那么这两行里第一行的【jdk路径】去哪找啊?

在终端执行这两个命令,都可查到你的jdk路径

这个

which java

或者

type java

那么注意,看到jdk路径之后,只“从头” 复制到 “jdk-版本号”(也就是上图黄色、蓝色部分),然后到【.bashrc】文件,粘贴到第一行的【export JAVA_HOME=】后面,第二行直接复制【export PATH=$PATH:$JAVA_HOME/bin】就行了

2、配置MySQL环境

那么同理,你要运行后端项目肯定要有数据库啊,那这里我用的是Mysql,还是像Java一样,在侧边栏点【数据库】,点【MySQL】,然后点提示安装会跳出小方框,那么先别急着安装,先选好跟你项目数据库版本一样的mysql版本,然后再点【极速安装】

去哪看自己MySQL版本?【开始】按钮搜索【mysql】就能看到,我的是8.0的,那宝塔那就按照8.0的版本

然后点【添加数据库】,这里就是相当于在服务器创建一个代替你本地连接的那个数据库,

那么你本地那个数据库是什么名字,这个数据库就要是什么名字;

密码也是一样;

只有用户名不要再用你本地那个root了,换个别的名都行;

然后访问权限设所有人;添加至本地服务器即可 

创建好之后点这,再三确认!!!再三确认!!!你的数据库密码到底多少

接下来就是把你本地那个数据库的【表】都给他塞进这个宝塔里服务器的云数据库里,这里我是存在一点小问题的,我先讲正常的做法,然后再讲我的错误地方以及最后无奈的做法

正常做法是首先到spring boot工程那,点击idea的侧边栏的数据库,右键你要选择的数据库,选择【导入/导出】的【用mysqldump导出】

然后找到你本地的【mysqldump.exe】这个文件的【绝对路径】,这个玩意就是MySQL专门用了导出表的工具,那么一般是在【C:/Program Files/MySQL/MySQL Server 版本号/bin/mysqldump.exe】这个路径,你们最好检查一下是不是

ok,然后回到idea,在刚刚点击【用mysqldump导出】之后弹出的弹窗里,填入【mysqldump的路径】

然后注意底下这个【出路径】,这个就是指定你要导出表放到哪,但是你要先确认这个地方有没有允许【写入】的权限(而且不允许路径中带有特殊字符或者中文!!!)

假设我们要放到【F:\tlias】这个文件夹,那就在本地点开,然后右键点【属性】,然后点到【安全】,点一遍所有用户,如果有存在其中一个的【Users的权限】的【写入】那里没打勾,那就点击【编辑】,然后勾选上【写入】,直到所有用户都有权限【写入】

然后回到idea,点【确认】应该就可以成功把表导到这个路径下了

但是!!!!我他妈不行!!!我想尽了办法,就是不行

那么这里只能用第二个麻烦,但是不会出错的办法,在控制台cmd执行下面的命令,一个一个把表导到指定位置,输入一次会弹出【Enter password】,输入你的数据库密码即可

mysqldump -u 数据库用户名 p 数据库名字 > 你要导出到哪的路径

然后就能在你的这个路径看到表文件了

接下来就可以去【宝塔】的数据库那导入你这些表了

然后注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!

一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!要到了这一步之后,再点一次【导入】!!!!!直到弹出一个小窗口显示【导入成功√】(我就不做演示了),不然就不是真的导入到云数据库里!!!

不然你就会浪费一整天时间研究半天不知道怎么回事

数据库最后一步操作,就是把数据库访问的端口,在阿里云服务器的安全组那里设置权限开放

这里数据库的端口我不打算细讲在哪里看了,打开数据库工具,右键点【架构】能看到,一般都是【3306】

回到阿里云服务器实例那里,点击你的那台服务器,再点击【安全组】

3、最后关掉宝塔的防火墙

四、准备上传整个spring boot项目

终于终于终于终于,您历尽千辛万苦可以上传项目了,但是这里!还有极其非常超级十分重要十万火急超级无敌重要会要人命的紧急的至关重要的几步,做完这几步,我相信你会省去至少一天的时间顺利上传部署你的项目。

1、首先修改【application.yml】配置里数据库的配置

我们既然要上传到服务器上,那么我们spring boot项目要连接的肯定就不再是本地数据库了,而是我们刚刚创建的那个服务器上的云数据库了,那自然【application.yml】的数据库配置也要改

那么首先先改一下这个数据库url,请在你【原来数据库的url基础】上,加上这个这些内容:【?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC】

  • 其中属性意义:
    • useUnicode=true 表示使用Unicode字符,可以使用中文;
    • characterEncoding=utf-8 编码方式;
    • serverTimezone=UTC 设置全球标准时间。

为什么要这样?不知道,我经常连接数据库时会因为什么“时区”不一致导致失败,具体原因我也不知道为什么,反正你写了肯定不会错

(这是我这么改之前阿里工程师跟我说的报错原因):

改完之后

再改完这个之后,先别把用户名啥的根云数据库绑定上,还是先绑定着你的本地数据库,然后现在至少给我执行个2次以上本地运行!!!确保在本地连接数据库、用apifox发送请求不会报错先,如果有报错,再三确认是哪里出错了(你本地连接数据库都出问题的话,就更别说连云数据库了)

接下来把数据库的用户名、密码都绑定上服务器上云数据库的

2、配置端口和监听网络域名

首先在本地允许整个项目,再三确认要用一个【没被占用】的端口!一般情况【:8080】是不会错,要是不行你就给我从【8080】一直试【8081】【8082】【8083】【8084】....【8099】......一直试到允许不会出错就行(开玩笑,一般不会这么惨)

然后在你的【application.yml】上配置好

然后确认这个端口之后,还是一样,到阿里云服务器的安全组那里,打开这个端口的安全访问权限

然后注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!注意!

一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!一定!要让【监听网络】配置监听的是【0.0.0.0】这个域名,只有这个域名才能被公网访问!!!!这个我问遍身边人都没人知道,知道我问了阿里云的工程师客服才知道

3、最后一步,

我当时上传宝塔jar包时还出了这个问题(因为我没有截图保存当时的控制台报错信息,就直接截图其他博主的文章了)

那么原因是:spring-boot-maven-plugin 插件配置中的 skip 属性被设置为 true。这会导致 Spring Boot 在打包时跳过构建可执行 JAR 文件的操作,因此在生成的 JAR 文件中缺少必要的主清单属性,进而导致了 “no main manifest attribute” 的错误。

这个一个根本没人会留意到的问题,那么最后请到【pom.xml】文件找到这个地方,把<skip>true</skip>改成<skip>false</skip>

五、正式打包整个spring boot项目到服务器

1、打jar包

好,做好这一切该死的准备,终于塔玛得可以上传项目了

那么如果你的springboot工程项目是基于maven管理的,那么就非常方便;如果不是,那就滚,我不会。首先点击idea侧边的【maven按钮】,找到你maven管理的这个springboot项目,点开【生命周期】

然后这里,只需要点击一下【package】,就是把整个文件打包成一个可以上传部署的jar包;那么如果你打完jar后又发现一堆问题,那么想删除,就点一下【生命周期】的【clean】

那么点完【package】后,等待一两秒后看到绿色的“√”,就说明打包成功

然后我们找到它的位置,是在项目的【target】这个目录之下,我们右键点打开于资源管理器,就能找到他的本地位置

2、上传jar包到宝塔

回到宝塔,点击侧边栏【文件】,然后从根目录找到【opt】这个文件夹,点开

把我们的后端jar包直接拖进来(我也不知道为啥,后端大神说上班都是放这个文件夹,不成文的规定吧)

点【开始上传】,等待上传完成

3、到终端运行项目

最后最后一步,兄弟们,最后一步

我们来到侧边栏的【终端】

然后输入【cd /opt】,也就是进入到我们刚刚上传jar包的路径下

然后记住,记死这几个命令:

第一个:临时启动运行服务器的spring boot项目(记住jar包文件名别漏了后缀名【.jar】)

java -jar 你刚刚上传的那个jar包的文件名

试一下发送请求,成功了

【这个命令】 = 【在编译器点击运行按钮】,但是这个临时的启动,只要关掉这个页面或者切换一下宝塔侧边栏的页面,这个运行就终止了

第二个:永久启动运行项目

nohup java -jar jar包名字 >outlog.log &

或者

nohup java -jar jar包名字 >log.out &

解释一下后面这个【>outlog.log &】和【>log.out &】是啥:【>】的意思就是 “输出到哪” 的意思,【outlog.log】和【log.out】就是自定义的日志文件名,虽然是自定义,但是业界通常起名都叫这两,整体意思就是启动后将程序的日志输出重定向到【outlog.log】或【log.out】日志文件

然后【nohup】的意思就是后台不挂断,就算你关了宝塔或者【ctrl + c】关闭终端进程,它还是开着;

【java -jar】就是运行jar包的命令。

那么还有点小细节,当输入这个命令之后下面就闪了一下光标就没啥了,这就是运行成功了,后台运行是不会像idea那样在控制台输出spring boot图标那样的

然后我们再摁一下回车,就会弹出一串数字(图片蓝色框),那就是这个【后台进程的服务Id(Pid)】,要关闭这个后台进程,只能指定关闭这个【服务Id(Pid)的后台进程】,要记住这个【服务Id(Pid)】

然后下面那串提示语(绿色方框),意思就相当于你在电脑做一些操作之后弹出的【确认提示窗口】,提示你是否确认当前操作,你就直接摁【回车】就相当于确认,那么如果你不回车,你就不能在下面进行别的命令行操作;你摁了回车,就可以接着在下面进行别的命令操作,不会影响上面的spring boot运行

我现在关了控制台,还是能发送请求成功

第三,查询当前这个spring boot进程的端口号的服务Id(PId)

假设你要是没来得及记这个【服务Id(PId)】就关了终端,那么我们还可以用这个命令查到【服务Id(PId)】

lsof -i :8080

注意细节:是【lsof -i :端口】不是【lsof -i: 端口号】

第四:关闭后台spring boot进程

我们已经知道了【服务Id(PId)】,那么要关闭的话就执行下面这个命令

kill -9 服务Id(Pid)

关闭成功!!

以上就是我执行了N多次删除jar包再打jar包,再上传,再差报错信息,再跟阿里云客服纠缠一整天得出的踩坑经验总结,希望对你们有帮助。

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

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

相关文章

Apache Seata分布式事务及其三种模式详解

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Apache Seata分布式事务及其三种模式详解 分布式事务 Seata 及其三种模式详解 | Meetup#3 回顾…

基于TCP的在线词典系统(分阶段实现)

1.功能说明 一共四个功能&#xff1a; 注册 登录 查询单词 查询历史记录 单词和解释保存在文件中&#xff0c;单词和解释只占一行, 一行最多300个字节&#xff0c;单词和解释之间至少有一个空格。 2.功能演示 3、分阶段完成各个功能 3.1 完成服务器和客户端的连接 servic…

【深度学习】图形模型基础(5):线性回归模型第四部分:预测与贝叶斯推断

1.引言 贝叶斯推断超越了传统估计方法&#xff0c;它包含三个关键步骤&#xff1a;结合数据和模型形成后验分布&#xff0c;通过模拟传播不确定性&#xff0c;以及利用先验分布整合额外信息。本文将通过实际案例阐释这些步骤&#xff0c;展示它们在预测和推断中的挑战和应用。…

编程上下文Context及其实现原理

编程上下文Context及其实现原理 author:shengfq date:2024-07-06 title:编程上下文Context及其实现原理 category:编程思想1.编程中的上下文Context是指什么? 在编程和软件工程领域&#xff0c;“上下文”&#xff08;Context&#xff09;是一个多义词&#xff0c;其含义可以…

产品经理-​合作的6类干系人(8)

在一个项目中&#xff0c;产品经理并不是一个人在战斗&#xff0c;而是在很多同事的配合下共同完成项目。那产品经理到底要和哪些角色配合&#xff0c;一起完成项目呢 中间的产品经理是一个项目的驱动者。而产品经理的前方是“Boss/Leader”&#xff0c;也就是创业团队中公司的…

地级市数字经济指数、互联网用户数、数字金融普惠指数

2000-2022年地级市数字经济指数&#xff08;含控制变量&#xff09; 目录 数字经济如何改善环境污染 一、引言 二、文献综述 三、实证模型 四、数据来源 五、程序代码 六、运行结果 数字经济如何改善环境污染 摘要&#xff1a; 本论文旨在探讨数字经济对环境污染的改善作…

三级_网络技术_04_中小型网络系统总体规划与设计

1.下列关于路由器技术特征的描述中&#xff0c;正确的是()。 吞吐量是指路由器的路由表容量 背板能力决定了路由器的吞吐量 语音、视频业务对延时抖动要求较低 突发处理能力是以最小帧间隔值来衡量的 2.下列关于路由器技术特征的描述中&#xff0c;正确的是()。 路由器的…

Matlab中collectPlaneWave函数的应用

查看文档如下&#xff1a; 可以看出最多5个参数&#xff0c;分别是阵列对象&#xff0c;信号幅度&#xff0c;入射角度&#xff0c;信号频率&#xff0c;光速。 在下面的代码中&#xff0c;我们先创建一个3阵元的阵列&#xff0c;位置为&#xff1a;&#xff08;-1,0,0&#x…

JavaWeb----JSPJSTL

目录 JSP显隐注释在JSP中写java程序JSP的指令标签JSP中的四大域对象简易版用户登录EL表达式 JSTL条件动作标签if标签 choose\when\otherwise标签迭代标签格式化动作标签 用户登录实例查看是否安装了mysql用户登录界面后台实现 JSP JSP全名是Java Server Pages&#xff0c;它是建…

【后端面试题】【中间件】【NoSQL】MongoDB查询优化3(拆分、嵌入文档,操作系统)

拆分大文档 很常见的一种优化手段&#xff0c;在一些特定的业务场景中&#xff0c;会有一些很大的文档&#xff0c;这些文档有很多字段&#xff0c;而且有一些特定的字段还特别的大。可以考虑拆分这些文档 大文档对MongoDB的性能影响还是很大的&#xff0c;就我个人经验而言&…

常见算法和Lambda

常见算法和Lambda 文章目录 常见算法和Lambda常见算法查找算法基本查找&#xff08;顺序查找&#xff09;二分查找/折半查找插值查找斐波那契查找分块查找扩展的分块查找&#xff08;无规律的数据&#xff09; 常见排序算法冒泡排序选择排序插入排序快速排序递归快速排序 Array…

在Apache HTTP服务器上配置 TLS加密

安装mod_ssl软件包 [rootlocalhost conf.d]# dnf install mod_ssl -y此时查看监听端口多了一个443端口 自己构造证书 [rootlocalhost conf.d]# cd /etc/pki/tls/certs/ [rootlocalhost certs]# openssl genrsa > jiami.key [rootlocalhost certs]# openssl req -utf8 -n…

Pycharm远程连接GPU(内容:下载安装Pycharm、GPU租借、配置SSH、将代码同步到镜像、命令行操控远程镜像、配置远程GPU解释器)

目录 windows下载安装pycharmGPU租借网站AutoDlfeaturize好易智算 GPU租借GPU选择选择镜像充值 然后创建镜像创建成功 复制SSH登录信息 远程进入镜像 在Pycharm中进行ssh连接新建SFTP配置SSH复制ssh根据复制的信息填写ssh配置测试连接 将代码同步到远程镜像上设置mappings将本地…

React 省市查询组件完整代码

目录 一、地区文件 二、Antd配合使用 三、实现效果 一、地区文件 下载地址&#xff1a;全国省市区数据_JSON格式_SQL格式 export const chinaArea {0: {1: 北京,2: 天津,3: 河北省,4: 山西省,5: 内蒙古自治区,6: 辽宁省,7: 吉林省,8: 黑龙江省,9: 上海,10: 江苏省,11: 浙…

计算机出现找不到msvcp140.dll无法继续执行代码怎么办?推荐7个有效解决方法

在日常使用电脑过程中会经常遇到各式各样的问题&#xff0c;比如msvcp140.dll丢失或找不到msvcp140.dll文件是最常见的问题之一&#xff0c;那么遇到这个问题要怎么解决呢&#xff1f;msvcp140.dll到底是什么&#xff1f;为什么会出现msvcp140.dll丢失问题&#xff1f;今天给大…

原生事件监听及组件内置事件处理

监听事件 我们可以使用 v-on 指令 (简写为 ) 来监听 DOM 事件&#xff0c;并在事件触发时执行对应的 JavaScript。用法&#xff1a;v-on:click“handler” 或 click“handler”。 事件处理器 (handler) 的值可以是&#xff1a; 内联事件处理器&#xff1a;事件被触发时执行的…

《QT从基础到进阶·四十三》QPlugin插件多线程问题和只有插件dll没有头文件和lib文件时调用插件中的方法

1、插件和多线程问题&#xff1a; 创建插件对象不能放到多线程执行&#xff0c;不然报错&#xff1a;ASSERT failure in QWidget: "Widgets must be created in the GUlthread. //不能放在多线程执行 QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName))…

单选多选提交问卷,代码示例

&#xff45;&#xff4c;&#xff45;&#xff4d;&#xff45;&#xff4e;&#xff54;中 需要对接口返回的数据进行分析。多选问题使用checkbox&#xff0c;单选题使用radio。 多选时可以绑定&#xff4d;&#xff49;&#xff4e;&#xff0f;&#xff4d;&#xff41;&am…

Transformer前置知识:Seq2Seq模型

Seq2Seq model Seq2Seq&#xff08;Sequence to Sequence&#xff09;模型是一类用于将一个序列转换为另一个序列的深度学习模型&#xff0c;广泛应用于自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;如机器翻译、文本摘要、对话生成等。Seq2Seq模型由编码器&#…

搭建互联网医院实战:从源码到在线问诊APP的全流程开发

今天&#xff0c;笔者将讲述在线问诊APP的全流程开发&#xff0c;帮助开发者理解和掌握搭建互联网医院的核心技术和步骤。 一、需求分析与设计 需求分析包括明确目标用户、功能需求、性能需求等。设计阶段则包括系统架构设计、数据库设计和前后端界面设计等。 1.目标用户&…