在云服務器(Ubuntu)下安裝MQTT服務器以及設置連接權限
本文僅供學習參考,通過自己在云服務器搭建Mqtt服務器,更深入的了解MQTT協議。
一、效果
在云服務器上安裝EMQ服務器,實現MQTT服務器的搭建
更改EMQ默認密碼
更改連接權限,進行數據庫認證
二、準備工作
1.購買云服務器
本地服務器也可以。但是為了設備接入以及操作的方便,還是建議在云服務器進行。
買一個低配置的服務器就可以,比如我購買的是輕量應用服務器,CentOS ubuntu18.04、1核、內存2G、系統盤40G。
2.開放相應的端口號、允許遠程連接。
使用EMQ,至少需要開放的端口號:1883、18083、8083、8883、8084。可以在控制臺里面的防火墻(安全組)設置。
同時,為了在本地通過ssh連接服務器,需要開放端口號22,同時允許遠程連接。
3.連接自己的云服務器。
建議直接通過Cmd進行SSH連接(windows用戶)。
即ssh root@ip (ip為你云服務器的公網ip)
輸入密碼時,是不會有字符顯示的哦~
三、部署EMQ
以下是通過docker安裝,詳細內容請參考EMQ官網
1.配置docker CE
ubuntu操作系統,其他操作系統可以自行百度配置。
連接服務器后,只需要6個命令,通過apt-get安裝docker(阿里云鏡像),步驟如下:
#?step?1:更新 sudo?apt-get?update #?step?2:?安裝必要的系統工具 sudo?apt-get?-y?install?apt-transport-https?ca-certificates?curl?software-properties-common #?step?3:?安裝GPG證書 curl?-fsSL?https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg?|?sudo?apt-key?add?- #?step?4:?寫入軟件源信息 sudo?add-apt-repository?"deb?[arch=amd64]?https://mirrors.aliyun.com/docker-ce/linux/ubuntu?$(lsb_release?-cs)?stable" #?step?5:?更新 sudo?apt-get?-y?update #?step?6:安裝Docker-CE sudo?apt-get?-y?install?docker-ce
成功安裝后,輸入docker -v可查看docker版本。
2.獲取鏡像
執行命令:$ docker pull emqx/emqx:v4.0.0
即讓docker下載emq鏡像,存儲在硬盤中。
下載完成后,輸入 docker images 可以已經擁有的鏡像。
3.啟動emq
執行命令:$ docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.0.0
啟動emq,成功啟動后,執行 docker ps 可以看到emq容器正在運行
EMQ自帶有一個前端頁面,可以通過 ip:18083進入。默認賬號:admin;密碼:public
大功告成,emq已經完成部署,接入設備試一下吧~
四、更改默認賬戶密碼
進入服務器控制臺頁面(IP:18083),默認賬號:admin,密碼:public。
點擊ADMIN,可以在Setting中切換語言為中文。
在ADMIN->Users選項中,設置自己的新密碼
五、連接數據庫
1.數據庫新建表
通過mysql新建一個用戶表格
CREATE?TABLE?`mqtt_user`?( ??`id`?int(11)?unsigned?NOT?NULL?AUTO_INCREMENT, ??`username`?varchar(100)?DEFAULT?NULL, ??`password`?varchar(100)?DEFAULT?NULL, ??`salt`?varchar(35)?DEFAULT?NULL, ??`is_superuser`?tinyint(1)?DEFAULT?0, ??`created`?datetime?DEFAULT?NULL, ??PRIMARY?KEY?(`id`), ??UNIQUE?KEY?`mqtt_username`?(`username`) )?ENGINE=InnoDB?DEFAULT?CHARSET=utf8mb4;
2.修改配置文件
a.關閉匿名登錄。
修改emq.conf(文件在安裝EMQ目錄的./etc中)
mqtt.allow_anonymous?=?false?//?修改為false
b.修改默認mysql配置
mysql版本為mysql5,mysql8會有不同!
進入etc/plugins/emqx_auth_mysql.conf,修改emqx_auth_mysql.conf
##?服務器地址 auth.mysql.server?=?127.0.0.1:3306 ##?連接池大小 auth.mysql.pool?=?8 auth.mysql.username?=?emqx auth.mysql.password?=?public auth.mysql.database?=?mqtt auth.mysql.query_timeout?=?5s
只需修改為你的msyql信息即可。(ip:port、username、password)
注意:如果你是通過docker安裝,進入emq目錄方式為:docker exec -ti emqx /bin/sh
退出:ctrl + P + Q
三、設置連接權限
添加插件,在web控制頁面中,選擇 MANAGEMENT->Plugins,找到emqx_auth_mysql 讓他running
此時,你再連接你的mqtt服務器時,你發現你會連接失敗!說明你已經設置成功Mysql認證,在數據庫里面添加你需要接入設備的ID、密碼即可~
六、容器的開啟、停止
查看:docker ps / docker images
停止:docker stop emqx
打開:docker start emqx
好了,此時你就已經擁有了自己的MQTT服務器,同時其他人未經允許也不能夠輕易的訪問或使用你的MQTT服務器,快去嘗試吧~~
設備管理 IoTDM IoT 設備接入 IoTDA
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。