我们主要搞的就是微服务层和数据层。
在开发这个项目前,你需要了解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了)