centos7 mosquitto (MQTT)安装/配置/自启动


**************************************************************

windows:

>> 一、安装及配置 mosquitto

1.下载并安装 mosquitto (官网下载地址 https://mosquitto.org/download/)
>安装完成后进入安装目录
1).编辑 mosquitto.conf 文件. 注意系统防火墙得允许tcp 1883 端口
#设置不允许匿名登录
allow_anonymous false
#设置账户密码文件位置绝对路径为C:\developTool\mosquitto\pwfile.example(以我自己的安装路径为例)
password_file C:/developTool/mosquitto/pwfile.example
# 监听1883端口
listener 1883

2).打开命令行界面,配置账号密码
[可以不用 pwfile.example 这个文件名,会生成新的文件,需要重新配置 conf 文件]
mosquitto_passwd -c C:/developTool/mosquitto/pwfile.example mosquitto (使用-c 参数会导致清空密码文件,重新插入用户)
或者
mosquitto_passwd C:/developTool/mosquitto/pwfile.example mosquitto (不使用-c 表示追加用户,不影响旧用户)

2.打开系统服务,启动 mosquitto 服务

>> 二、启动 python

1.使用 pip 安装 paho-mqtt
2.进入当前 python 项目目录 /jy_face/
3.配置 mqtt_config.py
a.调整 BROKER 为目标 mosquitto 服务器的 ip 地址
b.调整对应的 USERNAME 及 PWD 为对应 mosquitto 服务器配置的账号密码
2.使用 python3 后台运行当前目录下 mqtt_sub.py
pythonw /***/mqtt_sub.py > /***/mqtt_sub.log


**************************************************************
**************************************************************

linux (centos7)
注意:所有文件路径都要确认正确!!!!!!

>> 一、安装及配置 mosquitto (参考 https://www.cnblogs.com/lenton/p/15166924.html)

1.安装 mosquitto
第 1 步:添加 EPEL 软件库 (这个软件库根据实际安装对应版本,centos7标准版已默认安装了latest-7版)
|-- 执行命令:yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
|-- 查看结果:yum repolist all | grep enabled 已经添加了 EPEL 软件库,它显示有 13237 个软件包
第 2 步:安装 mosquitto
|-- 查找 mosquitto 软件包:yum list all | grep mosquitto
|-- 查看 mosquitto 信息: yum info mosquitto
|-- 安装 mosquitto 软件包: yum install mosquitto
|-- 查看安装结果:yum list installed | grep mosquitto

2.配置 mosquitto 账号密码。注意系统防火墙得允许tcp 1883 端口
[可以不用 pwfile.example 这个文件名,会生成新的文件,需要重新配置 conf 文件]
sudo mosquitto_passwd -c /etc/mosquitto/pwfile.example mosquitto (使用-c 参数会导致清空密码文件,重新插入用户)
或者
sudo mosquitto_passwd /etc/mosquitto/pwfile.example mosquitto (不使用-c 表示追加用户,不影响旧用户)
(我的处理方式是:sudo mosquitto_passwd -c /etc/mosquitto/passwd donlyn)
gjdtsc2bZdZs8X

/*3.配置 mosquitto. 编辑 /etc/mosquitto/mosquitto.conf 文件。注意系统防火墙得允许tcp 1883 端口
#设置不允许匿名登录
allow_anonymous false
#设置账户密码文件位置绝对路径为/etc/mosquitto/pwfile.example(以我自己的安装路径为例)
password_file /etc/mosquitto/pwfile.example (这个文件应该匹配步骤2的passwd文件路径)
# 监听1883端口*/
listener 1883

4.开启mosquitto服务
service mosquitto start
新版本
/bin/systemctl start mosquitto.service
这一步可能会遇到 Error: Invalid user 'mosquitto' 的情况,使用以下方式:
(参考:https://blog.csdn.net/yueni_zhao/article/details/130105434)
1).进入 mosqtuitto 目录: /etc/mosquitto/
命令行输入:
echo "user root" > user.conf 回车
cat user.conf 回车
2).编辑目录下新生成的 user.conf 文件
添加 password_file /etc/mosquitto/passwd (也就是上面步骤2的密码文件) 保存退出
user root
password_file /etc/mosquitto/passwd
3).启动 mosquitto 服务
mosquitto -c /etc/mosquitto/user.conf -d
4).查看mosquitto的进程
命令:ps -aux | grep mosquitto

>> 二、启动 python

