SpringBoot2.X+Vue+UniAPP 全栈开发医疗小程序 中间件搭建

news2025/2/6 8:59:19

文章目录

          • 一、安装Docker环境
            • 1. 关闭SELINUX服务
            • 2. 更新yum程序
            • 3. 安装Docker
            • 4. 管理Docker
          • 二、搭建HBase+Phoenix大数据平台
            • 2.1. 加载镜像
            • 2.2. 创建容器
            • 2.3. 创建逻辑库
            • 2.4. 创建数据表与导入数据
            • 2.5. 配置JDBC连接信息
          • 三、Redis服务
            • 3.1. 加载镜像
            • 3.2. 配置文件
            • 3.3. 创建Redis容器
          • 四、RabbitMQ服务
            • 4.1. 加载RabbitMQ镜像
            • 4.2. 创建RabbitMQ容器
          • 五、Minio服务
            • 5.1. 加载RabbitMQ镜像
            • 5.2. 创建minio容器
          • 六、重启Linux之后的任务清单
          • 七、防火墙服务

一、安装Docker环境
1. 关闭SELINUX服务
vim /etc/sysconfig/selinux

SELINUX=disabled

2. 更新yum程序
yum update -y
3. 安装Docker
yum install docker -y
4. 管理Docker
systemctl start docker
systemctl status docker
systemctl stop docker
docker images
二、搭建HBase+Phoenix大数据平台
2.1. 加载镜像
docker load < phoenix.tar.gz
2.2. 创建容器

因为镜像中已经包含和HBase和Phoenix,所以我们只需要创建出容器即可。由于HBase需要使用的内存
较大,这里我没有规定具体的内存大小,容器会自动使用空闲的内存。容器中数据目录是 /tmp/hbase-root/hbase/data ,我把这个目录映射到宿主机的 /root/hbase/data 目录。


mkdir /root/hbase/data -p
docker run -it -d -p 2181:2181 -p 8765:8765 -p 15165:15165 \
-p 16000:16000 -p 16010:16010 -p 16020:16020 \
-v /root/hbase/data:/tmp/hbase-root/hbase/data \
--name phoenix \
boostport/hbase-phoenix-all-in-one:2.0-5.0

运行命令,进入到Phoenix容器中,然后执行命令设置 HBASE_CONF_DIR 环境变量。

docker exec  -it phoenix bash
export  HBASE_CONF_DIR=/opt/hbase/conf/

接下来我们要连接Phoenix的命令行客户端。虽然IDEA也内置了Phoenix客户端,但是Bug挺多的,用着并不方便,所以我建议大家使用Phoenix自带的命令行客户端更好一些。而且我们要执行的SQL语句也并不多,命令行客户端已经足够用了。

/opt/phoenix-server/bin/sqlline.py localhost
2.3. 创建逻辑库

为了存储数据,我们需要像操作MySQL一样,先创建逻辑库,然后定义数据表。在Phoenix的命令行客户
端我们先来执行创建逻辑库的命令。

CREATE SCHEMA hospital;
USE hospital;
2.4. 创建数据表与导入数据

在本课程的git上面有 数据库脚本.SQL文件 ,你把这个SQL文件中的语句复制粘贴到Phoenix的命令行中执行即可。
在这里插入图片描述

2.5. 配置JDBC连接信息

把 hospital-api 和 patient-wx-api 两个项目的 application.yml 文件打开,确认其中JDBC数据库连接
信息。因为连接的是本地Phoenix,所以写 localhost 是可以的。但是如果你采用的是云主机部署
Phoenix,那么就要把 localhost 改成你云主机的IP地址,切记!

spring:
  datasource:
    driver-class-name: org.apache.phoenix.queryserver.client.Driver
    url: jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      test-on-borrow: true
      test-while-idle: true
      max-active: 8
      min-idle: 4
      validation-query: SELECT 1

补充

phoenix逻辑删除恢复
docker exec  -it phoenix bash
export  HBASE_CONF_DIR=/opt/hbase/conf/
/opt/phoenix-server/bin/sqlline.py localhost
USE hospital;
UPSERT INTO HOSPITAL.DOCTOR("id", "status") VALUES(1,1);
UPSERT INTO HOSPITAL.DOCTOR("id", "status") VALUES(2,1);
UPSERT INTO HOSPITAL.DOCTOR("id", "status") VALUES(5,1);
三、Redis服务
3.1. 加载镜像
docker load <  Redis.tar.gz
3.2. 配置文件

Redis的容器已经放在Git上面了,你把Redis镜像上传到CentOS系统里面,然后执行命令,把Redis镜像导入到Docker环境中。
在CentOS系统中创建 /root/redis/conf/redis.conf 文件,然后添加如下内容:

