本文主要介紹下載mosquitto源碼編譯后,配置開機啟動mosquitto.
首先講述下使用apt安裝的流程
#引入mosquitto倉庫并更新
$sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
$sudo apt-get update
#安裝mosquitto包
$sudo apt-get install mosquitto
#安裝mosquitto開發(fā)包
$sudo apt-get install libmosquitto-dev
#安裝mosquitto客戶端
$sudo apt-get install mosquitto-clients
重啟后就可以進(jìn)行測試
#開終端1輸入
$mosquitto_sub -h localhost -t "mqtt" -v
#再一開終端2輸入
$mosquitto_pub -h localhost -t "mqtt" -m "Hello"
會在終端1中收到 Hello
源碼編譯配置啟動:
開機服務(wù)如下:
$ cat /etc/systemd/system/mqtt.service
[Unit]
Description="mqtt_broker"
After=network.target
[Service]
ExecStart=/home/xx/robot_service/mosquitto
[Install]
WantedBy=multi-user.target
配置服務(wù)開機啟動:
$ sudo systemctl daemon-reload
$ sudo systemctl enable mqtt.service
Created symlink /etc/systemd/system/multi-user.target.wants/mqtt.service → /etc/systemd/system/mqtt.service.
重啟后會發(fā)現(xiàn)mqtt broker
并沒有啟動原因如下:
~$ sudo systemctl status mqtt
[sudo] password for cruiser:
● mqtt.service - "mqtt_broker"
Loaded: loaded (/etc/systemd/system/mqtt.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2022-03-26 19:59:08 CST; 4min 27s ago
Process: 12183 ExecStart=/home/xx/robot_service/mosquitto (code=exited, status=1/FAILURE)
Main PID: 12183 (code=exited, status=1/FAILURE)
Mar 26 19:59:08 robot systemd[1]: Started "mqtt_broker".
Mar 26 19:59:08 robot mosquitto[12183]: 1648295948: mosquitto version 1.6.2 starting
Mar 26 19:59:08 robot mosquitto[12183]: 1648295948: Using default config.
Mar 26 19:59:08 robot mosquitto[12183]: 1648295948: Opening ipv4 listen socket on port 1883.
Mar 26 19:59:08 robot mosquitto[12183]: 1648295948: Opening ipv6 listen socket on port 1883.
Mar 26 19:59:08 robot mosquitto[12183]: 1648295948: Error: Invalid user 'mosquitto'.
Mar 26 19:59:08 robot systemd[1]: mqtt.service: Main process exited, code=exited, status=1/FAILURE
Mar 26 19:59:08 robot systemd[1]: mqtt.service: Failed with result 'exit-code'.
處理方法:
- 要么在配置文件
mosquitto.conf
中加入root
用戶 - 要么在系統(tǒng)新增
mosquitto
用戶顽馋。
此處講述新增mosquitto
用戶方法奴烙。
sudo adduser mosquitto
一直按enter
鍵宙项。
查詢用戶
~$ cat /etc/passwd|cut -f 1 -d:|grep mos
mosquitto
重新啟動mqtt.service
~$ sudo systemctl start mqtt.service
~$ sudo systemctl status mqtt.service
● mqtt.service - "mqtt_broker"
Loaded: loaded (/etc/systemd/system/mqtt.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-03-26 20:26:42 CST; 31s ago
Main PID: 13063 (mosquitto)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/mqtt.service
└─13063 /home/xx/robot_service/mosquitto
Mar 26 20:26:42 robot systemd[1]: Started "mqtt_broker".
Mar 26 20:26:42 robot mosquitto[13063]: 1648297602: mosquitto version 1.6.2 starting
Mar 26 20:26:42 robot mosquitto[13063]: 1648297602: Using default config.
Mar 26 20:26:42 robot mosquitto[13063]: 1648297602: Opening ipv4 listen socket on port 1883.
Mar 26 20:26:42 robot mosquitto[13063]: 1648297602: Opening ipv6 listen socket on port 1883.
可以看出運行成功娃属。