$ sudo apt-get update
$ sudo apt-get install build-essential python quilt devscripts python-setuptools python3
$ sudo apt-get install libssl-dev
$ sudo apt-get install cmake
$ sudo apt-get install libc-ares-dev
$ sudo apt-get install uuid-dev
$ sudo apt-get install daemon
第二步:下載並編譯安裝 libwebsockets(下載到 /home/mqtt目錄下)
// libwebsockets的各版本下載地址可以去GitHub:https://github.com/warmcat/libwebsockets/releases
wget https://github.com/warmcat/libwebsockets/archive/v3.2.1.tar.gz
tar -zxvf libwebsockets_v3.2.1.tar.gz
cd libwebsockets_v.3.2.1
mkdir build
cd build
cmake ..
make install
nano /etc/ld.so.conf // 可以看到 include ld.so.conf.d/*.conf
// 添加一行第二步中libwebsocket編譯後的lib的路徑
/home/mqtt/libwebsockets_v.3.2.1/build/lib
// 保存後,執行
ldconfig
wget https://mosquitto.org/files/source/mosquitto-1.6.8.tar.gz
tar zxvf mosquitto-1.6.8.tar.gz
cd mosquitto-1.6.8
nano confi.mk
// 將config.mk 的WITH_WEBSOCKETS:=NO 修改 爲 WTIH_WEBSOCKETS:=yes
WITH_WEBSOCKETS:=yes
// 保存修改,開始編譯安裝 mosquitto, make && make install
make
make install
// 安裝成功後,mosquitto的配置文件將在 /etc/mosquitto
cd /etc/mosquitto
cp mosquitto.conf.example mosquitto.conf
nano mosquitto.conf
// 在Default listener 這裏添加
port 1883
listener 9001
protocol websockets
// 修改之後保存並退出
// 添加MOSQUITTO用戶
adduser mosquitto
// mosquitto -c /etc/mosquitto/mosquitto.conf 前臺啓動方式
mosquitto -c /etc/mosquitto/mosquitto.conf -d //後臺啓動方式(推薦)
// 如果服務器是阿里雲等雲服務器還需要去雲端控制檯,爲服務器防火牆添加規則,即開放1883/9001兩個端口,這樣服務器的兩個端口對外開放// windows下測試 1883端口或者9001端口是否可以ping通1. 下載tcping這個小工具:https://elifulkerson.com/projects/tcping.php (下載地址)2. 然後把下載好的工具tcping.exe,放到電腦的C盤>Windows>System32 下面就行3. 重新打開CMD窗口,輸入命令:tcping 指定的IP或者域名 端口號 。輸入完回車就可以查看這個IP的端口是否是通着的。比如:tcping 10.20.66.37 8090// Linux下的方法在linux下,我們就直接可以用telnet命令來測試端口是否暢通。具體用法:telnet 指定的IP或者 域名 端口號.比如:telnet 10.20.66.37 8090// Ubuntu終端命令查看端口占用及關閉查看已經連接的服務端口(ESTABLISHED):netstat -a查看所有的服務端口(LISTEN,ESTABLISHED): netstat -ap查看指定端口,可以結合grep命令:netstat -ap | grep 8080也可以使用lsof命令:lsof -i:8080關閉端口使用若要關閉使用這個端口的程序,使用kill + 對應的pid:: kill -9 PID號ps:kill就是給某個進程id發送了一個信號。默認發送的信號是SIGTERM,而kill -9發送的信號是SIGKILL,即exit。exit信號不會被系統阻塞,所以kill -9能順利殺掉進程。