mkdir /root/redis/conf/ -p
vim /root/redis/conf/redis.conf

文件内容:

bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 4
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
requirepass abc123456
3.3. 创建Redis容器
docker run -it -d --name redis -p 6379:6379 \
-v /root/redis/conf:/usr/local/etc/redis \
-e TZ=Asia/Shanghai \
redis:6.0.10 \
redis-server /usr/local/etc/redis/redis.conf

application.yml

spring:
  redis:
    database: 0
    host: localhost
    port: 6379
    password: abc123456
    jedis:
      pool:
        max-active: 1000
        max-wait: -1ms
        max-idle: 16
        min-idle: 8
四、RabbitMQ服务
4.1. 加载RabbitMQ镜像
docker load < RabbitMQ.tar.gz

操作日志

[root@VM-8-5-centos ~]# docker load < RabbitMQ.tar.gz
b43408d5f11b: Loading layer [==================================================>]  65.62MB/65.62MB
23135df75b44: Loading layer [==================================================>]  15.87kB/15.87kB
fe6d8881187d: Loading layer [==================================================>]  3.072kB/3.072kB
8bc1ba4d95dc: Loading layer [==================================================>]   2.55MB/2.55MB
7399addcf24e: Loading layer [==================================================>]  85.11MB/85.11MB
2227d456a09d: Loading layer [==================================================>]  407.6kB/407.6kB
0ec8cf4045cf: Loading layer [==================================================>]  17.45MB/17.45MB
41e8478f77cd: Loading layer [==================================================>]  4.608kB/4.608kB
05bbc2fa1a80: Loading layer [==================================================>]  1.536kB/1.536kB
929c6b42cf54: Loading layer [==================================================>]  16.38kB/16.38kB

在本项目中通知消息用到了RabbitMQ技术,所以我们要把RabbitMQ容器给创建出来。由于不管什么数据库,MySQL也好、MongoDB也好,甚至说HBase,我们都无法给保存的记录设置过期时间。在一个对外运营的商业项目中,总是会有很多僵尸用户:他们常年不上线。如果我们发送系统公告消息的时候,要不要给这些人发送消息呢?当然要,但是不必永久保存。我们把公告消息发送到RabbitMQ的消息队列中,给消息设置过期时间。假如在消息过期时间,用户上线了,那么他就可以收到公告消息,并且系统会把他收到的公告消息转存到数据库中,永久保存。那些常年不上线的僵尸用户,发给他们的系统公告消息过了过期时间,会自动从RabbitMQ中删除,也不会转存到数据库中,这样我们就避免了为大量僵尸用户保存系统消息而占用海量存储存空间。
你把课程Git上面的RabbitMQ镜像文件,上传到CentOS系统中,接下来我们执行命令,往Docker中导入镜像。

4.2. 创建RabbitMQ容器
docker run -it -d --name mq \
-p 4369:4369 -p 5671:5671 -p 5672:5672 \
-e TZ=Asia/Shanghai \
rabbitmq:3.8.9
五、Minio服务
5.1. 加载RabbitMQ镜像
docker load <  Minio.tar.gz

操作日志

[root@VM-8-5-centos ~]# docker load <  Minio.tar.gz
ae58f1561944: Loading layer [==================================================>]   70.8MB/70.8MB
43a8e5d185ca: Loading layer [==================================================>]  81.92kB/81.92kB
2ad991be0a48: Loading layer [==================================================>]  15.95MB/15.95MB
52b25a3b80bb: Loading layer [==================================================>]  2.097MB/2.097MB
39e34e0f442e: Loading layer [==================================================>]  22.39MB/22.39MB
37bef40c374d: Loading layer [==================================================>]  109.4MB/109.4MB
d343281df384: Loading layer [==================================================>]  2.307MB/2.307MB
16a5bbe10c89: Loading layer [==================================================>]  5.632kB/5.632kB
5053d714431a: Loading layer [==================================================>]  2.048kB/2.048kB
f2d2b9b4bb61: Loading layer [==================================================>]  36.35kB/36.35kB
2dd0567cec31: Loading layer [==================================================>]  22.39MB/22.39MB
bf0dfbf72d29: Loading layer [==================================================>]   5.12kB/5.12kB
5.2. 创建minio容器
mkdir /root/minio/data -p
chmod  -R 777 /root/minio/data/
docker run -it -d --name minio \
-p 9000:9000 -p 9001:9001 \
-v /root/minio/data:/data \
-e TZ=Asia/Shanghai --privileged=true \
--env MINIO_ROOT_USER=root \
--env MINIO_ROOT_PASSWORD="abc123456" \
bitnami/minio:latest

