其实相关部署已经在github有详细的说明了,大家也可以直接转移到Github查看;
接下来是我在Centos7虚拟机上部署过程
Git安装
安装git,方便直接从github上下载代码
# 安装git
yum install git -y
# 验证是否安装成功
git --version
docker安装
### 安装docker依赖环境, 安装docker-ce社区版, 配置镜像加速
# step 1: 安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
yum makecache fast
yum -y install docker-ce
# 防火墙规则允许网络桥接、允许ipv4网络转发
cat <<EOF > /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# 先执行这行命令启动网桥过滤功能, 否则会报错/proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory
modprobe br_netfilter
sysctl -p /etc/sysctl.d/docker.conf
# 配置镜像加速 阿里云镜像仓库、网易镜像仓库、中科大镜像仓库
mkdir -p /etc/docker
vim /etc/docker/daemon.json
{
"registry-mirrors":[
"https://x9w5e7g4.mirror.aliyuncs.com",
"https://hub-mirrors.c.163.com/",
"https://Docker.mirrors.ustc.edu.cn/"
]
}
systemctl daemon-reload;systemctl enable --now docker
# 查看docker版本, Docker Engine - Community 社区版
docker version
Client: Docker Engine - Community
Version: 26.1.2
# 设置nginx为守护开机自启
systemctl enable docker
# 启动nginx
systemctl start docker
安装docker-compose
# 安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 执行加权限
chmod +x /usr/local/bin/docker-compose
# 验证是否安装完成
docker-compose --version
# 如果检测版本出现了错误
# 也可以先卸载现有版本再下别的:
pip3 uninstall cryptography
# 如果想升级到特定版本,可以使用以下命令:
pip install cryptography==3.4.8
安装go环境(golang1.21或以上版本)
我习惯安装gvm来管理go的版本
# 安装
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
# 安装依赖
yum install bison
# 检查版本
gvm version
查看当前机器的Go环境
gvm list
查看所有可安装的Go版本
gvm listall
安装Go
gvm install go1.21.6
切换Go版本
gvm use go1.21.6
查看Go版本
go version
安装nodejs
https://nodejs.org/zh-cn/download/package-manager
nodejs安装v18的版本,这里也建议使用nvm管理nodejs版本
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
nvm install 18
node -v
npm -v
下载代码
# 服务代码
git clone https://github.com/ubases/ubases_iot_community.git
# 云管平台代码
git clone https://github.com/ubases/ubases_iot_platform_web.git
# 开放平台代码
git clone https://github.com/ubases/ubases_iot_open_web.git
编译服务&站点
cd ubases_iot_community/bin
# 编译所有服务
./build.sh
# 编译开放平台,并将编译文件赋值到deploy/web/html/iot_platform_web
cd ubases_iot_platform_web
npm build
cp dist ../ubases_iot_community/deploy/html/iot-platform-web
# 编译开放平台,并将编译文件赋值到deploy/web/html/iot-open-web
cd ubases_iot_open_web
npm build
cp dist ../ubases_iot_community/deploy/html/iot-open-web
至此环境都已经准备好了,接下俩就是Docker部署部分
首先介绍下部署主要分为三部分:
third:第三方服务程序安装目录,包括mysql、clickhouse、nats、etcd、vernemq、ha等
services:所有平台开放的微服务
simulator:设备模拟器,模拟设备接收指令和上报数据
web:开放平台、云管平台前端编译代码、Nginx
配置docker网络
#创建docker网络:
docker network create --driver bridge --subnet 172.16.0.0/16 --gateway 172.16.0.1 docker_iot_network
配置文件依赖地址修改
修改iot_cloud_api_service.yml配置,将webmqtt节的addr改为正确的MQTT地址。可以进到bin/conf/open目录下,执行以下命令:
sed -i 's/127.0.0.1:8883/{服务器Ip}:8883/g' iot_cloud_api_service.yml
sql脚本修改:
# cd deploy/third/mysql/sql
sed -i 's/127.0.0.1/{服务器Ip}/g' iot_config_write.sql
修改MySQL、Clickhouse、redis、nats等密码,这里我就用默认密码了,大家还是修改下吧
打开docker-compose.yml,修改对应的mysql和clickhouse密码
MYSQL\_ROOT\_PASSWORD: iLmz8sCXjkTYuh
CLICKHOUSE\_PASSWORD: iLmz8sCXjkTYuh
打开third/redis/config/redis.config
requirepass iLmz8sCXjkTYuh
打开third/nats/conf/js.config
authorization {
token: "iLmz8sCXjkTYuh"
}
修改所有微服务的配置文件中MySQL、Clickhouse、redis、nats对应的密码,如下:
第三方服务信息配置(下面附带相关账号申请地址)
oss配置修改
iot_app_api_service.yml
iot_app_oem_service.yml
iot_cloud_api_service.yml
将这个三个服务中的oss配置修改为你的,这里我选择的是qiniu
oss:
useOss: "qiniu" # 这里切换你需要使用的oss平台,这里我选择的是qiniu, https://sso.qiniu.com/
imgStyle:
productImg: "" # 这里设置产品图片增加样式返回,适用列表图片压缩返回
qiniu:
Endpoint: "osspublic.hogan123.com"
AccessKeyID: "xxxxx"
AccessKeySecret: "xxxxxxx"
BucketName: "xxxxxx"
ali:
Endpoint: "xxxx.xxxx.com"
AccessKeyID: "xxxx"
AccessKeySecret: "xxxx"
BucketName: "xxxxx"
s3:
Endpoint: "xxxx.xxxx.com"
AccessKeyID: "xxxxx"
AccessKeySecret: "xxxxxxx"
BucketName: "xxxx"
Region: "xxxxx"
阿里云IP地址服务
https://market.aliyun.com/products/57002002/cmapi00035184.html?spm=5176.2020520132.101.18.7feb7218rkCYR8#sku=yuncode2918400003
找到服务配置文件iot_app_api_service.yml、iot_app_user_service.yml、
ipService:
queryUrl: "https://ips.market.alicloudapi.com/iplocaltion?ip="
appCode: "APPCODE xxxxxxxxxxxxxxxxxxx" #修改为你购买的应用码
配置天气平台的应用码
https://openweathermap.org/
空气质量aqicn
https://aqicn.org/data-platform/token/
找到配置文件iot_weather_service.yml
weather:
provider: openweathermap
apikey: xxxxxxxxxxx
aqicnToken: xxxxxxxxxx
qps: 60
interval: 1800 #间隔秒数
阿里云短信(首先购买短信,并申请签名和短信模板)
https://www.aliyun.com/activity/daily/cloudcommunication-daily?utm_content=se_1011878322
找到配置文件iot_message_service.yml
SMS:
provider: Aliyun
accessId: xxxxxxxxx
accessKey: xxxxxxxxxx
sign:
zh: 测试 #中文签名
en: "test" #英文签名
other: [10dlc国际短信使用]
邮箱账号配置
开放平台、APP邮箱注册使用,收取验证码
邮箱的种类请自行选择,常用腾讯、网易、outlook等,需要根据邮箱种类特殊配置授权方式;
找到配置文件iot_message_service.yml
smtp:
host: smtp.exmail.qq.com
port: 465
#############用户名、密码已被删除,请本地用自己的邮箱测试###############
userName: [email]xxxxx@xxxxxxx.com[/email]
password: xxxxxxx
connectTimeout: 10
sendTimeout: 10
helo: "xxxxxx"
keepAlive: true
exchange: false #exchange邮箱服务器要设置
authType: 0 #0:AuthPlain; 1:AuthLogin; 3:AuthCRAMMD5; 4:AuthNone
ssl: 3 #0:NONE; 3:SSLTLS; 4:STARTTLS; 注意:1和2弃用
from: [email]xxxxx@xxxxxxx.com[/email]
安装依赖的服务
设置目录权限
chmod -R ugo+w vernemq
# 如果遇到vernemq无法启动的情况,请尝试重设置vernemq子目录和文件的权限
chmod -R ugo+w redis
chmod -R ugo+w haproxy
chmod ugo-w ./mysql/conf/my.cnf
mkdir ./mysql/data
chmod ugo+w ./mysql/data
启动安装依赖服务
cd deploy/third/
# 启动安装依赖服务
docker-compose up -d
# Nats主题注册
deploy/jetstream_tool --addrs "nats://iLmz8sCXjkTYuh@127.0.0.1:4222"
执行docker ps container ls 查看容器运行情况。
使用工具访问对应的组件,例如mysql,确认全部库表生成成功;
安装iot服务
进入service目录启动所有
cd deploy/service/
docker-compose up -d
# 检查服务运行情况
执行docker ps container ls -a |grep iot_ 查看容器运行情况。
安装web服务
之前web/html的前端代码已经编译,下面直接执行安装即可
cd deploy/web/
docker-compose up -d
安装虚拟设备服务
安装虚拟设备服务,这样开放平台的虚拟设备就可以使用了;
cd deploy/simulator/
docker-compose up -d
最后完整检查下容器的运行情况
没有失败的,说明你已经全部,接下来你可以通过下面地址访问后台和开放平台
云管平台: http://{IP}:2888
登录账号:admin
登录密码:Admin123
开放平台: http://{IP}:2887
登录账号:[email]opensource@dev.com[/email]
登录密码:Admin123
App:使用云打包构建
https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=45075&extra=
常见错误
vernemq 运行提示这个错误:
Error generating config with cuttlefish
run vernemq config generate -l debug for more information.
解决方法:
估计应该vernemq/etc和子文件的权限问题
用到Nats相关的服务没有成功运行
检查Nats的运行情况,并检查是否注册相关主题
deploy/jetstream_tool --addrs "nats://iLmz8sCXjkTYuh@127.0.0.1:4222"
确认之后,重新启动失败服务即可
docker restart \$(docker ps -a -q --filter status=exited)
运行后台提示某个服务没有注册,然后刷新一下报错一下不报错
这个是因为项目目录有两个demo_service, 里面与实际的iot_basic_service服务冲突了,直接删除demo_service容器接口,新版本好像已经去掉这个服务的自动安装;