MDM监管锁系统租赁系统搭建教程

材料准备

  1. 使用公司资质申请苹果开发者账号

    https://support.tuya.com/zh/help/_detail/Kam3pskapsytn

    注意事项:

    1. 填写公司官网的时候 公司官网必须可以访问 且官网包含公司的 地址 联系方式 等信息 否则会被拒绝

在这里插入图片描述

  1. 申请苹果开发者的appleid 最好使用已经注册并使用一段时间的appleid 否则会风控,申请苹果开发者的手机和网络一定不要是已经申请过开发者的,否则也会风控

  2. 使用公司资质申请苹果商务管理,苹果商务管理申请需要一个企业邮箱

    https://support.apple.com/zh-cn/guide/apple-business-manager/axm402206497/web

环境准备

  1. 域名一个并解析到服务器

  2. 国内备案服务器一个 配置最低要求2h4g

  3. 域名ssl证书 推荐申请个有效期一年的 ssl证书到期不更换会导致无法控制设备

  4. mysql5.7数据库 并创建数据库 mdmadmin 导入sql文件夹下最新版本mdmadmin.sql

  5. redis3.2.12

  6. 服务器要求centos7需要安装Python2 和 openssl 以及openjdk java1.8 mysql和redis可以部署不同服务器

  7. nginx反向代理到34567端口 nginx配置参考 nginx文件

  8. 安装字体

    yum install epel-release -y && yum install fontconfig -y && fc-cache --force
    
  9. 安装nginx redis java1.8

     yum install -y nginx redis java-1.8.0-openjdk-src.x86_64systemctl start redis && systemctl enable redissystemctl start nginx && systemctl enable nginx
    
  10. 安装mysql

    查询是否有mysql冲突依赖

    rpm -qa|grep mariadb
    
    rpm -e  --nodeps 列出的包名
    

在这里插入图片描述

上传部署包内的mysql安装包到/opt

在这里插入图片描述

安装环境并启动与设置自启动```
cd /opt
yum -y install net-tools perl libaio numactl
rpm -ivh mysql-community-common-5.7.44-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm
systemctl start mysqld
systemctl enable mysqld.service
```查看临时密码```
grep 'temporary password' /var/log/mysqld.log
```

在这里插入图片描述
进入mysql

```
mysql -u root -p 临时密码
```

在这里插入图片描述

修改mysql密码```
ALTER USER 'root'@'localhost' IDENTIFIED BY '你得mysql密码';
```更新权限并退出重启```
use mysql;
update user set host="%" where user="root";
quit;
systemctl restart mysqld
```
  1. 配置nginx

    创建一个你的域名.conf文件 内容参考如下 域名改为你自己的域名 ssl证书位置也要对应修改

    server {listen         80;server_name    mdm.ppgjx.com; # 域名client_max_body_size 1024M;add_header Strict-Transport-Security max-age=15768000;return 301 https://$server_name$request_uri;
    }
    server {listen 443 ssl; # 老版本是ssl on;较新的为listen 443 ssl;server_name mdm.ppgjx.com; # 域名keepalive_timeout 10m;client_max_body_size 1024M;ssl_certificate      /etc/nginx/cert/mdm.ppgjx.com.pem; # 申请的证书,把证书和秘钥上传到nginx.conf的同级目录cert的目录下ssl_certificate_key  /etc/nginx/cert/mdm.ppgjx.com.key; # 秘钥ssl_session_timeout 24h;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;location /_AMapService/ {set $args "$args&jscode=db3c4ab14c402d6c9ce1e7d66d3c09f6"; #高德地图的jscodeproxy_pass https://restapi.amap.com/;}location / {proxy_pass http://127.0.0.1:34567; # 反向代理到本机的10801端口,10801端口的那个服务器不需要任何关>于https的配置。proxy_redirect off;root /opt/mdm/data/web; # 替换为你实际的web根目录路径proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-Port $server_port;add_header Content-Security-Policy upgrade-insecure-requests;}
    }
    

    配置文件传入/etc/nginx/conf.d下

    在这里插入图片描述

    /etc/nginx创建cert文件夹 将申请好的ssl证书改名传入 和上面创建的nginx配置文件ssl证书位置需要对应

    在这里插入图片描述

    重启nginx

    systemctl restart nginx
    
  2. 配置redis redis配置文件在 /etc/redis.conf

    找到requirepass foobared 解除注释 修改为你得redis密码

在这里插入图片描述