创建好容器之后,我们打开浏览器,访问 http://localhost:9001/login ,然后填写好登陆信息,就能进入Web管理画面。
在Web管理画面中,我们创建 hospital 存储桶,并且把存储桶的访问权限设定成 Public
创建存储桶hospital在这里插入图片描述

为了批量向存储桶中上传文件,所以我们要借助于FTP软件(MobaXterm不支持上传文件夹,所以要用其他的FTP软件)。大家到网上下载 Filezilla 这款软件,然后连接到CentOS的22端口,就跟SSH连接一样。
在这里插入图片描述
把课程Git上面Minio目录中的 doctor 和 patient-wx 两个文件夹,上传到CentOS的 /root/minio/data/hospital 目录中。然后在Minio的Web管理画面中刷新一下,就能看到存储桶里面的这两个目录和里面的文件了。

chmod  -R 777 /root/minio/data/

在这里插入图片描述

六、重启Linux之后的任务清单

使用云主机的同学,每天启动虚拟机之后,首先要运行Docker服务,然后还要把Docker里面的容器逐一运行起来,具体的指令如下:
顺便你可以运行 docker ps -a 指令看一下容器运行的状态,如果是是 Exited ,说明容器没有启动,你可以用 docker logs 容器名称 查看一下容器日志信息,找出其中的异常信息。
centos6.x

service docker start
service docker status

centos7.x

systemctl start docker
systemctl status docker

docker start phoenix
docker start redis
docker start mq
docker start minio
七、防火墙服务
6379、9000、9001、8765、15165、16000、16010、16020端口

在这里插入图片描述

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

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

相关文章

专注性能的多端研发框架 - ice.js 3 正式发布!

ice.js 框架在之前的版本中&#xff0c;主要服务于中后台 / PC 的项目研发&#xff0c;而随着无线端以及多端能力的拓展&#xff0c;ice.js 3 将成为一套面向大淘宝技术的终端应用框架。因此在 ice.js 3 的版本中除了「开发者体验」之外&#xff0c;还围绕「用户体验」探索了大…

拥抱实体经济,可以说是当下互联网参与者的首要选择

拥抱实体经济&#xff0c;绝对是当下互联网玩家们的首要选择。无论是头部的互联网企业来讲&#xff0c;还是新生的互联网玩家而言&#xff0c;它们都不约而同地将关注的焦点聚焦在了这样一个方向上。   透过这一点&#xff0c;我们可以非常明显地感受到&#xff0c;一个全新的…

1574_AURIX_TC275_SCU中的杂项控制

全部学习汇总&#xff1a; GitHub - GreyZhang/g_TC275: happy hacking for TC275! 接下来的这一段算是SCU章节最后的一次内容梳理了&#xff0c;剩下的内容也不是很多了。杂项并不是英文的直接翻译&#xff0c;算是我自己选择的一个表达方式。 这里涉及到的功能有CCU6&#x…

基于机器学习算法与历史数据预测未来的站点关闭(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 应用背景&#xff1a; 通过分析序列进行合理预测&#xff0c;做到提前掌握未来的发展趋势&#xff0c;为业务决策提供依据&am…

2023材料科学与工程国际会议(CoMSE 2023)

2023材料科学与工程国际会议&#xff08;CoMSE 2023&#xff09; 重要信息 会议网址&#xff1a;www.icomse.org 会议时间&#xff1a;2023年3月24-26日 召开地点&#xff1a;中国上海 截稿时间&#xff1a;2023年1月25日 录用通知&#xff1a;投稿后2周内 收录检索&…

手把手教你使用Appium进行IOS真机自动化测试

讲解方式&#xff1a; 课程内容条理清晰&#xff0c;目标明确&#xff0c;由浅入深&#xff0c;环环相扣。重点部分进行额外梳理和总结&#xff0c;更易理解和吸收。 教程推荐&#xff1a;使用Appium进行IOS真机自动化测试 课程亮点&#xff1a;1&#xff0c;讲解清晰&a…

VRRP多备份组+策略路由实现主备负载

上篇文章&#xff0c;我们介绍了VRRP单备份组和策略路由之间主备切换的差异&#xff08;&#xff09;&#xff0c;整体上看&#xff0c;单备份组VRRP的主备切换速度非常快&#xff0c;用过调整配置&#xff0c;可以轻轻松松将切换时间压缩到1秒钟以内&#xff1b;但是主备之间无…

【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)

DStream编程 批处理引擎Spark Core把输入的数据按照一定的时间片&#xff08;如1s&#xff09;分成一段一段的数据&#xff0c;每一段数据都会转换成RDD输入到Spark Core中&#xff0c;然后将DStream操作转换为RDD算子的相关操作&#xff0c;即转换操作、窗口操作以及输出操作…

