企业级微服务大项目实战《学成在线》一(项目环境搭建)何平安

我们主要搞的就是微服务层和数据层。

在开发这个项目前,你需要了解java,ssm,.springboot,springcloud,springcloudAlibaba,nacos,mysql,虚拟机,docker,SSH通信,ngnix,redis,rabbitMQ,CentOS,操作系统,git,gogs...以及最重要的耐心。

先安装好黑马的虚拟机,就是那个有8个G的文件,解压后双击cenos764位.vmx的文件:

对了这个软件叫FinalShell,网上有教程直接搜。

剩下的就是版本控制了,黑马选用的是gogs,不怎么熟悉,我还是用的gitee。

对于电脑配置低内存不够的我来说买个云服务器自己搭建环境代替虚拟机就是个不错的选择~

1.安装Docker18.09.0的详细步骤

步骤1:安装依赖库

------

sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2

步骤2:添加Docker源

推荐下面的阿里云加速镜像

步骤3:安装Docker

sudoyuminstalldocker-ce-18.09.0docker-ce-cli-18.09.0containerd.io

步骤4:启动Docker

sudosystemctlstartdocker

步骤5:设置Docker开机自启

sudosystemctlenabledocker

2.在Docker中安装MySQL8.0.26

步骤1:拉取MySQL8的镜像文件

dockerpullmysql:8.0.26

步骤2:使用Docker创建MySQL容器,创建MySQL数据存储目录并挂载到容器中

mkdir-p/data/mysql

dockerrun-p3306:3306--namemysql-v/data/mysql:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=root-dmysql:8.0.26

说明:

参数`-p3306:3306`表示将Docker容器的3306端口映射到宿主机的3306端口。参数`--namemysql`表示给容器起个名字叫mysql,方便管理。

参数`-v/data/mysql:/var/lib/mysql`表示将宿主机的/data/mysql目录挂载到容器的/var/lib/mysql目录上,这样可以实现数据持久化。

参数`-eMYSQL_ROOT_PASSWORD=root`表示设置MySQL的root用户的密码为root。

dockerexec-itmysqlbash

说明:进入容器后可以在容器内使用MySQL客户端来操作MySQL数据库。

mysql-uroot-p回车

输入你的密码(我的密码是:root)

exit

说明:退出mysql窗口

说明:退出mysql容器

3.在Docker中安装Nacos1.4.1

步骤1:拉取Nacos1.4.1的镜像文件

dockerpullnacos/nacos-server:1.4.1

步骤2:使用Docker创建Nacos容器,在宿主机上创建Nacos数据存储目录并挂载到容器中

mkdir/data/nacos

dockerrun-p8848:8848--namenacos-v/data/nacos:/home/nacos/nacos-server-1.4.1/nacos-logs-dnacos/nacos-server:1.4.1

参数`-p8848:8848`表示将Docker容器的8848端口映射到宿主机的8848端口。

参数`--namenacos`表示给容器起个名字叫nacos,方便管理。

参数`-v/data/nacos:/home/nacos/nacos-server-1.4.1/nacos-logs`表示将宿主机的/data/nacos目录挂载到容器的/home/nacos/nacos-server-1.4.1/nacos-logs目录上,这样可以实现数据持久化。

步骤3:设置Nacos开机自启

dockerupdate--restart=alwaysnacos

4.在Docker中安装RabbitMQ3.8.34

步骤1:拉取RabbitMQ3.8.34的镜像文件

dockerpullrabbitmq:3.8.34-management

步骤2:使用Docker创建RabbitMQ容器

mkdir/data/rabbitmq

dockerrun-p15672:15672-p5672:5672--namerabbitmq-v/data/rabbitmq:/var/lib/rabbitmq-drabbitmq:3.8.34-management

参数`-p15672:15672-p5672:5672`表示将Docker容器的15672和5672端口映射到宿主机的15672和5672端口。

参数`--namerabbitmq`表示给容器起个名字叫rabbitmq,方便管理。

参数`-v/data/rabbitmq:/var/lib/rabbitmq`表示将宿主机的/data/rabbitmq目录挂载到容器的/var/lib/rabbitmq目录上,这样可以实现数据持久化。

步骤3:设置RabbitMQ开机自启

dockerupdate--restart=alwaysrabbitmq

5.在Docker中安装Redis6.2.7

步骤1:拉取Redis6.2.7的镜像文件

dockerpullredis:6.2.7

步骤2:使用Docker创建Redis容器;在宿主机上创建Redis数据存储目录并挂载到容器中

mkdir/data/redis

dockerrun-p6379:6379--nameredis-v/data/redis:/data-dredis:6.2.7redis-server--appendonlyyes