重启redis```
systemctl restart nginx
```
  1. 修改application-dev.yml 文件 主要修改里面的mysql 和redis信息 其他酌情修改

    在这里插入图片描述

  2. 配置签名证书

    使用刚才的ssl证书,把私钥文件改名为 cert.key 证书文件改为 cert.pem 传入 部署包下面的 data/cert下

    在这里插入图片描述

    需要注意的是 pem文件里面 需要包含 ca证书 中级证书 和最终的颁发的证书 组成一个证书链 否则无法成功签名

    ca证书 中级证书 和最终的颁发的证书有先后顺序分别是 最上层 最终的颁发的证书 中层 中级证书 最低层 ca证书

    在这里插入图片描述

  3. 修改openssl.cnf文件

    openssl.cnf位置在部署包 下的 data/static 下 具体信息可根据自己的公司信息修改 最终会体现在 用户安装的描述文件中 不修改也可以使用

  4. 上传http.pac文件 到oss上

    http.pac文件在部署包的 data/static 下 上传后拿到下载链接保留待会使用

  5. 上传截图文件到 服务器/opt/mdm目录

    在这里插入图片描述

  6. 给予 xjar文件 执行权限

    chmod -R 777 /opt/mdm/xjar
    
  7. 创建数据库并导入最新版本sql文件 这里也可以通过工具导入

    在这里插入图片描述

  8. 创建systemctl服务器文件/usr/lib/systemd/system/mdm.service

    在这里插入图片描述

    文件写入此内容

    [Unit]
    After=syslog.target network.target remote-fs.target nss-lookup.target[Service]
    WorkingDirectory=/opt/mdm
    User=root
    Group=root
    Type=simple
    ExecStart=/opt/mdm/xjar /usr/bin/java -jar /opt/mdm/mdmadmin-0.0.1-SNAPSHOT.xjar --spring.config.location=/opt/mdm/application-dev.yml
    PrivateTmp=true[Install]
    WantedBy=multi-user.target
    

    刷新服务器

    systemctl daemon-reload
    

    在这里插入图片描述

    启动mdm服务

    systemctl start mdm
    

    查看mdm状态 绿色表示启动成功

    systemctl status mdm
    

在这里插入图片描述

启动成功后需要等待启动完毕可以查看启动日志```
journalctl -u mdm -f
```

在这里插入图片描述

找到当前版本 表示部署成功 部署完毕后 进入域名  默认账号:super 密码:123456设置mdm自启动 设置自启动后如果服务器意外宕机也会自动恢复服务```
systemctl enable mdm
```

维护与更新

  1. 启动命令

    systemctl start mdm
    

    查看是否启动成功

    systemctl status mdm
    

    在这里插入图片描述

    启动成功后需要等待启动完毕可以查看启动日志 一定要查看日志才能确定是否启动成功

    journalctl -u mdm -f
    

    在这里插入图片描述

  2. 关闭服务命令

    systemctl stop mdm
    
  3. 更新

    建议在服务器上创建一个版本 记录当前版本

    在这里插入图片描述

    每次给的更新部署包都会有一个版本更新文件比如我当前是1.0.1 版本需要更新到 1.0.3版本 就需要先执行1.0.2的更新 再去进行1.0.3的更新

    在这里插入图片描述

    更新步骤

    关闭服务 建议等待10秒

    systemctl stop mdm
    

    查看更新日志 修改数据库等需要更改的东西 然后将 xjar文件和mdmadmin-0.0.1-SNAPSHOT.xjar备份 将新版本的xjar和mdmadmin-0.0.1-SNAPSHOT.xjar传入服务器执行启动命令

    systemctl start mdm
    

    查看是否启动成功

    systemctl status mdm
    
    journalctl -u mdm -f
    

