该博客主要介绍服务器端的相关程序的搭建。该篇主要介绍MQTT代理mosquitto的安装和测试,下一篇介绍Java Web开发相关服务器环境的配置。

一、服务器购买和配置

1.服务器购买

作者购买的是阿里云的学生优惠版服务器,具体配置为:
* CPU:1核
* 内存:2GB
* 操作系统:CentOS 7.4 64位
* 硬盘:40G

2.开启安全组规则

开启了如下安全组规则,便于以后使用:

入方向

部一台ZABBIX服务器所需资源 组一台服务器_服务器

出方向

部一台ZABBIX服务器所需资源 组一台服务器_安装_02

3.更新系统

使用ssh登录进服务器后,运行如下命令(作者使用的是root账户,以下所有命令除非特殊说明都是在root账户下执行的)更新系统和安装开发用基本工具。
更新系统和软件:

yum -y update

安装开发者工具组:

yum groupinstall -y "Development Tools"

由于作者使用的ssh客户端是windows下的xshell,因此安装如下程序便于文件上传和下载:

yum install lrzsz

二、MQTT代理mosquitto安装和配置

1.mosquitto安装

(1)下载

Mosquitto官方下载地址

找到如下链接复制源码下载地址

部一台ZABBIX服务器所需资源 组一台服务器_部一台ZABBIX服务器所需资源_03


在ssh客户端中运行如下命令下载源码包(此处也可以用windows知己下载,然后上传到服务器上去,不过作者觉得这样直接下载到服务器上更快一点):

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

部一台ZABBIX服务器所需资源 组一台服务器_服务器_04

(2)安装

解压缩刚才下载的源码包:

tar -zxvf mosquitto-1.4.14.tar.gz

进入到解压缩后的文件夹中。该文件夹中的config.mk文件是安装过程中的一个很重要的配置文件。具体配置大家可以自行百度,作者在这里就直接采用默认值了(因为作者也不是很懂这块,也懒得具体配置了[尴尬])。使用make编译和安装源码:

make
make install
make过程中可能会遇到以下几个问题,如果出现的话则安装相应的库之后重新执行make命令即可:
①缺少ssl库

部一台ZABBIX服务器所需资源 组一台服务器_部一台ZABBIX服务器所需资源_05

yum install openssl-devel.x86_64

②缺少ares.h

部一台ZABBIX服务器所需资源 组一台服务器_安装_06

yum install c-ares-devel.x86_64

③缺少uuid.h

部一台ZABBIX服务器所需资源 组一台服务器_mosquitto_07

yum install -y libuuid-devel.x86_64

以上库都是CentOS7.4系统对应下的库,如果在其他系统下则名称可能有点不太一样,最好使用软件包安装工具的search功能搜索一下安装即可。

(3)测试

安装完成后即可测试一下mosquitto的程序。mosquitto的一个很重要的配置文件在目录/etc/mosquitto中,该目录中有如下文件:

部一台ZABBIX服务器所需资源 组一台服务器_安装_08


将mosquitto.conf.sample文件拷贝一份,并重命名为mosquitto.conf,作为默认配置文件(该配置文件的作用也很重要,具体的以后用到再说,此处就先使用默认配置即可)。

cp /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf

测试时打开三个ssh连接窗口。第一个中运行如下命令开启mosquitto服务,其中-v参数表示输出调试信息

mosquitto -v

部一台ZABBIX服务器所需资源 组一台服务器_部一台ZABBIX服务器所需资源_09

此处可能会报错,找不到用户mosquitto。

部一台ZABBIX服务器所需资源 组一台服务器_mosquitto_10


因为mosquitto在运行时会自动降低权限至用户mosquitto上,因此需要向系统添加用户mosquitto。命令如下

useradd mosquitto

第二个窗口开启监听某一个主题,命令如下:

mosquitto_sub -t sensor

该命令启动客户端订阅功能,订阅主题sensor的消息。该命令执行后窗口一直处理等待状态,如果有对应主题的消息发送到服务器,此处则会显示消息内容。而此时返回窗口一则会看到提示客户端已经连接的信息:

部一台ZABBIX服务器所需资源 组一台服务器_服务器_11

执行该命令时可能会报如下错误,找不到库:

部一台ZABBIX服务器所需资源 组一台服务器_mosquitto_12


创建库文件的链接并使用ldconfig使链接生效:

ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1ldconfig

第三个窗口中使用命令向主题sensor发布信息:

mosquitto_pub -t sensor -m 12313

此时窗口二显示如下信息:

部一台ZABBIX服务器所需资源 组一台服务器_服务器_13


窗口一显示如下日志:

部一台ZABBIX服务器所需资源 组一台服务器_服务器_14

三、启动mosquitto在后台运行

如上过程如果没有异常的话说明mosquitto安装成功,那么就可以执行如下命令使得mosquitto在后台运行。其他所有客户端可以通过 [ip地址]:1883来访问服务器上的MQTT代理服务。

mosquitto -d