参数`-p6379:6379`表示将Docker容器的6379端口映射到宿主机的6379端口。

参数`--nameredis`表示给容器起个名字叫redis,方便管理。

参数`-v/data/redis:/data`表示将宿主机的/data/redis目录挂载到容器的/data目录上,这样可以实现数据持久化。

参数`redis-server--appendonlyyes`表示开启Redis的数据持久化功能。

步骤3:设置Redis开机自启

dockerupdate--restart=alwaysredis

7.在Docker中安装MinioRELEASE.2022-09-07

步骤1:拉取MinioRELEASE.2022-09-07的镜像文件

dockerpullminio/minio

步骤2:使用Docker创建Minio容器;在宿主机上创建Minio数据存储目录并挂载到容器中

mkdir/data/minio

dockerrun-p9000:9000--nameminio-v/data/minio:/data-dminio/minioserver/data

说明:参数`-p9000:9000`表示将Docker容器的9000端口映射到宿主机的9000端口。参数`--nameminio`表示给容器起个名字叫minio,方便管理。参数`server/data`表示在/data目录下启动Minio服务。参数`-v/data/minio:/data`表示将宿主机的/data/minio目录挂载到容器的/data目录上,这样可以实现数据持久化。

步骤3:设置Minio开机自启

dockerupdate--restart=alwaysminio

8.在Docker中安装Elasticsearch7.12.1

步骤1:拉取Elasticsearch7.12.1的镜像文件

dockerpullelasticsearch:7.12.1

步骤2:使用Docker创建Elasticsearch容器;在宿主机上创建Elasticsearch数据存储目录并挂载到容器中

mkdir/data/elasticsearch

dockerrun-p9200:9200-p9300:9300--nameelasticsearch-v/data/elasticsearch:/usr/share/elasticsearch/data-e"discovery.type=single-node"-delasticsearch:7.12.1

参数`-p9200:9200-p9300:9300`表示将Docker容器的9200和9300端口映射到宿主机的9200和9300端口。

参数`--nameelasticsearch`表示给容器起个名字叫elasticsearch,方便管理。

参数`-e"discovery.type=single-node"`表示设置Elasticsearch为单节点模式。

参数`-v/data/elasticsearch:/usr/share/elasticsearch/data`表示将宿主机的/data/elasticsearch目录挂载到容器的/usr/share/elasticsearch/data目录上,这样可以实现数据持久化。

步骤4:设置Elasticsearch开机自启

dockerupdate--restart=alwayselasticsearch

9.在Docker中安装Kibana7.12.1

步骤1:拉取Kibana7.12.1的镜像文件

dockerpullkibana:7.12.1

步骤2:使用Docker创建Kibana容器

dockerrun-p5601:5601--namekibana-dkibana:7.12.1

说明:参数`-p5601:5601`表示将Docker容器的5601端口映射到宿主机的5601端口。参数`--namekibana`表示给容器起个名字叫kibana,方便管理。

步骤3:设置Kibana开机自启

dockerupdate--restart=alwayskibana

10.在Docker中安装nginx1.12.2的步骤如下:

步骤1.拉取nginx:1.12.2的镜像文件;创建一个数据存储目录,比如/data/nginx

dockerpullnginx:1.12.2

mkdir/data/nginx/conf

mkdir/data/nginx/logs

mkdir/data/nginx/html

步骤2.启动一个nginx1.12.2的容器并将数据存储目录挂载到容器内部的/data目录中

dockerrun-d--namenginx-p80:80-v/data/nginx/html:/usr/share/nginx/html-v/data/nginx/conf:/etc/nginx-v/data/nginx/logs:/var/log/nginx-dnginx:1.12.2

步骤3.设置应用开机自启

dockerupdate--restart=alwaysnginx

以上步骤完成后,就可以启动nginx容器并访问ip:80了。

nginx挂载目录这里有同学可能会有疑问,平时我们打包的vue文件都生成在dist中,为什么没有挂载/data/nginx/dist目录呢?

因为data/nginx/dist目录和/data/nginx/html目录的作用是一样的,用于存放Nginx服务提供的静态文件。

所以你可以选择任意一个目录挂载到Docker容器中,而无需挂载两个目录同时使用。

在步骤1语句4仅仅挂载了/data/nginx/html目录,这是因为在Nginx默认配置中,静态文件的根目录是/usr/share/nginx/html,

所以我们需要挂载主机中的/data/nginx/html目录到容器中的/usr/share/nginx/html目录。

如果更喜欢使用/data/nginx/dist目录,则可以将上面命令中的/data/nginx/html目录改为/data/nginx/dist目录,