第一次部署配置

  1. 修改系统设置

    使用默认管理员账号登录后台进入 管理设置->系统设置 以下是功能列表说明

    • api注册接口秘钥

      用于自动化注册接口 必须修改

    • 设备访问限制修改后自动关闭时间/ 秒 为0则不使用

      特定场景:假设某个客户需要临时开启某个手机权限,但是时间一久可能忘了关闭会导致设备有解绑的风险,如果设置不为0,则到时间以后会自动关闭权限

      在这里插入图片描述

    • 设备状态检测时间 /秒

      为了感知用户设备是否在线,服务器每隔段时间都会下发命令到手机测试手机是否会在线,此功能是下发时间,建议默认
      在这里插入图片描述

    • 异步任务超过这个时间没有报到 则重试推送 /秒

      下发命令如果没有设备没有按指定时间内执行 则重新下发 建议默认

    • 非等待命令过期时间 /秒

      默认即可

    • 设备等待超时时间/秒

      非异步命令可以感知命令是否执行成功,如果等待时间内设备没有执行命令则取消这个命令 建议默认

    • 禁止退出远程管理 1是 0否

      开启后设备无法通过 设置->通用->VPN与设备管理->移动设备管理->退出远程管理 来抹掉设备 建议默认

      开启此功能可能会导致用户设备无法使用银行APP,如果判断是正常用户可以给予开启

    • 域名

      必须修改为你当前域名

    • httpPac代理文件url

      这里需要修改为之前上传oss的http.pac文件链接 请务必保证pac文件可以访问 否则用户设备可能会出现无法上网

    • 登录验证码 1开启 0关闭

      登录验证码 根据自己需求开启

      注册邮箱配置

      如果不配置 则注册无法使用 邮箱申请专用密码可参考

      https://www.ujcms.com/documentation/351.html

    • mailConnectionTimeout

      默认即可

    • mailFrom

      发邮件的邮箱

    • mailHost

      邮件服务器列如 qq邮箱为 smtp.qq.com

    • mailPass

      专用密码

    • mailPort

      邮箱服务器端口

    • mailSocketFactoryClass

      默认

    • mailSocketFactoryFallback

      默认

    • mailSocketFactoryPort

      邮箱服务器端口

    • mailSslEnable

      默认

    • mailStarttlsEnable

      默认

    • mailTimeout

      默认

    • mailUser

      发邮件的邮箱

    • 任务失败重试时间 /秒

      设备命令并不是一定会被手机执行成功的,列如手机正在更新,此参数在命令执行失败后会重新尝试下发命令

    修改后需要进行保存才能生效 一定需要检查输入前后有没有空格

服务器维护

  • 服务器防火墙或者安全组只保留80 443端口 ssh端口设置ip白名单
  • ssl证书到期需要提前更新 否则会无法控制设备
  • 如果服务器厂商支持 建议服务器每天打个快照保留其他 保证数据安全 因为数据库不是用的云数据库打快照很有必要

接口文档

采用的是swgger

https://你的域名/doc.html

接口文档账号密码在application-dev.yml文件里 建议修改

前端编译

前端采用的是vue-element

源代码再部署包里的mdm_vue.zip

node版本v16.20.2

使用idea 找到package.json 箭头执行即可

在这里插入图片描述

执行完毕后 在disk文件夹下生成编译后的文件 传入 /opt/mdm/data/web/ 覆盖即可

在这里插入图片描述

服务器架构

后端采用 spring boot + mybatis + mysql + redis

前端 vue + element ui

高德地图申请

由于设备定位需要用到地图功能 需要申请高德地图

  1. 进入高德地图官网 https://lbs.amap.com/ 注册一个账户并登录

  2. 进入后台 创建应用

    https://console.amap.com/dev/key/app
    在这里插入图片描述

    1. 创建应用完毕后添加key

    在这里插入图片描述

    1. 添加key选择web端

    添加完毕以后会拿到key和安全秘钥

    1. 安全秘钥需要传入nginx

      在这里插入图片描述

    2. key需要修改前端 编译后更新服务器即可

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8.5 数据库基础技术-规范化

函数依赖 函数依赖公理系统

每日Attention学习15——Cross-Model Grafting Module

模块出处 [CVPR 22] [link] [code] Pyramid Grafting Network for One-Stage High Resolution Saliency Detection 模块名称 Cross-Model Grafting Module (CMGM) 模块作用 Transformer与CNN之间的特征融合 模块结构 模块思想 Transformer在全局特征上更优,CNN在…

Puppeteer Web 抓取:使用 Browserless 的 Docker

Docker 镜像介绍 Docker 镜像是用于在 Docker 容器中执行代码的文件。它类似于构建 Docker 容器的指令集,就像一个模板。换句话说,它们相当于虚拟机环境中的快照。 Docker 镜像包含运行容器所需的所有库、依赖项和文件,使其成为容器的独立可…

【Pytorch】生成对抗网络实战

GAN框架基于两个模型的竞争,Generator生成器和Discriminator鉴别器。生成器生成假图像,鉴别器则尝试从假图像中识别真实的图像。作为这种竞争的结果,生成器将生成更好看的假图像,而鉴别器将更好地识别它们。 目录 创建数据集 定…

前端宝典十一:前端工程化稳定性方案

一、工程化体系介绍 1、什么是前端工程化 前端工程化 前端 软件工程;前端工程化 将工程方法系统化地应用到前端开发中;前端工程化 系统、严谨、可量化的方法开发、运营和维护前端应用程序;前端工程化 基于业务诉求,梳理出最…

redhawk:STA timing data file解析

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 往期文章:

PyTorch深度学习网络(一:MLP)