1.使用 pip3 安装 paho-mqtt
pip3 install paho-mqtt (或直接执行 pip3 install -r /www/wwwroot/yourpython/requirements.txt【路径要正确,还要确认是否文件内有paho-mqtt】)
2.进入当前 python3 项目目录 /jy_face/
3.配置 mqtt_config.py
a.调整 BROKER 为目标 mosquitto 服务器的 ip 地址
b.调整对应的 USERNAME 及 PWD 为对应 mosquitto 服务器配置的账号密码
4.使用 python3 后台运行当前目录下 mqtt_sub.py
nohup python3 /home/www/wwwroot/yourpython/jy_face/mqtt_sub.py >> /home/www/wwwroot/yourpython/jy_face/mqtt_sub.log 2>&1 &

nohup python3 /www/wwwroot/yourpython/jy_face/mqtt_sub.py >> /www/wwwroot/yourpython/jy_face/mqtt_sub.log 2>&1 &

>> 查看当前全部进程
命令:ps aux --sort rss


**************************************************************
**************************************************************

>> linux(centos7) 系统重启时自动启动服务

1.(参考:https://blog.csdn.net/babytiger/article/details/106825363)

>打开 /etc/rc.d/rc.local 或 /etc/rc.local 文件,在末尾添加如下内容(注意要使用绝对路径):
nohup /usr/local/bin/python3 /home/www/wwwroot/yourpython/jy_face/mqtt_sub.py > /home/www/wwwroot/yourpython/jy_face/mqtt_sub_auto.log &
/usr/sbin/mosquitto -c /etc/mosquitto/user.conf -d

>保存并退出。
>在centos7上,编辑完 rc.local后,文件权限被降低了,执行以下命令:
chmod +x /etc/rc.local
>...该方式中 python3 部分可能会无效

2.生成 service 进入自启动 (可将当前目录下的 .service 拷贝过去进行修改)(与上面2选一)
>进入目录 /etc/systemd/system/
>创建 run_tj_hospital_mqtt.service 权限 644 或755
>写入内容:
[Unit]
Description=tj_hospital_mqtt
After=multi-user.target

[Service]
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/usr/bin/python3 /home/www/wwwroot/yourpython/jy_face/mqtt_sub.py
WorkingDirectory=/home/www/wwwroot/yourpython/jy_face/
Restart=always

[Install]
WantedBy=multi-user.target
注意其中 ExecStart 中的路径要对应实际 python 路径及 py 文件路径
WorkingDirectory 对应 py 文件目录路径
>命令行输入 systemctl enable run_tj_hospital_mqtt.service 允许自启动
>命令行输入 systemctl start run_tj_hospital_mqtt.service 启动服务

 

**************************************************************
**************************************************************

>> 捷易人脸设备配置

1.登录设备后台:浏览器中输入设备ip地址,账号admin,默认密码123456
2.点击设备管理>设备信息,复制设备ID-SN
3.进入开发者设置
>HTTP/MQTT订阅
> +创建
>上报方式: MQTT
>上报地址: tcp://youusername:yourpwd@[mosquitto服务器ip地址(要去掉外面中括号‘[]’)]:1883
>MQTT topic: mqtt/face/[设备ID-SN(要去掉外面中括号‘[]’)]/report
>状态上报: 启用
>状态topic: mqtt/face/[设备ID-SN(要去掉外面中括号‘[]’)]/report-status
>远程通信RRPC
> +创建
>类型: MQTT
>服务器: tcp://youusername:yourpwd@[mosquitto服务器ip地址(要去掉外面中括号‘[]’)]:1883
>MQTT topic: mqtt/face/[设备ID-SN(要去掉外面中括号‘[]’)]/request/+
>状态上报: 启用(因为上面MQTT订阅已启用了 状态上报,所以这里可以不启用)
>状态topic: mqtt/face/[设备ID-SN(要去掉外面中括号‘[]’)]/status

tcp://donlyn:gjdtsc2bZdZs8X@192.168.1.189:1883

**************************************************************
**************************************************************

面板启动计划任务:

任务名称:判断人脸打卡信息后台接收服务运行状态
执行周期:每半小时或每几分钟,用来判断上面两个服务是否正常启动
脚本内容:
python3 /home/www/wwwroot/yourpython/jy_face/process_remind.py

注意:有的服务器执行计划任务 python3 后报以下错误:
ModuleNotFoundError: No module named 'requests'

ModuleNotFoundError: No module named 'pymysql'
解决方案一:
使用 pip3.6 分别 install requests 及 pymysql
原因:不知道为什么系统内安装了两个python3,一个python3.6,一个python3.8
而pip3默认是python3.8的,但是计划任务的python3却是执行的python3.6的,很奇怪
解决方案二:(有空再研究,有项目使用python3.8; 而系统默认使用3.6, 随意卸载可能导致异常)
卸载python3.6, 统一使用 python3.8; 或者卸载3.8, 统一使用 python3.6

posted @ 2024-03-27 15:55  动灵  阅读(164)  评论(0编辑  收藏  举报