并将Nginx配置文件中的root/usr/share/nginx/html改为root/usr/share/nginx/dist。

后续会导入xcplus的system包模块,里面的配置记得修改hikari的配置,就像这样:

hikari:jdbc-url:jdbc:mysql://xx.xx.xx.xx:3306/xc_systemserverTimezone=UTC&userUnicode=true&useSSL=false&username:rootpassword:xxxxdriver-class-name:com.mysql.cj.jdbc.Driver--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面是minio安装步骤

进入linux服务器并创建文件夹(可以自己选择一个位置,我这就直接在根目录创建了)

mkdirminio

进入创建的文件夹

cd/minio

在线下载安装包

创建minio的log文件

touchminio.log

赋予minio文件夹777权限

chmod777minio

启动minio

./minioserver/minio/data

控制台提示密码过于简单;下面进入配置文件设置你的账号密码(举例账号:zxcMinio123密码:zxcMinio123),密码前不能有"@"符号,图片是之前的记录,“@”在application.yml中属于特殊字符需要+"\@"进行转义成普通"@"符号,但转义之后我在项目用起来还是有小问题,所以就不推荐密码前有"@"符号啦!

vim/etc/profile

添加以下代码

#setminioaccount

exportMINIO_ROOT_USER=zxcMinio123

exportMINIO_ROOT_PASSWORD=zxcMinio123

保存退出;

esc+:wq!

重载配置文件

source/etc/profile

后台启动minio

nohup/minio/minioserver/minio/data--console-address":61234">/minio/minio.log2>&1&

说明:

这里的61234端口可以是其他的,你上面运行命令是什么端口下面访问就写什么(情况1:本地虚拟机安装记得开放对应的这个运行端口和9000端口或者你直接关闭虚拟机防火墙;情况2:云服务器安装记得安全组开放这两个端口【记得设置复杂的minio账号密码;或者限制访问的ip为你自己电脑的ip;别问为什么:因为我之前云服务器上mysql由于设置传统root账户root密码被攻击过,不过我是自己玩,没有重要数据攻击了也没事,这里给大家提个醒】)

浏览器访问输入:你的ip:9000或者ip:61234

教下gogs吧,用一遍就会了。端口10880

这里gogs账号和密码都是gogs,先确保你安装了git。

1、首先创建一个组织

该组织通常以项目名命名,填写组织名称。

创建成功,进入管理面板修改组织信息

点击编辑,填写组织名称。

修改成功,进入首页点击组织名称

进入组织首页

下边开始创建团队

假如创建研发团队,填写团队名称

选择权限等级,注意:这里即使选择了权限等级也需要在仓库管理中去管理协作者的权限。

团队创建成功

团队创建成功下边开始创建成员账号。

首先在用户管理中添加账号分配给成员。

然后在下边的界面中向团队添加成员

团队和组织创建完成,下边创建仓库,进入组织,创建仓库。

填写仓库信息

下边配置使用仓库的人员

点击“仓库设置”,

添加协作者,将团队成员的账号添加为协作者。

添加完成注意分配权限,如下图,通常测试人员为读取权限,开发人员为读写权限。

团队Leader需要将初始代码上传至Git仓库,团队成员通过Idea克隆一份项目代码,通过此仓库进行协作开发。

然后回到IDEA将git远程地址复制进去就行,它需要输入凭证,就输刚刚创建的用户或gogs用户

先了解项目每个模块的内容,是干嘛的,比如content的就是主要内容,content-model就是内容的模型,base就是这个项目的基础类。对于课表查询接口就写在content模块里,先定义一个springboot的启动类和controller类,为了方便项目以后的开发,在base里model包里创建PageParams和PageResult类分别用来定义页面查询的参数类和页面结果。

为了方便前后端分离开发之间的数据接收和传输(虽然前后端分离人不分离),文档就很重要。swagger就为我们提供了自动生成文档接口。首先导入swagger的maven坐标:(这个项目里就是xuecheng-content-api里的pom了)

com.spring4allswagger-spring-boot-starter1.9.0.RELEASE

