1 下载源码
1) mosquitto-2.0.18.tar.gz
地址 https://github.com/eclipse/mosquitto
2) cJSON-1.7.17.tar.gz
地址 https://github.com/DaveGamble/cJSON
3) libwebsockets-3.2.2.tar.gz
地址 https://github.com/warmcat/libwebsockets
4)openssl
或 https://github.com/openssl/openssl
PS:由于安装其他功能已经装了,没有编译openssl,用现有的。
2.下载并设置cmake
1)下载
从以下地址下载 cmake-3.28.1-linux-x86_64.tar.gz
Download CMakehttps://cmake.org/download/
解压到/home/xx/cmake-3
2) 设置环境变量
export PATH=/home/li/cmake-3/bin:$PATH
3.编译 cJSON
tar jxf /tmp/cJSON-1.7.17.tar.gz
cd cJSON-1.7.17/
mkdir build
cd build/
cmake ..
make
sudo make install
4.编译libwebsockets
cd ../../libwebsockets-3.2.2/
mkdir build
cd build/
cmake -DLWS_WITH_EXTERNAL_POLL=ON ..
make
sudo make install
5.编译mosquitto
cd ../../mosquitto-2.0.18/
mkdir build
cd build/
sudo cp /usr/local/lib/cmake/libwebsockets/LibwebsocketsConfig.cmake /usr/local/lib/cmake/libwebsockets/libwebsocketsConfig.cmake
cmake -DWITH_WEBSOCKETS=ON -DDOCUMENTATION=OFF -DCMAKE_PREFIX_PATH=/usr/local/lib/cmake ..
make
sudo make instal
6.配置mosquitto
1)添加用户
sudo groupadd mosquitto
sudo useradd -g mosquitto mosquitto
2)生成密码文件
mosquitto_passwd -c /etc/mosquitto/pwfile.conf xx
3)日志及数据库路径
sudo mkdir /var/log/mosquitto
sudo chmod -R 777 /var/log/mosquitto
sudo chown mosquitto:mosquitto /var/log/mosquitto
sudo mkdir /data/mosquitto
sudo chown mosquitto:mosquitto /data/mosquitto
sudo chmod 777 /data/mosquitto
4) ssl文件
将ssl文件放到 etc/mosquitto/certs
5) 配置文件mosquitto.conf
# =================================================================
# Listeners
# =================================================================
# =================================================================
# Listeners
# =================================================================# listener port-number [ip address/host name/unix socket path]
#listener
listener 9083# Choose the protocol to use when listening.
protocol websockets
# Path to the PEM encoded server certificate.
#certfile
capath /etc/mosquitto/certs
cafile /etc/mosquitto/certs/root.crt
certfile /etc/mosquitto/certs/xx.pem
keyfile /etc/mosquitto/certs/xx.key# =================================================================
# Persistence
# =================================================================autosave_interval 1800
# Save persistent message data to disk (true/false).
persistence true
persistence_file mosquitto.db
persistence_location /data/mosquitto
# =================================================================
# Logging
# =================================================================log_dest file /var/log/mosquitto/mosquitto.log
# -----------------------------------------------------------------
# Default authentication and topic access control
# -----------------------------------------------------------------
password_file /etc/mosquitto/pwfile.conf
7.运行
1)mosquitto
mosquitto -c /etc/mosquitto/mosquitto.conf
2) mosquitto_pub
运行会报错 :
mosquitto_pub: error while loading shared libraries: libcjson.so.1: cannot open shared object file: No such file or directory
创建以下软链接即可:
sudo ln -s /usr/local/lib64/libcjson.so.1 /usr/lib64/libcjson.so.1
sudo ln -s /usr/local/lib64/libmosquitto.so.1 /usr/lib64/libmosquitto.so.1
3)安装自启动
sudo cp -rp mosquitto-2.0.18/service/systemd/mosquitto.service.simple /etc/systemd/system/mosquitto.service
#修改mosquitto路径
sudo vi /etc/systemd/system/mosquitto.service
sudo systemctl daemon-reload
sudo systemctl enable mosquitto.service
sudo systemctl start mosquitto.service
sudo systemctl status mosquitto.service