linux 搭建mqtt服務

這裏採用的是mosquitto

搭建mqtt服務

1.下載mosquitto然後解壓

wget http://mosquitto.org/files/source/mosquitto-1.6.7.tar.gz  
tar zxvf osquitto-1.6.7.tar.gz  

2.然後編譯安裝

make
make install

3.修改配置
目錄 /etc/mosquitto
mosquitto.conf 配置文件
aclfile 鑑權控制文件
pwfile 用戶名密碼文件
mosquitto.conf配置

# =================================================================
# # General configuration
# # =================================================================
#
# # 客戶端心跳的間隔時間
#retry_interval 10
#
# # 系統狀態的刷新時間
# #sys_interval 10
#
# # 系統資源的回收時間,0表示儘快處理
# #store_clean_interval 10
#
# # 服務進程的PID
# #pid_file /var/run/mosquitto.pid
#
# # 服務進程的系統用戶
user root
#
# # 客戶端心跳消息的最大併發數
# #max_inflight_messages 10
#
# # 客戶端心跳消息緩存隊列
# #max_queued_messages 100
#
# # 用於設置客戶端長連接的過期時間,默認永不過期
# #persistent_client_expiration
#
# # =================================================================
# # Default listener
# # =================================================================
#
# # 服務綁定的IP地址
# #bind_address
#
# # 服務綁定的端口號
# #port 1883
#
# # 允許的最大連接數,-1表示沒有限制
# #max_connections -1
#
# # cafile:CA證書文件
# # capath:CA證書目錄
# # certfile:PEM證書文件
# # keyfile:PEM密鑰文件
# #cafile
# #capath
# #certfile
# #keyfile
#
# # 必須提供證書以保證數據安全性
# #require_certificate false
#
# # 若require_certificate值爲true,use_identity_as_username也必須爲true
# #use_identity_as_username false
#
# # 啓用PSK(Pre-shared-key)支持
# #psk_hint
#
# # SSL/TSL加密算法,可以使用“openssl ciphers”命令獲取
# # as the output of that command.
# #ciphers
#
# # =================================================================
# # Persistence
# # =================================================================
#
# # 消息自動保存的間隔時間
# #autosave_interval 1800
#
# # 消息自動保存功能的開關
# #autosave_on_changes false
#
# # 持久化功能的開關
persistence true
#
# # 持久化DB文件
persistence_file mosquitto.db
#
# # 持久化DB文件目錄
persistence_location /var/lib/mosquitto/
#
# # =================================================================
# # Logging
# # =================================================================
#
# # 4種日誌模式:stdout、stderr、syslog、topic
# # none 則表示不記日誌,此配置可以提升些許性能
log_dest stdout
#
# # 選擇日誌的級別(可設置多項)
log_type error
log_type warning
log_type notice
# #log_type information
#
# # 是否記錄客戶端連接信息
connection_messages true
#
# # 是否記錄日誌時間
log_timestamp true
#
# # =================================================================
# # Security
# # =================================================================
#
# # 客戶端ID的前綴限制,可用於保證安全性
# #clientid_prefixes
#
# # 允許匿名用戶
allow_anonymous false
#
# # 用戶/密碼文件,默認格式:username:password
password_file /etc/mosquitto/pwfile
#
# # PSK格式密碼文件,默認格式:identity:key
# #psk_file
#
# # pattern write sensor/%u/data
# # ACL權限配置,常用語法如下:
# # 用戶限制:user <username>
# # 話題限制:topic [read|write] <topic>
# # 正則限制:pattern write sensor/%u/data
acl_file /etc/mosquitto/aclfile
#
# # =================================================================
# # Bridges
# # =================================================================
#
# # 允許服務之間使用“橋接”模式(可用於分佈式部署)
# #connection <name>
# #address <host>[:<port>]
# #topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]
#
# # 設置橋接的客戶端ID
# #clientid
#
# # 橋接斷開時,是否清除遠程服務器中的消息
# #cleansession false
#
# # 是否發佈橋接的狀態信息
# #notifications true
#
# # 設置橋接模式下,消息將會發布到的話題地址
# # $SYS/broker/connection/<clientid>/state
# #notification_topic
#
# # 設置橋接的keepalive數值
# #keepalive_interval 60
#
# # 橋接模式,目前有三種:automatic、lazy、once
# #start_type automatic
#
# # 橋接模式automatic的超時時間
# #restart_timeout 30
#
# # 橋接模式lazy的超時時間
# #idle_timeout 60
#
# # 橋接客戶端的用戶名
# #username
#
# # 橋接客戶端的密碼
# #password
#
# # bridge_cafile:橋接客戶端的CA證書文件
# # bridge_capath:橋接客戶端的CA證書目錄
# # bridge_certfile:橋接客戶端的PEM證書文件
# # bridge_keyfile:橋接客戶端的PEM密鑰文件
# #bridge_cafile
# #bridge_capath
# #bridge_certfile
# #bridge_keyfile
#

aclfile

 user spc
  topic read $SYS/#
  topic write $SYS/#
  topic read xxx/#
  topic write xx/# 

read 訂閱權限 、write 發佈權限、# 通配符表示所有的

最後是pwfile
用命令生成,用戶名是userme

mosquitto_passwd -c /etc/mosquitto/pwfile username

最後啓動服務

mosquitto -c /etc/mosquitto/mosquitto.conf 

結束服務kill就行。
測試,開啓2個終端

參數 描述
-h 服務器主機,默認localhost
-t 指定主題
-u 用戶名
-P 密碼
-i 客戶端id,唯一
-m 發佈的消息內容

接收:

mosquitto]# mosquitto_sub -h localhost -t "xxx/#" -u xx-P xxx -i "client1"

發送

mosquitto_pub -h localhost -t "xxx/abc" -u xxx-P xxx-i "client2" -m "hello world“

問題1: Invalid user ‘mosquitto’.
解決 2選 1
(1)修改配置文件:mosquitto.conf ,增加登錄的用戶,例如當前登錄用戶爲root

(2)執行命令增加當前用戶:
adduser mosquitto

問題2 使用過程中找不到libmosquitto.so.1

創建軟連接,更新動態庫

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
sudo ldconfig
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章