自学内容网 自学内容网

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 安装前的准备工作

  1. 关闭selinux
vi /etc/selinux/config
# 修改 SELINUX=enforcing 为 SELINUX=disabled
  1. 复制文件
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
  1. 安装通用软件及编译环境
# 安装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

  1. 编译安装
cd /home/rpm/mqtt
tar -xzvf mosquitto-2.0.19.tar.gz
cd /home/rpm/mqtt/mosquitto-2.0.19/
  1. 修改配置文件
vi /home/rpm/mqtt/mosquitto-2.0.19/config.mk
## 一定要设置
## 将config.mk 的WITH_WEBSOCKETS:=NO 修改 为 WTIH_WEBSOCKETS:=yes
  1. 编译安装
make
make install
  1. 修改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
  1. 建用户名和密码
如果没有用户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)!