全连接神经网络,又称多层感知机(MLP),是深度学习最基础的神经网络。全连接神经网络主要由输入层、隐藏层和输出层构成。本文实现了一个通用MLP网络,包括以下功能: 根据输入的特征数、类别数、各隐藏层神经…

以简单的例子从头开始建spring boot web多模块项目(五)-thymeleaf引擎

继续向里面加,这次是引入thymeleaf渲染引擎。 使用这个引擎的很多,主要是以下几个优点: Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎。Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 -HTML可以在浏览器中正确显…

Vue3加vite使用Cesium绘制图形

Vue3加vite使用Cesium绘制图形 1、项目开发准备 Node版本:16.20.2 1.1创建一个新的工程:my-cesium-app npm create vitelatest my-cesium-app – --template vue1.2 安装Element Plus npm install element-plus --save // main.js import ElementPl…

【STM32】看门狗

看门狗,还没有别的地方用上,暂时还不清楚在实际应用中最多的场景是什么,我感觉是用来强制重启系统。 大部分图片来源:正点原子HAL库教程 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 应用场景 1.1 解决…

Langchain Memory组件深度剖析:从对话基础到高级链式应用

文章目录 前言一、Langchain memory 记忆1.Memory 组件基本介绍2.Memory 组件的类型1.ChatMessageHistory2.ConversationBufferMemory3.ConversationBufferWindowMemory4.ConversationEntityMemory5.ConversationKGMemory6.ConversationSummaryMemory 二、长时记忆1.简单介绍2.…

解决ubuntu22.04无法识别CH340/CH341和vscode espidf插件无法选择串口设备节点问题

文章目录 解决ubuntu22.04无法识别CH340/CH341和vscode espidf插件无法选择串口设备节点问题不识别CH340/CH341报错解决办法升级驱动编译安装 卸载brltty程序 vscode espidf插件无法选择串口设备节点问题解决办法编译安装 解决ubuntu22.04无法识别CH340/CH341和vscode espidf插…

C#开发中ImageComboBox控件数据源实时变换

在C#开发中,我们如何将控件的数据源实时变换,当然我们可以在窗口实例化的时候指定固定的数据源,但是这样对于用户来说数据源永远固定,并不利于我们对于用户的数据存储,优化用户的操作,遇到这种问题&#xf…

Flutter ListView滑动

在Flutter中,ScrollController可以精确地控制和管理滚动行为。通过ScrollController,可以监听滚动的位置、速度,甚至可以在用户滚动时触发自定义的动作。此外,ScrollController还提供了对滚动位置的直接控制,可以编程地…

DRF——请求的封装与版本管理

文章目录 django restframework1. 快速上手2. 请求数据的封装3. 版本管理3.1 URL的GET参数传递(*)3.2 URL路径传递(*)3.3 请求头传递3.4 二级域名传递3.5 路由的namespace传递 小结 django restframework 快速上手请求的封装版本…

科大讯飞刘聪:大模型加持,人形机器人将跨越三大瓶颈

2024年,AI大模型成为机器人产业新的加速器。 今年3月,ChatGPT4加持的机器人Figure01向外界展示了大模型赋能人形机器人的巨大潜力。Figure01能理解周围环境,流畅地与人类交谈,理解人类的需求并完成具体行动,包括给人类…

虚幻5|AI视力系统,听力系统,预测系统(2)听力系统

虚幻5|AI视力系统,听力系统,预测系统(1)视力系统-CSDN博客 一,把之前的听力系统,折叠成函数,复制粘贴一份改名为听力系统 1.小个体修改如下,把之前的视力系统改成听力系统 2.整体修…

隐私指纹浏览器产品系列 —— 浏览器指纹 中(三)

1.引言 在上一篇文章中,我们聊到了最老牌的浏览器指纹检测站——BrowserLeaks。BrowserLeaks曾经是浏览器指纹检测的权威,但它似乎更像是一本老旧的工具书,只能呆板告诉你浏览器的指纹值,并对比不同浏览器的指纹差异。 今天&…

C语言 之 浮点数在内存中的存储 详细讲解

文章目录 浮点数浮点数的存储浮点数的存储浮点数的读取例题 浮点数 常见的浮点数:3.14159、1E10(表示1*10^10)等 浮点数家族包括: float、double、long double 类型。 浮点数表示的范围在float.h 中有定义 浮点数的存储 浮点数…

C++研发笔记1——github注册文档

1、第一步:登录网站 GitHub: Let’s build from here GitHub 最新跳转页面如下: 2、选择“sign up”进行注册,并填写设置账户信息 3、创建账户成功之后需要进行再次登录 4、根据实际情况填写个人状态信息 登录完成后页面网站: 5…