THE END
1.《学成在线》微服务实战项目实操笔记系列(P1~P83)上史上最详细《学成在线》项目实操笔记系列【上】,跟视频的每一P对应,全系列18万字,涵盖详细步骤与问题的解决方案。如果你操作到某一步卡壳,参考这篇,相信会带给你极大启发。 【私藏多年的绝版资料,现在免费送给你,随时会被删除,千万保存下来!有道云笔记】 https://blog.csdn.net/RuanFun/article/details/136032217
2.揭秘网红速成班,套路之下的真相反馈执行和跟进揭秘网红速成班,套路之下的真相_反馈执行和跟进,摘要:本文将揭露网红速成班的真相,探究其背后的套路。通过反馈执行和跟进的方式,揭示网红速成班如何操作,以及学员在其中需要警惕的风险。提醒广大想要通过网红速成班成为网红的人们,要理性看待,审慎选择,避免陷入不http://link.weishuini.cn/explain/12462.html
3.在线学习管理系统:重塑教育未来的创新工具随着互联网技术的飞速发展,教育领域正经历着前所未有的变革。在线学习管理系统作为这一变革的重要推手,正逐步成为教育行业不可或缺的一部分。本文将全面解析在线学习管理系统的内涵、优势、功能及应用场景,为您揭示这一创新工具如何重塑教育未来。 一、在线学习管理系统的内涵 https://www.pbids.com/aboutUs/pbidsNews/1861300265132593152
4.创业赚钱首码项目发布网58好项目网想要在网络上创业赚钱,首先得找到一个可靠的项目。只有参与了项目,你才有机会获得收益。不同的人在选择项目时会有不同的标准,但普遍现象是,很多网络创业者喜欢跟风,什么东西热门就做什么。还有一些人倾向于选择那些宣称能快速赚钱的项目,但急于求成往往容易成为被割的“韭菜”。①:zhidian-keji ②:zhidian998 ③:https://58hxm.com/zhuanqianxiangmu/53355.html
5.变现教育能接到单吗?探讨技能培训在当今市场,技能培训机构为学员提供了提升竞争力的重要途径。梨花教育等机构作为其中的教育者,以其独特的优势帮助学员在职业发展中取得进展。本文将探讨这类机构如何助力学员接到工作。 技能培训的优势 实用技能培养:培训机构通常提供紧贴行业需求的课程。梨花教育通过精心设计的实用课程,使学员在短时间内掌握所需的技能,https://www.jianshu.com/p/ca007fdd35e4
6.成成品网站源码有限公司:打造高效网站建设解决方案除了技术优势外,成成品网站源码有限公司还以优质的售后服务闻名。公司设有专属客服团队,提供7×24小时在线支持,随时解决客户在网站使用过程中遇到的问题。定期的技术培训和运营指导让客户充分掌握网站功能,提升网站的运营效率。 公司还提供长期的维护更新服务,根据市场变化为客户优化网站功能,帮助企业始终保持领先的竞争力。http://www.wenxi.info/wxgl/24144.html
7.成免费CRM特色学生版的特点作为一款提供完整客户管理解决方案的工具,成免费CRM特色学生版精彩推出,专为学生群体量身定制。它不仅可以帮助用户高效管理学习和社交中的各种信息,还能提升时间管理能力,使学生们能够在繁忙的学习之余,有效地达到他们的个人目标,培养良好的项目管理习惯。 成免费CRM特色学生版的用户界面友好,设计之初就考虑到了学生的http://www.fuyaovacuum.com/fuyaogl/26242026.html
8.是面试官觉得学成在线这项目不太行吗?我也准备了这个项目哈哈哈是面试官觉得学成在线这项目不太行吗?我也准备了这个项目哈哈哈查看原帖2 1 相关推荐 11-14 10:00 圣马家沟学院 测试工程师 泰开,我是真的服气 看日期,真的,我真的无语了,所以,他现在到底要啥,饱和了就别跟我说要签约谈薪啊,一周了,都没联系我。最后自己主动联系他跟我说这。滤镜,啪,碎了。就算https://www.nowcoder.com/discuss/comment/16700005?urlSource=sitemapApi
9.微服务[学成在线]day20:项目部署与持续集成(DevOps)为了方便后续回顾该项目时能够清晰的知道本章节讲了哪些内容,并且能够从该章节的笔记中得到一些帮助,所以在完成本章节的学习后在此对本章节所涉及到的知识点进行总结概述。 本章节为【学成在线】项目的day20的内容。 原讲义中对该章节的gitlab与jenkins安装步骤以及部署容器的内容和步骤描述得不够详细,在本文中做出了https://cloud.tencent.com/developer/article/1674594
10.智慧学成:智慧学成项目是对在线教育平台业务进行大数据统计分析智慧学成项目是对在线教育平台业务进行大数据统计分析的系统,对课程、用户、教育机构三个业务 领域进行数据挖掘,采用企业级ETL的规范化研发流程,以及企业级数据仓库建模思想,对课程、用户、机构三个主题的不同维度进行数据分析,挖掘数据的价值,为在线教育平台运营提供参考数据依 据。 https://gitee.com/wqgalex/xc-analysis
11.有效提高学习效率的方法总结(通用10篇)有的是自愿地积极地努力学,有的是被迫地无奈地勉强学;有的自始自终活到老学到老,有的忽冷忽热三天打鱼两天晒网;有的坚持数年学有所成,有的涉猎多方效果不佳。这都是因为什么呢?原因可能是多方面的,但是,其中“学习效率”是重要因素之一。有的提出下列公式:学习效果=学习效率×学习时间,要取得好的学习效果,一https://www.yjbys.com/xuexi/zongjie/689122.html
12.蒙大拿大学美国留学院校2013年初,Coursera在线学习平台上的5门在线课程的学分获得美国教育委员会(ACE)的官方认证,这意味着在线学习者修读完这5门在线课程所获得的学分可能被其他大学认可,也可以转换成其他大学相应的学分。 2.国内在线教育办学机制方面缺乏多机构协同合作,较为单一 目前国内高校对外的在线教育是借助几大MOOC平台商,对内是建设https://www.unitedmoney.com/liuxuexuexiao/948822236.html
13.java免费开源在线教育系统在线java开发学成在线项目是传智燕青老师研发的JavaEE分布式微服务架构项目,采用SpringCloud框架研发,课程共20天,应广大学员的建议现将整个项目的技术点以问题的形式进行总结,方便大家学习总结。 1 学成在线是个什么样的项目? 从两个方面进行阐述: 1)项目的功能(业务) https://blog.51cto.com/u_16099279/6735784
14.海南广播电视大学海南省干部在线学习中心平台综合服务项目海南省教学仪器设备招标中心受海南广播电视大学的委托,对招标编号: HNJY2019-12-16, 海南省干部在线学习中心平台综合服务项目进行竞争性谈判招标采购,并于2020年1月7日完成评审工作。 经专家组评审推荐,采购人确认,现将中标结果公告如下: 评审专家:王莹莹、王恩深、周伟。如对上述中标结果有疑义,请于即日起7个工作https://www.ccgp-hainan.gov.cn/cgw/cgw_show_cjgg.jsp?id=24635
15.2020年5月段旭名班主任工作室活动简报段旭工作室深居俯夹城,春去夏犹清。5月9日上午,双流区教科院周蓉老师主持开展了主题为“班主任基本技能培训暨技能大赛项目解读”的线上教研活动。活动中几位优秀班主任为大家进行主题分享,工作室学员姜蔚老师也有幸受邀进行主题发言。工作室全体成员在线上参与了本次活动。 http://www.slypzx.com/studio.php/index/content/id/24647
16.上海立达学院成人高考怎么样报名考试?考试科目有哪些?上海立达学院继续教育学院已经过上海市教育委员会批准,该部门是学校继续教育管理的职能部门,代表学校对全校各类继续教育办学项目进行统一管理。那么,上海立达学院成人高考怎么样报名考试?考试科目有哪些?下面小编将为你解答,具体如下: 上海立达学院成人高考怎么样报名考试 https://www.eol.cn/baokao/yxfwshldxycjwt/20241213103953.html
17.干货!这些线上微课,教你宅家也能搞学术!澎湃号·政务本科生毕业论文怎么写? 临近毕业担心论文? 别担心! 我财经济学院教师围绕学生需求 打造“私人定制”微课堂 俞剑老师论文写作指导课,来啦! 《本科生毕业论文写作与指导》 主讲人:俞剑 中国人民大学经济学博士,现担任经济学院副教授、硕士生导师。 // 内容简介 https://www.thepaper.cn/newsDetail_forward_6317775
18.优途UX教育怎么样?2023年课程介绍,深圳UX+UI设计培训机构目前UI设计师的门槛已经很高,我们的课程时间也是从最初2016年的3个月加到如今近5个多月时间的,UI交互设计已经过了随便学学就能上班的时间节点,必须专业才行,学完我们整个课程会完整完成4个实战项目,因为我们是从需求调研-市场分析-用户体验报告-用户画像-功能权重-业务流程图-信息框架图-产品原型-UI视觉界面设计-UIhttps://www.yoojia.com/ask/17-11562387145828738598.html
19.橙子学院首页为什么选择橙子学院? 系统化课程 最系统的职场课程,让思维体系化 任务式输出 任务式学习,给你精准反馈 数据式呈现 学得怎么样?用数据说话 系统化课程以全面的、整体的视角梳理职场技能 将零散的职场知识和技能聚合成四大体系课程:以职场定位为基础,通过提高软硬技能,打造职场竞争力,实现自我领导,提升职场综合素质https://api.xjy.cn/weixin/chengzi/