材料准备
-
使用公司资质申请苹果开发者账号
https://support.tuya.com/zh/help/_detail/Kam3pskapsytn
注意事项:
- 填写公司官网的时候 公司官网必须可以访问 且官网包含公司的 地址 联系方式 等信息 否则会被拒绝
-
申请苹果开发者的appleid 最好使用已经注册并使用一段时间的appleid 否则会风控,申请苹果开发者的手机和网络一定不要是已经申请过开发者的,否则也会风控
-
使用公司资质申请苹果商务管理,苹果商务管理申请需要一个企业邮箱
https://support.apple.com/zh-cn/guide/apple-business-manager/axm402206497/web
环境准备
-
域名一个并解析到服务器
-
国内备案服务器一个 配置最低要求2h4g
-
域名ssl证书 推荐申请个有效期一年的 ssl证书到期不更换会导致无法控制设备
-
mysql5.7数据库 并创建数据库 mdmadmin 导入sql文件夹下最新版本mdmadmin.sql
-
redis3.2.12
-
服务器要求centos7需要安装Python2 和 openssl 以及openjdk java1.8 mysql和redis可以部署不同服务器
-
nginx反向代理到34567端口 nginx配置参考 nginx文件
-
安装字体
yum install epel-release -y && yum install fontconfig -y && fc-cache --force
-
安装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
-
安装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
```
-
配置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
-
配置redis redis配置文件在 /etc/redis.conf
找到requirepass foobared 解除注释 修改为你得redis密码
重启redis```
systemctl restart nginx
```
-
修改application-dev.yml 文件 主要修改里面的mysql 和redis信息 其他酌情修改
-
配置签名证书
使用刚才的ssl证书,把私钥文件改名为 cert.key 证书文件改为 cert.pem 传入 部署包下面的 data/cert下
需要注意的是 pem文件里面 需要包含 ca证书 中级证书 和最终的颁发的证书 组成一个证书链 否则无法成功签名
ca证书 中级证书 和最终的颁发的证书有先后顺序分别是 最上层 最终的颁发的证书 中层 中级证书 最低层 ca证书
-
修改openssl.cnf文件
openssl.cnf位置在部署包 下的 data/static 下 具体信息可根据自己的公司信息修改 最终会体现在 用户安装的描述文件中 不修改也可以使用
-
上传http.pac文件 到oss上
http.pac文件在部署包的 data/static 下 上传后拿到下载链接保留待会使用
-
上传截图文件到 服务器/opt/mdm目录
-
给予 xjar文件 执行权限
chmod -R 777 /opt/mdm/xjar
-
创建数据库并导入最新版本sql文件 这里也可以通过工具导入
-
创建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
```
维护与更新
-
启动命令
systemctl start mdm
查看是否启动成功
systemctl status mdm
启动成功后需要等待启动完毕可以查看启动日志 一定要查看日志才能确定是否启动成功
journalctl -u mdm -f
-
关闭服务命令
systemctl stop mdm
-
更新
建议在服务器上创建一个版本 记录当前版本
每次给的更新部署包都会有一个版本更新文件比如我当前是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
第一次部署配置
-
修改系统设置
使用默认管理员账号登录后台进入 管理设置->系统设置 以下是功能列表说明
-
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
高德地图申请
由于设备定位需要用到地图功能 需要申请高德地图
-
进入高德地图官网 https://lbs.amap.com/ 注册一个账户并登录
-
进入后台 创建应用
https://console.amap.com/dev/key/app
- 创建应用完毕后添加key
- 添加key选择web端
添加完毕以后会拿到key和安全秘钥
-
安全秘钥需要传入nginx
-
key需要修改前端 编译后更新服务器即可