一、准备环境
我使用的是操作系统为CentOS7.9 64位的服务器实例,对应安装的宝塔面板版本为最新版7.9.8的,Centos7以上的系统建议安装宝塔面板最新版:宝塔Linux面板安装教程 - 2023年2月2日更新 - 7.9.8正式版 - Linux面板 - 宝塔面板论坛(宝塔面板7.x版本,点击查看安装命令)
安装命令如下(CentOS):
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh 12f2c1d72
二、宝塔安装步骤及详情
1.远程连接服务器,可以使用阿里云服务器上自带的远程连接,也可以使用其他远程连接工具,比如Finallshell、xshell、vnc等,看自己的使用习惯来,我这里使用的是服务器自带的Workbench
连接后使用宝塔安装命令
2.安装过程中会让你输入yes或no,统统选择yes,也就是输入“y”
3.等待一段时间后即可,然后出现的网站地址和账号密码就是远程连接宝塔面板的钥匙,记得保存
4.登录宝塔面板前记得去服务器把对应的端口放开,宝塔面板对应的端口为8888
登录界面如下,使用上面的外网面板地址账号密码登录即可
5.登陆进去后会让你注册一个关于宝塔的帐号,按步骤注册就可以,还有一些配套的软件一键安装弹窗,按推荐的安装就行(这里推荐的软件是后续存储数据到数据库且编写接口拿数据需要用到的,所以一定要下载好,并保证软件是打开的,这些软件可以在宝塔面板的软件商店处搜索下载)
三、EMQX企业版安装步骤及详情
1.先把emqx需要用到的端口在服务器上打开(很重要!)
2.EMQX官网下载地址如下,按需下载即可
根据自己服务器的操作系统选择合适的版本下载,我的服务器是CentOS7.9的,所以我选择的EMQX版本如下
按照上面的命令敲到远程连接的命令行下载即可
1. 下载 emqx-ee-4.4.14-otp24.3.4.2-1-el7-amd64.zipSHA256
wget https://www.emqx.com/zh/downloads/enterprise/4.4.14/emqx-ee-4.4.14-otp24.3.4.2-1-el7-amd64.zip
2. 安装
unzip emqx-ee-4.4.14-otp24.3.4.2-1-el7-amd64.zip
3. 运行
./emqx/bin/emqx start
出现以下回复则说明已安装成功并成功启动
四、存储数据到数据库
1.打开控制台
若是用可视化云服务器所搭建的emqx消息服务器,在云服务器端直接打开 http://locallhost:18083/ 就可以进入控制台。
我使用的是没有可视化界面的,所以我是通过服务器的ip地址访问的emqx平台(注意涉及到的端口一定都是要打开的,不然会访问失败),即http://服务器公网地址:18083/#/(这个网址也一定要打对)
控制台默认的账号是admin,密码是public
2.emqx配置资源和规则
在配置之前先把需要的端口号在宝塔面板和服务器面板都打开(很重要,不然真的会做很多无用功,注意,是两个地方的都要打开!)
3.在控制台界面创建资源和规则
4.创建资源就是需要你先在宝塔面板新建一个数据库,然后资源这里填的就是你数据库的信息
5.创建规则是在资源的基础上创建的
然后添加响应动作
6.全部配置好之后你就可以在宝塔面板里的数据库管理通过phpmyadmin工具看到数据已经存储到你新建的数据库里了或者可以通过emqx dashboard控制台的websocket工具看到实时数据的上传,注意发送的数据格式必须的是json格式,发送消息例子如下
{
"temp": 26.5,
"humi":58,
"GPS":"115.3N,25.1W"
}
五、从数据库拿数据
这里拿取数据的接口是用PHP来编写的,所以需要在宝塔面板的软件商店那下载支持php运行的环境,我安装的环境如下,软件需为运行中
1.php接口具体如下:
<?php
//连接数据库
$conn = new mysqli("服务器公网地址","用户名","密码","数据库名");
if($conn->connect_error){
die("Could not connect to database");
}
//新建一个变量 用来获取网络请求传过来的参数
$action = "read";
//新建一个变量用来返回查询的数据
// $res = array('error' => false);
//将网络请求传入过来的参数 赋值给$action变量
if(isset($_GET['action'])){
$action = $_GET['action'];
}
//读取查询数据 如果传入参数是read
if($action == "read"){
//返回的数据为utf8编码 防止中文乱码现象
$conn->query("set names utf8");
//sql语句 查询text表中的所有数据
$result = $conn->query("SELECt * FROM `test`");
//新建一个数组 接收数据
$users = array();
//遍历查询的结果 一行一行的遍历
while($row = $result->fetch_assoc()){
array_push($users,$row);
}
//将数据放在$res变量里面
$res['uesrs'] = $users;
}
//插入数据 如果传入参数是create
if($action == "create"){
}
//更新数据
if($action == "update"){
}
//删除数据
if($action == "delete"){
}
//关闭连接
$conn->close();
header("Content-type:application/json");
//以json的格式返回查询到的数据
echo json_encode($res);
die();
?>
2.先在宝塔面板创建一个服务器站点(使用的域名是你的服务器公网ip)
3.把接口文件放到站点的目录下(不然别人通过这个接口访问不了数据库)
4.然后通过http://服务器公网ip/LM.php这个链接就可以取到数据库里的数据了
至此,一条数据通路就基本实现了,祝大家好运,在弄的过程中一次过,不要遇到各种奇葩的问题,这个流程已经是本人走的第三遍了,但还是在过程中磕磕绊绊,总结了一下,最需要注意的还是在服务器和宝塔面板两边开放端口的问题,这个弄好了估计就没啥了,最后,本人才疏学浅,如有错误欢迎在评论区指正,有不懂的也欢迎在评论区提问,哈哈