在CentOS7 上安装mosquitto1.4.1服务器,实现MQTT信息推送功能并增加websocket功能

在CentOS7 上安装mosquitto1.4.1服务器,实现MQTT信息推送功能并增加websocket功能。

过程如下:

1、安装各种需要的编译工具

#yum install gcc gcc-c++

2、安装mosquitto编译时需要的依赖库(注意:使用devel版开发库)

#yum install openssl-devel

#yum install c-ares-devel

#yum install libuuid-devel

3、为mosquitto增加websocket支持,需要安装websocket库文件,过程如下:

#yum install wget

#yum install cmake

#wget http://git.warmcat.com/cgi-bin/cgit/libwebsockets/snapshot/libwebsockets-1.4-chrome43-firefox-36.tar.gz

#tar -zxvf libwebsockets-1.4-chrome43-firefox-36.tar.gz

#cd libwebsockets-1.4-chrome43-firefox-36.tar.gz

#mkdir build

#cd build

$ cmake .. 

#make

#make install

4、提取mosquitto1.4的源码

#wget http://mosquitto.org/files/source/mosquitto-1.4.1.tar.gz

#tar -zxvf mosquitto-1.4.1.tar.gz

#cd mosquitto-1.4.1

修改config.mk文件以使后面编译的mosquitto文件支持websocket。

WITH_WEBSOCKETS:=yes

#make

#make install

如果执行程序时找不到libwebsockets的库文件,执行下面的命令为库做一下符号连接,分64位和32位)

#ln -s /usr/local/lib/libwebsockets.so.5 /usr/lib64/libwebsockets.so.5

#ln -s /usr/local/lib/libwebsockets.so.5 /usr/lib/libwebsockets.so.5

 

5、修改mosquitto.conf文件(在/etc/mosquitto目录下)

autosave_interval 1800

persistence true

persistence_file mosquitto.db

persistence_location /var/mosquitto/

persisitent_client_expiration 1d

listener 1883

使用chmod -R 777 /var/mosquitto修改目录权限,使用目录可写

增加下面两行,添加websockets的监听端口

listener 8080

protocol websockets

6、使用下面的命令启动mosquitto服务程序(在/usr/local/sbin目录下)

#src/mosquitto -d -c mosquitto.conf > /var/mosquitto/mosquitto.log 2>&1

7、取消客户端匿名登录功能,客户端登录必须提供登录名称及密码。(mosquitto_pwd命令在/usr/local/bin目录下,pwdfile.example在/etc/mosquitto目录下)

#cp pwdfile.example mosquitto.pwd

#cd usr/local/bin/mosquitto_pwd -c mosquitto.pwd admin

根据提示输入admin用户的登录密码

修改mosquitto.conf文件,取消用户匿名登录

allow_anonymous false

password_file mosquitto.pwd

 

最小化安装centos过程中可能遇到的问题:

一、网络连接问题

1、系统最小化安装,没有网络设置,使用下面的方法:

#nmcli connection show 

显示你的网络配置信息,主要是得到网卡名称。

2、为网卡ens33增加一个ip地址及网关

# nmcli connection add type ethernet con-name NEW_STATIC ifname ens33 ip4 192.168.1.141/24 gw4 192.168.1.1

3、设置这个连接所使用的DNS服务器:

# nmcli connection modify NEW_STATIC ipv4.dns "202.99.160.68 202.99.166.4"

4、启用以太网连接:

# nmcli connection up NEW_STATIC ifname ens33

5、查看网络连接的具体信息

# nmcli -p connection show NEW_STATIC

6、修改网络连接地址

# nmcli connection modify NEW_STATIC ipv4.addresses "192.168.1.23/24 192.168.1.1"

二、防火墙问题。

CentOS使用了firewalld做为默认的防火墙。这个防火墙默认是打开的,但没有开启任何端口,需要打开两个我们使用的端口:1883、8080。

# firewall-cmd --zone=public --add-port=1883/tcp --permanent

# firewall-cmd --zone=public --add-port=8080/tcp --permanent

# firewall-cmd --reload

 

其它有用的命令:

启动:# systemctl start  firewalld

查看状态:# systemctl status firewalld 或者 firewall-cmd --state

停止:# systemctl disable firewalld

禁用:# systemctl stop firewalld

查看版本:$ firewall-cmd --version

更新防火墙规则:# firewall-cmd --reload

  # firewall-cmd --complete-reload

    两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务

将接口添加到区域,默认接口都在public

# firewall-cmd --zone=public --add-interface=eth0

永久生效再加上 --permanent 然后reload防火墙

设置默认接口区域

# firewall-cmd --set-default-zone=public

立即生效无需重启

查看所有打开的端口:

# firewall-cmd --zone=dmz --list-ports

加入一个端口到区域:

# firewall-cmd --zone=dmz --add-port=8080/tcp

永久生效再加上 --permanent 然后reload防火墙

你可能感兴趣的:(mqtt信息推送服务器建立)