目录
8、连接到Redis在指定编号数据库,添加客户端用户与ACL规则(实时生效)
15、使用Nginx实现SSL替代EMQX自带的SSL加密端口
23、在浏览器访问对应服务器的18083端口,登录控制台界面,打开以下插件并重启
1、下载安装包并解压
cd /energy/apps-local/lib
wget -O emqx-4.4.17-otp24.3.4.2-1-el7-amd64.zip https://www.emqx.com/en/downloads/broker/4.4.17/emqx-4.4.17-otp24.3.4.2-1-el7-amd64.zip
unzip emqx-4.4.17-otp24.3.4.2-1-el7-amd64.zip
2、赋予安装目录可执行权限
chown -R root:root /energy/apps-local/lib/emqx
chmod -R 700 /energy/apps-local/lib/emqx
3、创建数据目录和日志目录
将EMQX数据目录与日志目录分别移动到规范位置,并在原位置建立软链接
mv /energy/apps-local/lib/emqx/data /energy/apps-local/data/emqx
ln -s /energy/apps-local/data/emqx /energy/apps-local/lib/emqx/data
mv /energy/apps-local/lib/emqx/log /energy/apps-local/logs/emqx
ln -s /energy/apps-local/logs/emqx /energy/apps-local/lib/emqx/log
4、修改控制台配置文件
/energy/apps-local/lib/emqx/etc/plugins/emqx_dashboard.conf,找到下面列举的配置项并修改为对应值
dashboard.default_user.login = admin
dashboard.default_user.password = energy123456
5、修改主配置文件
/energy/apps-local/lib/emqx/etc/emqx.conf,找到下面列举的配置项并修改为对应值
node.name = 环境名称(dev/test/release/prod)@具体IP值
# 配置默认ACL规则为拒绝
acl_nomatch = deny
# 配置ALC规则更新后断开当前连接
acl_deny_action = disconnect
# 将MQTT协议端口绑定到本地回环地址并打开代理通道开关,使用Nginx代理对外暴露不加密的MQTT协议端口
listener.tcp.external = 127.0.0.1:1883
listener.tcp.external.proxy_protocol = on
# 将WebSocket协议端口绑定到本地回环地址并打开代理通道开关,使用Nginx代理对外暴露不加密的WebSocket协议端口
listener.ws.external = 127.0.0.1:8083
listener.ws.external.proxy_protocol = on
# 注释下列配置以关闭自带的SSL加密端口
## listener.ssl.external = 8883
## listener.wss.external = 8084
6、修改acl.conf
修改/energy/apps-local/lib/emqx/etc/acl.conf以默认拒绝所有连接
# 将{allow, all}.修改为{deny, all}.
7、修改emqx_auth_redis.conf
修改/energy/apps-local/lib/emqx/etc/plugins/emqx_auth_redis.conf以下配置项来使用Redis存储EMQX的用户账号信息与ACL规则
auth.redis.server = # HOST:PORT
auth.redis.database = # 数据库编号,如无意外,统一用“8”
# Redis连接账号/密码视具体情况填写
8、连接到Redis在指定编号数据库,添加客户端用户与ACL规则(实时生效)
9、EasyRSA包下载并解压到指定位置
EasyRSA包下载地址:https://download.csdn.net/download/sean9169/90311221
cd /energy/apps-local/lib
tar -zxvf ./EasyRSA-3.2.1.tgz
mv ./EasyRSA-3.2.1 ./emqx-easyrsa
rm -rf ./EasyRSA-3.2.1.tgz ./emqx-easyrsa/pki
10、初始化PKI,提示是否确认时,输入yes并回车
cd /energy/apps-local/lib/emqx-easyrsa
./easyrsa init-pki
11、生成CA证书,提示输入时无需输入,直接回车
cd /energy/apps-local/lib/emqx-easyrsa
./easyrsa build-ca nopass
12、生成服务端私钥,提示输入时无需输入,直接回车
cd /energy/apps-local/lib/emqx-easyrsa
./easyrsa gen-req server nopass
13、签发服务端公钥,提示是否确认时,输入yes并回车
cd /energy/apps-local/lib/emqx-easyrsa
./easyrsa sign-req server server
14、生成客户端私钥并签发公钥
这里的用户名与客户端连接用户名不是强相关,但是为了方便维护,两者尽可能保持一致
cd /energy/apps-local/lib/emqx-easyrsa
# 生成客户端私钥,提示输入时无需输入,直接回车
./easyrsa gen-req 用户名 nopass
# 签发客户端公钥,提示是否确认时,输入yes并回车
./easyrsa sign-req client 用户名
15、使用Nginx实现SSL替代EMQX自带的SSL加密端口
为方便拓展EMQX集群,使用Nginx实现SSL替代EMQX自带的SSL加密端口,Nginx安装详见https://blog.csdn.net/sean9169/article/details/145415451,创建/energy/apps-local/lib/nginx/conf/conf.d/stream/emqx.conf,并写入以下内容,直接对相应端口的TCP数据做流转发以替代EMQX自带的MQTTS(8883)协议和WSS(8084)协议端口
server {
listen 本机物理网卡IP:1883;
proxy_protocol on;
proxy_pass 127.0.0.1:1883;
}
server {
listen 本机物理网卡IP:8083;
proxy_protocol on;
proxy_pass 127.0.0.1:8083;
}
server {
listen 8883 ssl;
ssl_certificate /energy/apps-local/lib/emqx-easyrsa/pki/issued/server.crt;
ssl_certificate_key /energy/apps-local/lib/emqx-easyrsa/pki/private/server.key;
ssl_client_certificate /energy/apps-local/lib/emqx-easyrsa/pki/ca.crt;
ssl_verify_client on;
ssl_verify_depth 1;
proxy_protocol on;
proxy_pass 127.0.0.1:1883;
}
server {
listen 8084 ssl;
ssl_certificate /energy/apps-local/lib/emqx-easyrsa/pki/issued/server.crt;
ssl_certificate_key /energy/apps-local/lib/emqx-easyrsa/pki/private/server.key;
ssl_client_certificate /energy/apps-local/lib/emqx-easyrsa/pki/ca.crt;
ssl_verify_client on;
ssl_verify_depth 1;
proxy_protocol on;
proxy_pass 127.0.0.1:8083;
}
16、重启Nginx
systemctl restart nginx
17、打开EMQX相关端口的防火墙
firewall-cmd --zone=drop --add-port=1883/tcp --permanent
firewall-cmd --zone=drop --add-port=8883/tcp --permanent
firewall-cmd --zone=drop --add-port=8083/tcp --permanent
firewall-cmd --zone=drop --add-port=8084/tcp --permanent
firewall-cmd --zone=drop --add-port=8081/tcp --permanent
firewall-cmd --zone=drop --add-port=18083/tcp --permanent
firewall-cmd --reload
18、设置环境变量
# 将以下代码加入/etc/profile末尾
# EMQX
export PATH=/energy/apps-local/lib/emqx/bin:$PATH
19、刷新环境变量
source /etc/profile
20、创建服务启动脚本
创建systemctl脚本/usr/lib/systemd/system/emqx.service并写入以下内容
[Unit]
Description=emqx
After=network.target
[Service]
Type=forking
User=root
PrivateTmp=true
Restart=always
ExecStart=/energy/apps-local/lib/emqx/bin/emqx start
ExecStop=/energy/apps-local/lib/emqx/bin/emqx stop
[Install]
WantedBy=multi-user.target
21、启动服务并将启动脚本加入开机自启动
systemctl enable --now emqx
22、查看服务状态
systemctl status emqx
23、在浏览器访问对应服务器的18083端口,登录控制台界面,打开以下插件并重启
重启emqx
systemctl restart emqx