前言
用树莓派搭建这个MQTT服务器真的是踩了好多好多坑(哭晕在厕所),此文只是为了让大家不再踩坑。
所有工具皆在前言列出!
所需工具:SD Card Formatter、Win32DiskImager、Putty、VNC Viewer
树莓派操作系统:Raspberry Pi
MQTT服务器框架:mosquito
安装树莓派操作系统并登录系统
首先,准备一张8G以上的SD卡,插入到读卡器中。
打开SD Card Formatter进行全扇区格式化。
选择好你的U盘,按照图中配置点Format即可。
格式化成功。
打开Win32DiskImager,选择好下载的录像(镜像下载地址也在前言中给出)以及SD卡,点击写入耐心等待几分钟即可烧录镜像到SD卡中。
然后我们打开SD卡,新建一个SSH文件(无后缀名),用意是为了告诉树莓派打开SSH服务,方便我们一会连接。
这时将SD卡拔出读卡器,插入到树莓派中,拿一根网线将树莓派与电脑相连,为树莓派供电。
右键WIFI图标,选择打开网络和共享中心。
点击属性
点击共享并将两个勾全部勾上,点击确定。
win+r键运行cmd
输入arp -a,找到192.168.137.1下面的一个动态地址,即为树莓派IP地址
打开putty,输入刚才的IP地址,端口号为22,连接方式为SSH
账号为pi,密码为raspberry,至此登录进树莓派里了
为树莓派安装VNC并连接WIFI
首先要做的就是换源(分为软件更新源和系统更新源)树莓派默认的源是官网的源,下载更新都很慢,而且不稳定,所以我们需要将源换成国内源,清华源,阿里源,中科大的源都OK
在Putty终端输入sudo nano /etc/apt/sources.list,更新软件源界面如下,将绿色的部分网址换为http://mirrors.ustc.edu.cn/raspbian/raspbian/
Ctrl +O写完,Ctrl +X退出
修改系统更新源,Putty终端输入sudo nano /etc/apt/sources.list.d/raspi.list
Putty终端命令行依次输入:sudo apt-get update 和 sudo apt-get upgrade,时间较长,耐心等待。
树莓派安装vnc viewer,Putty终端输入sudo apt-get install tightvncserver,按y确定安装
Putty终端输入vncpasswd,创建密码,两次输入密码,共需要输入四次密码中间有个view-only,按y或n都行
Putty终端输入vncserver启动VNC服务
在VNC Viewer输入之前连接Putty终端的IP地址加上端口号5901即可进入
例:IP地址:5901
按照操作一步步激活系统,到连接wifi那里连续点击两次skip,否则会联网更新,激活速度较慢。
然后点击右上角wifi,点击Turn on WIFI,打开WIFI后稍等几秒就会出现周围的WIFI名字,然后连接WIFI,连接上WIFI以后点击左上角命令行
输入ifconfig回车后找到路由器给树莓派分发的IP地址
至此就可以关机了,千万不要直接拔电源,点左上角的树莓派然后点击注销。
这时候就可以拔网线了,我们给树莓派重新上电,这时Putty终端就可以用刚才路由器分发的IP地址进行连接了!VNC Viewer同理。
搭建mosquitto
首先需要下载mosquitto需要的依赖
Putty终端输入:
sudo apt-get install libssl-dev
sudo apt-get install uuid-dev
sudo apt-get install cmake
依赖安装完毕后,下载mosquitto压缩包
wget http://mosquitto.org/files/source/mosquitto-1.5.4.tar.gz
下载完毕后,解压
tar zxfv mosquitto-1.5.4.tar.gz
进入mosquitto目录
cd mosquitto-1.5.4
然后打开config.mk文件,修改使其支持websocket
sudu nano config.mk
进去后按Ctrl+w进行搜索
将红框中的值改为yes
然后Ctrl+O保存,回车,Ctrl+X退出
完成后我们对端口进行配置
sudo nano mosquitto.conf
打开后按Ctrl+w搜索Default listener
将#port改为port 1883
修改完毕后搜索Extra listeners
将#listener改为listener 8083
将#protocol改为websocket
然后按Ctrl+O Ctrl+X退出
这时我们已经将mosquitto配置为支持websocket了,但还缺少websocket支持,需要下载。
Putty终端输入 cd ~ 回到主目录
然后下载websocket支持,输入
git clone https://codechina.csdn.net/mirrors/warmcat/libwebsockets.git
下载完毕后进入该文件夹
cd libwebsockets
在该文件夹下创建一个名为build的文件夹并进入
mkdir build
cd build
进入build文件夹后,在Putty终端输入
cmake …
然后对websocket支持进行编译
make
sudo make install
编译完成后回到mosquitto目录
cd ~/mosquitto-1.5.4
对mosquitto进行编译
make
sudo make install
编译完成后我们需要完善一点小细节,否则无法启动mosquitto
首先进入/usr/local/lib文件夹
cd /usr/local/lib
然后建立软连接
sudo ln -s /usr/local/lib/libwebsockets.so.12 /usr/lib/libwebsockets.so.12
执行
ldconfig
至此所有的配置结束了,接下来我们运行mosquitto试试吧!
mosquitto -c ~/mosquitto-1.5.4/mosquitto.conf -v
可以看到8083端口和1883端口都被开启了,现在让我们用我们可爱的esp8266去连接一下我们的服务器吧