和冬天有关的歌

我写过关于四季《新朝花夕拾》&#xff0c;我也写过关于夏天的歌&#xff1a;《和夏天有关的歌》&#xff0c;所以我也想写写冬天。&#xff08;1&#xff09;北风当你想到冬天的时候&#xff0c;你会想起什么&#xff1f;我会想到&#xff1a;北风、北方。正好有这么一首歌&am…

神经网络架构搜索

神经网络架构搜索 定义内涵 神经网络架构搜索是为给定数据集自动找到一个或多个架构的任务&#xff0c;这些架构将为给定 的数据集生成具有良好结果的模型&#xff0c;其本质是在高维空间的最优参数搜索问题。 技术背景 深度学习模型的使用越来越大众化&#xff0c;在很多行…

免费内网穿透工具测评对比,谁更好用 3

文章目录1. 前言2. 对比内容2.1 TCP协议功能及操作对比2.1.1 网云穿的TCP设置2.1.2 cpolar的TCP设置1.2 使用感受对比3. 结语1. 前言 发布本地网页通常是内网穿透的主要作用之一&#xff0c;但并不是唯一作用&#xff0c;内网穿透还能将本地硬件发布到公共互联网上&#xff0c…

ASP.NET企业HR人力资源管理系统源码(带使用手册和操作说明)

中小型企业HR人力资源管理系统源码带使用手册和操作说明 【程序语言】&#xff1a;.NET 【数据库】&#xff1a;SQL SERVER 2008 【运行环境】&#xff1a;WINDOWSIIS 【其他】&#xff1a;前端bootstrap框架 了解更多HR源码事宜可私信我&#xff01; 系统运行环境&#x…

微信小程序云开发博客系统源代码,让写博客像发朋友圈一样简单,含使用部署教程

博客就两种&#xff1a;一是随笔&#xff0c;记录自己的成长历程&#xff0c;二是有目的的发文&#xff0c;例如搬运各种网赚文&#xff0c;我想大部分朋友做博客的初衷都是有一块自己的心灵净土&#xff0c;于是催生了wxapp-blog这款小程序。 完整代码下载地址&#xff1a;微…

零基础如何系统地自学Python?Python应该怎么学?

这次疫情让很多人&#xff0c;都发现自己真的适合群居&#xff0c;也让部分人觉得独居是个不错的选择&#xff0c;但是大部分人都会更明白工作的重要性。 如果没有收入&#xff0c;没有朋友&#xff0c;没有同事&#xff0c;没有那些鸡毛蒜皮的小事&#xff0c;会发现&#xf…

C++ Primer 第六章 函数

C Primer 第六章 函数6.1. Function BasicsParameters and Arguments6.2. Argument Passing6.2.3. const Parameters and Arguments6.2.4. Array Parameters6.2.6. Functions with Varying Parametersinitializer_list ParametersEllipsis Parameters6.3. Return Types and the…

Java多线程-线程的创建(Thread类的基本使用)

文章目录一. 线程和Thread类1. 线程和Thread类1.1 Thread类的构造方法1.2 启用线程的相关方法2. 创建第一个Java多线程程序3. 使用Runnable对象创建线程4. 使用内部类创建线程5. 使用Lambada表达式创建线程6. 多线程并发执行简单演示7. 多线程并发执行的优势二. Thread类的属性…

【专业数据】六.2020~2022年北京交通大学【新一代电子信息技术】专业复试线/分数线差/计划招生数/复试数/录取数/复试比例/录取率

文章目录 1.专业介绍2.2020-2022年国家线/复试线/分数线差2.1.数据总览2.2.数据指标2.2.1.复试分数线2.2.2.分数线差3.2020-2022年计划招生数/复试数/录取数/复试比例/录取率3.1.数据总览3.2.数据指标3.2.1.复试比例3.2.2.录取率4.参考资料欢迎订阅本专栏:《北交计算机复试经验…

【数据结构】树和二叉树

半山腰很挤&#xff0c;你得去山顶看看 目录 1.树 1.1 树的概念 1.2 树的特征 1.3 树每个结点的关系 1.4 树的表示形式 2.二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储 2.5 二叉树的基本操作 2.5.1 判断二叉树是否为空 2.…

JAVA类的继承和多态基础笔记(二)

1.继承的基本概念 父类中某一个属性是私有的&#xff0c;通过子类对象就不能访问父类的私有变量。 继承完之后拥有父类全部的东西&#xff0c;但是可以根据实际情况进行重写。 一般所有的类都是继承Object的&#xff0c;实现所有他的方法 像这样是重写了Object类的tostring方法…

[附源码]计算机毕业设计Python共享汽车系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…