RabbitMQ centos 环境搭建

1.安装erlang 版本 24

首先执行命令

yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel

下载地址:otp_src_24.0.tar.gz - Information sharing - KodExplorer - Powered by KodExplorer

解压文件 tar -zxvf otp_src_24.0.tar.gz

移动文件 mv otp_src_24.0 /usr/local/

切换目录  cd /usr/local/otp_src_24.0

创建即将安装的目录

mkdir ../erlang

配置安装路径

./configure --prefix=/usr/local/erlang

安装

make install

添加环境变量

echo 'export PATH=$PATH:/usr/local/erlang/bin' >> /etc/profile

刷新环境变量

source /etc/profile

查看安装

erl

2.安装 rabbitmq

下载地址:rabbitmq-server-3.8.16-1.el7.noarch.rpm - Information sharing - KodExplorer - Powered by KodExplorer

安装命令

 rpm -ivh rabbitmq-server-3.8.16-1.el7.noarch.rpm   --force --nodeps

启动

rabbitmq-server start

3.开启web插件

rabbitmq-plugins enable rabbitmq_management

rabbitmq-plugins enable rabbitmq_mqtt

4.关闭防火墙

systemctl stop firewalld.service    

禁止开机启动防火墙

systemctl disable firewalld.service

5.添加用户

查看所有用户

rabbitmqctl list_users

添加一个用户

rabbitmqctl add_user admin 123456

配置权限

rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

查看用户权限

rabbitmqctl list_user_permissions admin

设置tag

rabbitmqctl set_user_tags admin administrator

删除用户(安全起见,删除默认用户)

rabbitmqctl delete_user guest

最终以服务运行

 systemctl start rabbitmq-server

会提示这个错误

./usr/lib/rabbitmq/bin/rabbitmq-server: line 82: not find 原因是erlang找不到

加入这2行代码,然后重新运行就好了,哈哈哈

ERLANG_HOME=/usr/local/erlang

export PATH=$PATH:$ERLANG_HOME/bin

更多功能

1.WS连接

开启 

rabbitmq-plugins enable rabbitmq_web_mqtt 插件
var client = new Paho.MQTT.Client(wsbroker, wsport, "/ws",
        "myclientid_" + parseInt(Math.random() * 100, 10));

注意 第三个参数是ws 端口默认是  15675

WSS不想配置证书的看下面

记录一次HTTPS协议下JS连接MQ报错的问题

背景: 由于项目要使用mq, 经过筛选最终决定要使用rabbitmq, 首先从开发到测试(测试环境使用的是http协议)一切还很顺利, 但是部署到生产环境(https)上后mq连接失败, 故写改文章记录一下。

前端代码片段:
初始化对象

var ws = new WebSocket('ws://ip:port/ws');
  • 1

初始化对象时报错:

Mixed Content: The page at 'https://xxx'   was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws://ip地址:15674/ws'. This request has been blocked; this endpoint must be available over WSS.
  • 1

这段话的大致意思是: 页面通过HTTPS加载, 该请求不可用, 必须在wss上可用
因此我们对配置进行修改为:

var ws = new WebSocket('wss://ip:port/ws');
  • 1

结果重点来了:

WebSocket connection to 'wss://ip:15674/ws' failed: Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR
  • 1

websocket还是连接失败,大概意思就是: 连接出错, SSL协议错误。
说明证书有问题。因此, 找到了问题点就好解决了: 通过nginx做代理.
代码如下:

server {
	listen 443;
        server_name 域名; 
        ssl on;
        ssl_certificate /root/ssl/1_域名_bundle.crt; 
        ssl_certificate_key /root/ssl/2_域名.key;  
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
		location /ws {
		             access_log /usr/local/nginx/logs/come-websocket.log;
		             proxy_pass http://ip:15674; # 代理rabbitmq
		             proxy_read_timeout 60s;
		             proxy_http_version 1.1;
		            proxy_set_header Upgrade $http_upgrade;
		             proxy_set_header Connection 'Upgrade';
		   }

划重点:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘Upgrade’;
这两行表明:websocket连接进入的时候,进行一个连接升级将http连接变成websocket的连接
nginx在1.3版本以后支持websocket协议

最终:

var ws = new WebSocket('wss://{域名}/ws');

至此连接成功~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值