openEuler-22.03-SP4离线编译安装mosquitto
使用OpenEuler22操作系统替换CentOS7,需要在离线状态编译安装mosquitto,部署流媒体服务,特记录安装过程。
操作系统:openEuler-22.03-LTS-SP4-x86_64 openEuler-22.03-LTS-SP4-x86_64
1 准备安装环境
1.1 下载离线安装包
准备与目标机相同操作系统环境环境的备机(真机、虚拟机均可)
切记:备机上必须与目标机环境相同,切勿执行yum update 或者yum upgrade等操作,否则在目标机上安装时会导致大量的包需要升级。
在备机上安装必备软件
yum install -y tar
yum install -y git
yum install -y wget
在备机上下载离线包
mkdir -p /home/rpm/tools/net-tools
cd /home/rpm/tools/net-tools
dnf download --resolve net-tools
mkdir -p /home/rpm/tools/vim
cd /home/rpm/tools/vim
dnf download --resolve vim
mkdir -p /home/rpm/tools/tar
cd /home/rpm/tools/tar
dnf download --resolve tar
mkdir -p /home/rpm/tools/wget
cd /home/rpm/tools/wget
dnf download --resolve wget
mkdir -p /home/rpm/compile/gcc-c++
cd /home/rpm/compile/gcc-c++
dnf download --resolve gcc-c++
mkdir -p /home/rpm/compile/make
cd /home/rpm/compile/make
dnf download --resolve make
mkdir -p /home/rpm/compile/cmake
cd /home/rpm/compile/cmake
dnf download --resolve cmake
mkdir -p /home/rpm/compile/openssl-devel
cd /home/rpm/compile/openssl-devel
dnf download --resolve openssl-devel
#### MQTT ####
### c-ares-devel是一款异步解析器库,适用于需要无阻塞地执行DNS查询或需要并行执行多个DNS查询的应用程序
mkdir -p /home/rpm/mqtt/c-ares-devel
cd /home/rpm/mqtt/c-ares-devel
dnf download --resolve c-ares
dnf download --resolve c-ares-devel
### libuuid-devel是一个用于生成UUID(Universally Unique Identifier,通用唯一识别码)的开源库。它支持在类Linux操作系统中编译和使用,主要用于生成全局唯一标识符(GUID),确保在全球范围内的唯一性。
mkdir -p /home/rpm/mqtt/libuuid-devel
cd /home/rpm/mqtt/libuuid-devel
dnf download --resolve libuuid
dnf download --resolve libuuid-devel
### e2fsprogs-devel是一个软件包,它是e2fsprogs项目的一部分。e2fsprogs是一个用于处理ext2/ext3/ext4文件系统的工具集合,而e2fsprogs-devel包则包含了开发ext2/ext3/ext4文件系统相关工具所需的头文件和库文件。
mkdir -p /home/rpm/mqtt/e2fsprogs-devel
cd /home/rpm/mqtt/e2fsprogs-devel
dnf download --resolve e2fsprogs
dnf download --resolve e2fsprogs-devel
### DocBook到LaTeX XSL样式表是一套开源工具,用于将使用DocBook XML格式编写的文档转换为LaTeX源代码。DocBook是一种广泛使用的结构化文档格式,特别适合技术写作,如手册、教程和API文档。它允许作者关注内容,而不是排版细节,通过XML标记来组织和标记文本。
mkdir -p /home/rpm/mqtt/docbook-style-xsl
cd /home/rpm/mqtt/docbook-style-xsl
dnf download --resolve docbook-style-xsl
### 下载cJSON
mkdir -p /home/rpm/mqtt
cd /home/rpm/mqtt
## https://github.com/DaveGamble/cJSON/releases
wget https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.18.tar.gz
mv v1.7.18.tar.gz cJSON-1.7.18.tar.gz
### 下载libwebsockets
mkdir -p /home/rpm/mqtt
cd /home/rpm/mqtt
## https://github.com/warmcat/libwebsockets
wget https://github.com/warmcat/libwebsockets/archive/refs/tags/v4.3.3.tar.gz
mv v4.3.3.tar.gz libwebsockets-4.3.3.tar.gz
### 下载mosquitto
mkdir -p /home/rpm/mqtt
cd /home/rpm/mqtt
## https://mosquitto.org/download/
wget https://mosquitto.org/files/source/mosquitto-2.0.19.tar.gz
cp /home/rpm/tools/tar/tar-1.34-5.oe2203sp4.x86_64.rpm /home/.
tar -zcvf rpm.tar.gz rpm/*
2 在目标机上安装
2.1 安装前的准备工作
- 关闭selinux
vi /etc/selinux/config
# 修改 SELINUX=enforcing 为 SELINUX=disabled
- 复制文件
cd /home
# 请更改IP地址为备机IP地址
scp root@192.168.43.163://home/*.rpm .
scp root@192.168.43.163://home/*.gz .
rpm -ivh --nosignature tar-1.34-5.oe2203sp4.x86_64.rpm
tar -zxvf rpm.tar.gz
- 安装通用软件及编译环境
# 安装net-tools
cd /home/rpm/tools/net-tools
rpm -ivh --nosignature *.rpm
# 安装vim
cd /home/rpm/tools/vim
rpm -ivh --nosignature *.rpm
#### 安装编译环境 ####
# 安装make
cd /home/rpm/compile/make
rpm -ivh --nosignature *.rpm
# 安装cmake
cd /home/rpm/compile/cmake
rpm -ivh --nosignature *.rpm
# 安装gcc-c++
cd /home/rpm/compile/gcc-c++
rpm -Uvh --nosignature *.rpm
# 安装openssl-devel
cd /home/rpm/compile/openssl-devel
rpm -Uvh --nosignature *.rpm
# 安装c-ares-devel
cd /home/rpm/mqtt/c-ares-devel
rpm -ivh --nosignature *.rpm
# 安装libuuid-devel
cd /home/rpm/mqtt/libuuid-devel
rpm -ivh --nosignature *.rpm
# 安装e2fsprogs-devel
cd /home/rpm/mqtt/e2fsprogs-devel
rpm -ivh --nosignature *.rpm
# 安装docbook-style-xsl
cd /home/rpm/mqtt/docbook-style-xsl
rpm -ivh --nosignature *.rpm
2.2 编译安装cJSON
cd /home/rpm/mqtt/
tar zxvf cJSON-1.7.18.tar.gz
cd cJSON-1.7.18/
make
make install
2.3 编译安装libwebsockets
cd /home/rpm/mqtt/
tar zxvf libwebsockets-4.3.3.tar.gz
cd libwebsockets-4.3.3/
mkdir build
cd build
cmake ..
make
make install
2.4 编译安装mosquitto
- 编译安装
cd /home/rpm/mqtt
tar -xzvf mosquitto-2.0.19.tar.gz
cd /home/rpm/mqtt/mosquitto-2.0.19/
- 修改配置文件
vi /home/rpm/mqtt/mosquitto-2.0.19/config.mk
## 一定要设置
## 将config.mk 的WITH_WEBSOCKETS:=NO 修改 为 WTIH_WEBSOCKETS:=yes
- 编译安装
make
make install
- 修改MOSQUITTO的配置文件
# 这个是MQTT使用的端口
listener 1883
protocol mqtt
# 添加ws端口
listener 8082
protocol websockets
# 添加wss端口
listener 8081
protocol websockets
### 需要配置证书
# cafile /home/mosquitto/crt/root.crt //根证书
# certfile /home/mosquitto/crt/public.crt //公共证书
# keyfile /home/mosquitto/crt/cloud.key //密钥文件
user xaele
# 指定密码文件
password_file /etc/mosquitto/pwfile
- 建用户名和密码
如果没有用户xaele
useradd xaele
passwd xaele
# 给sudoers添加可写权限
chmod -v u+w /etc/sudoers
vi /etc/sudoers
# 在 Allow root to run any commands anywhere下增加
xaele ALL=(ALL) ALL
# 取消sudoers可写权限
chmod -v u-w /etc/sudoers
# 设置密码
mosquitto_passwd -c /etc/mosquitto/pwfile xaele
提示连续两次输入密码、创建成功。命令解释: -c 创建一个用户、/etc/mosquitto/pwfile.example 是将用户创建到 pwfile.example 文件中、admin 是用户名。
创建mosquitto用户。在命令窗口键入如下命令:
mosquitto_passwd /etc/mosquitto/pwfile mosquitto
同样连续会提示连续输入两次密码。注意第二次创建用户时不用加 -c 如果加 -c 会把第一次创建的用户覆盖。
至此两个用户创建成功,此时如果查看 pwfile.example 文件会发现其中多了两个用户。
6. 添加软链接
ln -s /usr/local/lib/libwebsockets.so.19 /usr/lib64/libwebsockets.so.19
2.5 开放端口
firewall-cmd --zone=public --add-port=1883/tcp --permanent
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --zone=public --add-port=8082/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports
3 测试
3.1 手动启动命令
# 前台启动方式
/usr/local/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
# 后台启动方式(推荐)
# /usr/local/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf -d
3.2 设置mosquitto开机自启动
vi /etc/systemd/system/mosquitto.service
# 复制以下内容
[Unit]
Description=Mosquitto MQTT Broker
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
设置开机自启动
sudo systemctl daemon-reload
sudo systemctl start mosquitto
sudo systemctl enable mosquitto
验证是否启动
sudo systemctl status mosquitto
以上就是编译安装的完整步骤,如果所用操作系统与本文不同,请按照上述步骤执行即可。
原文地址:https://blog.csdn.net/redfoxtao/article/details/142868008
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!