-
>本文仅供学习参考,通过自己在云服务器搭建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服务器,快去尝试吧~~**
-
这个在 arm ecs 虚机上,不生效,可以修改一下。 sed -i "s@http://.*archive.ubuntu.com@http://mirrors.huaweicloud.com@g" /etc/apt/sources.listsed -i "s@http://.*security.ubuntu.com@http://mirrors.huaweicloud.com@g" /etc/apt/sources.list
-
mirrors.tools.huawei.com/ubuntuapt-get install gcc-7 找不到安装包
-
../lib/libxml2.so.2: undefined reference to `fcntl64@GLIBC_2.28'collect2: error: ld returned 1 exit statusMakefile:22: recipe for target 'demo' failedmake: *** [demo] Error 1
-
TaiShan 200 2280+ubuntu18.04.1系统,使用porting Advisor工具,软件分析构建中心,提示的信息里面说要安装rpm相关的依赖,请问这个是否是提示信息不正确?是否要提示安装deb相关的依赖?
-
比如:https://repo.huaweicloud.com/ubuntu-cloud-images/releases/bionic/release/ 对应于https://cloud-images.ubuntu.com/releases/bionic/release/根本就没下。这从Ubuntu下特别慢,lxd的各种image,如能同步非常有用。大厂中腾讯云同步是好的。
-
软件介绍Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。支持的操作系统经过华为云严格实测,以下操作系统在鲲鹏生态中可以完整运行Docker的全部功能:l CentOS 7.5centos-extra仓库必须处于“enabled”状态。这是操作系统默认配置,如果你已经设置成“disabled”,则需要重新设置。相关命令如下:l 查询仓库状态:yum repolist all例如:yum repolist all|grep "CentOS-7 - Extras"l 设置为“enabled”状态:yum-config-manager --enable例如: yum-config-manager --enable "CentOS-7 - Extras - mirrors.huaweicloud.com"l 设置为“disabled”状态:yum-config-manager --disable例如:yum-config-manager --disable "CentOS-7 - Extras - mirrors.huaweicloud.com"l EulerOS 2.8l Ubuntu 18.04安装与部署方式Ubuntu操作系统1. 准备环境准备实例从华为云官网购买鲲鹏云服务ECS实例,详细配置如下:类别子项版本云服务器配置ECS实例类型kc1.xlarge.4ECS配置4U16GBEVS(系统盘)高IO(40GB)EVS(数据盘)高IO(40GB)云OSUbuntu18.04Kernel4.15.0-29安装依赖包执行以下命令安装依赖包。sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common2. 执行安装方式一:通过软件仓库安装1) 老版本的Docker的命名为“docker”、“docker.io” 或 “docker-engine”,如果安装了这些版本,需要先卸载掉。保存在“/var/lib/docker”/中的内容,包括图片、磁盘和网络配置等都会保留下来。sudo apt-get remove docker docker-engine docker.io containerd runc2) 添加Docker官方GPG key。curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -3) 设置Docker CE软件仓库版本为arm64。sudo add-apt-repository \"deb [arch=arm64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"4) 安装docker-ce软件。sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io如果需要安装指定版本的docker-ce,可以执行以下命令:sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io方式二:下载软件包安装1) 通过https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/arm64/,下载指定版本的软件包。2) 执行命令安装软件包及依赖。“package.deb”为下载的软件包。sudo dpkg -i /path/to/package.deb3. 启动软件1) 启动docker。sudo systemctl start docker2) 使用一个hello-world镜像验证docker是否正常。sudo docker run hello-world回显内容如下:Unable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-world3b4173355427: Pull complete Digest: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8Status: Downloaded newer image for hello-world:latest Hello from Docker!This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (arm64v8) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/CentOS操作系统1. 准备环境准备实例从华为云官网购买鲲鹏云服务ECS实例,详细配置如下:类别子项版本云服务器配置ECS实例类型rc3.xlarge.4ECS配置4U14GBEVS(系统盘)高IO(40GB)EVS(数据盘)高IO(40GB)云OSCentOS7.5Kernel4.14.0-49 安装依赖包执行以下命令安装依赖包。sudo yum install -y yum-utils device-mapper-persistent-data lvm22. 执行安装方式一:使用软件仓库安装1) 老版本的docker的命名为“docker”或 “docker-engine”,如果安装了这些版本,需要先卸载掉。保存在“/var/lib/docker/”中的内容,包括图片、磁盘和网络配置等都会保留下来。sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate2) 配置软件仓库。sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo3) 安装docker-ce。sudo yum install docker-ce docker-ce-cli containerd.io这个命令总是会安装最新版本的docker-ce,如果需要安装指定版本的可以参考下面的操作:sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io方式二:下载软件包安装1) 通过https://download.docker.com/linux/centos/7/aarch64/stable/Packages/,下载指定版本的软件包。2) 执行命令安装软件包及依赖。“package.rpm”为下载的软件包。sudo yum install /path/to/package.rpm3. 启动软件1) 启动Docker。sudo systemctl start docker2) 使用一个hello-world镜像验证Docker是否正常。sudo docker run hello-world回显内容如下:Unable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-world3b4173355427: Pull complete Digest: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8Status: Downloaded newer image for hello-world:latest Hello from Docker!This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (arm64v8) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/软件下载源码下载:立即下载
-
Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/\${ <-- HERE ([^ \t=:+{}]+)}/ at /usr/bin/automake line 3930.sub substitute_ac_subst_variables{ my ($text) = @_; $text =~ s/\${([^ \t=:+{}]+)}/substitute_ac_subst_variables_worker ($1)/ge; return $text;}需要修改为 $text =~ s/\$\{([^ \t=:+{}]+)}/substitute_ac_subst_variables_worker ($1)/ge;
-
#化鲲为鹏,我有话说#ARM(鲲鹏),给您不一样的感觉。解决http://ddebs.ubuntu.com源下各类架构包太慢的问题。这个源貌似国内没有镜像,apt-get国内用户有些一秒20k甚至1000b,^_^!那要用到上面的各种接近1g的架构包怎么办呢?现在以ubuntu x64为例,arm64作为习题请自行推理练习。比如800m的debuginfo kernel xx架构 ddeb包apt-get非常慢,那么可以选择自己编译源码来生成。 $ cd $HOME $ sudo apt-get install dpkg-dev debhelper gawk $ mkdir tmp $ cd tmp $ sudo apt-get build-dep --no-install-recommends linux-image-$(uname -r) $ apt-get source linux-image-$(uname -r)cd linux-signed-hwe-5.0.0/上面是我这次实际生成的目录,请根据实际情况进入自己的目录。sudo apt-get install pkg-config-dbgsym fakeroot debian/rules clean AUTOBUILD=1 fakeroot debian/rules binary skipdbg=false sudo dpkg -i ../linux-image-5.0.0-27-generic-dbgsym_5.0.0-27.28~18.04.1_amd64.ddeb提示依赖linux-image-unsigned-5.0.0-27-generic-dbgsym这...已经做了一个包,再做一个就不符合这篇文章炫酷装逼的风格了...所以必须用另一外一条路子来展现拉风,就是shell拼命刷新那种(先假装不知道apt-fast,哈哈哈)这时候不要去百度,去bing搜索linux-image-unsigned-5.0.0-27-generic-dbgsym就能获得下载链接http://ddebs.ubuntu.com/pool/main/l/linux/linux-image-unsigned-5.0.0-27-generic-dbgsym_5.0.0-27.28_amd64.ddebsudo dpkg -r linux-image-5.0.0-27-generic-dbgsym sudo apt-get install axel cd ~ mkdir axel axel -n 1024 -o axel/ http://ddebs.ubuntu.com/pool/main/l/linux/linux-image-unsigned-5.0.0-27-generic-dbgsym_5.0.0-27.28_amd64.ddeb已下载 834.4 兆字节,用时 1 分 34 秒。(9018.85 KB/s)cd axel/ sudo dpkg -i linux-image-unsigned-5.0.0-27-generic-dbgsym_5.0.0-27.28_amd64.ddeb cd ~ sudo dpkg -i tmp/linux-signed-hwe-5.0.0/linux-image-5.0.0-27-generic-dbgsym_5.0.0-27.28~18.04.1_amd64.ddeb解决依赖关系~
-
#化鲲为鹏,我有话说#ARM(鲲鹏),给您不一样的感觉。debuginfo for ubuntu systemtap semantic error ubuntu初步安装了systemtap包,运行sudo stap -v -e 'probe vfs.read {printf("read performed"); exit()}'若遇到semantic error,可尝试以下解决方案。echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/debuginfo_debs.list echo "deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/debuginfo_debs.list sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01 sudo apt-get update报错W: GPG 错误:http://ddebs.ubuntu.com bionic Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY C8CAB6595FDFF622 E: 仓库 “http://ddebs.ubuntu.com bionic Release” 没有数字签名。 N: 无法安全地用该源进行更新,所以默认禁用该源。 N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。 W: GPG 错误:http://ddebs.ubuntu.com bionic-updates Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY C8CAB6595FDFF622 E: 仓库 “http://ddebs.ubuntu.com bionic-updates Release” 没有数字签名。 N: 无法安全地用该源进行更新,所以默认禁用该源。 N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。再执行sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C8CAB6595FDFF622 sudo apt-get update还是有报错,删掉这两个源,重新添加$ U=http://ddebs.ubuntu.com $ D=$(lsb_release -cs) $ cat <<EOF | sudo tee /etc/apt/sources.list.d/ddebs.list deb ${U} ${D} main restricted universe multiverse #deb ${U} ${D}-security main restricted universe multiverse deb ${U} ${D}-updates main restricted universe multiverse deb ${U} ${D}-proposed main restricted universe multiverse EOF $ wget -O - http://ddebs.ubuntu.com/dbgsym-release-key.asc | \ sudo apt-key add - $ sudo apt update -y这回没报错了。$ uname -r得到5.0.0-27-generic执行sudo apt-get install linux-image-5.0.0-27-generic-dbgsym对于新手,建议先在物理实机熟悉内核调优工具,再考虑迁移到鲲鹏上。
-
https://repo.huaweicloud.com/ubuntu-cloud-images/server/server/server/
-
1、下载软件wget -q http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz2、解压移动tar xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz mkdir -p /application mv mysql-5.6.35-linux-glibc2.5-x86_64 /software/mysql-5.6.35 useradd -s /sbin/nologin -M mysql chown -R mysql.mysql /software/mysql-5.6.35/ cd /software/mysql-5.6.35/3、初始化数据库cp support-files/my-default.cnf /etc/my.cnf ./scripts/mysql_install_db --basedir=/software/mysql-5.6.35/ --datadir=/software/mysql-5.6.35/data/ --user=mysql sed -i 's#/usr/local/mysql#/software/mysql-5.6.35#g' /software/mysql-5.6.35//bin/mysqld_safe4、启动登录/software/mysql-5.6.35/bin/mysqld_safe &lsof -i :3306PATH="/software/mysql-5.6.35/bin/:$PATH"5、登录测试/software/mysql-5.6.35//bin/mysqld_safe & lsof -i :3306PATH="/software/mysql-5.6.35/bin/:$PATH" [root@tanggongcheng mysql-5.6.35]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.6.35 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> select version(); +-----------+| version() | +-----------+| 5.6.35 | +-----------+1 row in set (0.00 sec) mysql> create database tanggongcheng; Query OK, 1 row affected (0.00 sec) mysql> create database yanxiaolei; Query OK, 1 row affected (0.00 sec)mysql> show databases like 'old%'; +-----------------+| Database (old%) | +-----------------+| tanggongcheng || yanxailei | +-----------------+2 rows in set (0.00 sec)
-
【问题描述】 用户在使用ubuntu、debian等系统,升级grub或者重新生成grub.cfg文件后,重启机器后网卡名变为ens3导致获取ip失败。【解决方法】1. 备份grub.cfg文件(由grub2管理的OS,路径为/boot/grub2/grub.cfg)cp/boot/grub/grub.cfg /boot/grub/grub.cfg.bak2. 修改/etc/default/grub文件,在GRUB_CMDLINE_LINUX这一行添加net.ifnames=0161023. 执行下面命令重新生成grub.cfg文件(由grub2管理的OS,命令为grub2-mkconfig)grub-mkconfig-o /boot/grub/grub.cfg4. reboot重启机器
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签