Linux Shell 实现一键部署二进制Rabbitmq

news2024/9/24 16:33:46

 

rabbitmq 前言

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

rabbitmq 参考

  • 版本兼容性参考
rabbitmqerlangjavawxWidgets
downloaddownloaddownloaddownload
备用download

Linux 各系统下载使用参考

Red HatRocky Linux Oracle Linux

AlmaLinux 

ubuntususelinuxesxiRHEL标准安装系统安装参考YUM参考

MobaXterm 远程连接工具

Red Hat Enterprise 9.0 文档Kickstart 生成器
downloaddownloaddownloaddownloaddownloaddownloaddownload参考参考配置参考download参考Kickstart 
版本兼容性

安装 rabbitmq

  • 创建安装自动化脚本

  •  版本兼容性参考

  • 实现在线安装rabbitmq,erlang,java,wxWidgets,配置rabbitmq配置文件,防火墙配置,企业微信机器人通知。
  • 以下基于Redhat系统
  • find / -name rabbitmq  #rabbitmq目录查看
  • find / -name erlang  #erlang目录查看
  • rabbitmq 用户名密码admin/Report@123
  • curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXX' #更改自己的企业微信机器人地址 
  • curl -o /etc/yum.repos.d/redhat.repo http://mirrors.aliyun.com/repo/Centos-8.repo #阿里在线repo
  • yum install figlet -y #用于将文字转换为放大艺术字(使用figlet Mysql显示)
vi /erlang_rabbitmq.sh
#!/bin/bash -e
# Author: CIASM 
# Date: 2023/0412

<<!
██████╗  █████╗ ██████╗ ██████╗ ██╗████████╗███╗   ███╗ ██████╗ 
██╔══██╗██╔══██╗██╔══██╗██╔══██╗██║╚══██╔══╝████╗ ████║██╔═══██╗
██████╔╝███████║██████╔╝██████╔╝██║   ██║   ██╔████╔██║██║   ██║
██╔══██╗██╔══██║██╔══██╗██╔══██╗██║   ██║   ██║╚██╔╝██║██║▄▄ ██║
██║  ██║██║  ██║██████╔╝██████╔╝██║   ██║   ██║ ╚═╝ ██║╚██████╔╝
╚═╝  ╚═╝╚═╝  ╚═╝╚═════╝ ╚═════╝ ╚═╝   ╚═╝   ╚═╝     ╚═╝ ╚═
!


<<!
#Centos 8 rabbitmq+erlang 安装依赖插件
yum install -y gcc gcc-c++ glibc-devel make cmake m4 ncurses-devel unixODBC unixODBC-devel openssl-devel autoconf net-tools socat mesa-libGLU-devel unzip zip xml-common zlib zlib-devel
yum install -y libxslt libxml2 wget vim bzip2
yum install -y gtk2-devel binutils-devel 
!

<<!
#ubuntu rabbitmq+erlang 安装依赖插件
apt-get install build-essential autoconf m4 libncurses5-dev libwxgtk3.0-dev libgl1-mesa-dev libglu1-mesa-dev libpng-dev libssh-dev unixodbc-dev xsltproc fop
!

#Define data path variables
data_downloads=/data/downloads

#Define rabbitmq path variables
rabbitmq_URL=https://mirrors.huaweicloud.com/rabbitmq-server/v3.11.6/
rabbitmq_gz=rabbitmq-server-generic-unix-3.11.6.tar.xz
rabbitmq_FILE_DIR=rabbitmq_server-3.11.6
rabbitmq_PREFIX=/opt/rabbitmq
disk=/opt

#Plug-in download
zlib_devel_url=https://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64/getPackage/zlib-devel-1.2.11-20.el8.x86_64.rpm
zlib_url=https://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64/getPackageSource/zlib-1.2.11-20.el8.src.rpm
unzip_url=http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/unzip-6.0-45.el8.x86_64.rpm
zip_url=http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/zip-3.0-23.el8.x86_64.rpm
xml_common_url=http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/xml-common-0.6.3-50.el8.noarch.rpm

#erlang path variables
erlang_url=https://erlang.org/download/
erlang_gz=otp_src_25.3.tar.gz
erlang_FILE_DIR=otp_src_25.3
erlang_new=erlang

#java path variables
java_url=https://repo.huaweicloud.com/java/jdk/13+33/
java_gz=jdk-13_linux-x64_bin.tar.gz
java_catalogue=jdk-13
java_catalogue_new=jdk

#wxWidgets path variables
wxWidgets_url=https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.0/
wxWidgets_bz=wxWidgets-3.2.0.tar.bz2
wxWidgets_catalogue=wxWidgets-3.2.0

install_depend () {
mkdir -p $data_downloads
wget -N -P $data_downloads $zlib_devel_url
wget -N -P $data_downloads $zlib_url 
wget -N -P $data_downloads $unzip_url
wget -N -P $data_downloads $zip_url
wget -N -P $data_downloads $xml_common_url
rpm -ihv $data_downloads/*.rpm --nodeps --force
yum install -y gcc gcc-c++ glibc-devel make cmake m4 ncurses-devel unixODBC unixODBC-devel openssl-devel autoconf net-tools socat mesa-libGLU-devel
yum install -y libxslt libxml2 wget vim bzip2
yum install -y gtk2-devel binutils-devel
}

install_java (){
wget -N -P $data_downloads $java_url$java_gz
tar -zxf $data_downloads/$java_gz -C $disk
mv $disk/$java_catalogue $disk/$java_catalogue_new
echo 'export JAVA_HOME=/opt/jdk'  >> /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin'  >> /etc/profile
echo 'export JAVA_HOME' >> /etc/profile
source /etc/profile
}

install_wxWidgets (){
wget -N -P $data_downloads $wxWidgets_url/$wxWidgets_bz
tar -jxf $data_downloads/$wxWidgets_bz -C $disk
cd $disk/$wxWidgets_catalogue
./configure --prefix=/opt/wxWidgets --disable-shared --enable-unicode -enable-debug --enable-webview -with-regex=builtin --with-gtk
make -j8 && make install
echo 'export PATH=$PATH:/opt/wxWidgets/bin'  >> /etc/profile
source /etc/profile
wx-config --version
}

install_erlang (){
if [ ! -d ${rabbitmq_PREFIX} ];then
install_depend
install_java
install_wxWidgets
wget -N -P $data_downloads $erlang_url/$erlang_gz
tar -xf $data_downloads/$erlang_gz -C $disk
 if [ $? -eq 0 ];then 
   cd $disk/$erlang_FILE_DIR
   ./configure --prefix=/opt/erlang --without-javac
   make -j8 && make install
   echo 'export ERLANG_HOME=/opt/erlang'  >> /etc/profile
   echo 'export PATH=$PATH:$ERLANG_HOME/bin'  >> /etc/profile
   echo 'export ERLANG_HOME' >> /etc/profile
   source /etc/profile
   ln -s $disk/$erlang_new/bin/* /usr/local/sbin/
   install_rabbitmq
   action "\033[32mThe rabbitmq Install Sussess...\033[0m" 
   else
	action "\033[33mThe rabbitmq Install Failed...\033[0m" 
	exit 1
   fi
   else
	echo -e "\033[31mThe rabbitmq already Install...\033[0m"
fi
}

install_rabbitmq () {
wget -N -P $data_downloads $rabbitmq_URL/$rabbitmq_gz
tar -xf $data_downloads/$rabbitmq_gz -C $disk
mv $disk/$rabbitmq_FILE_DIR $rabbitmq_PREFIX
ln -s $rabbitmq_PREFIX/sbin/* /usr/local/sbin/
echo 'export RABBITMQ_HOME=/opt/rabbitmq'  >> /etc/profile
echo 'export PATH=$PATH:$RABBITMQ_HOME/sbin'  >> /etc/profile
echo 'export RABBITMQ_HOME' >> /etc/profile
source /etc/profile

cat >>/usr/lib/systemd/system/rabbitmq-server.service<<EOF
[Unit]
Description=RabbitMQ broker
After=syslog.target network.target

[Service]
User=root
Group=root
WorkingDirectory=/opt/rabbitmq
ExecStart=/opt/rabbitmq/sbin/rabbitmq-server
ExecStop=/opt/rabbitmq/sbin/rabbitmqctl stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now rabbitmq-server.service

sh /rabbitmq_config.sh

firewall-cmd --zone=public --permanent --add-port={4369,25672,5671,5672,15672,61613,61614,1883,8883}/tcp
firewall-cmd --reload

rm -rf $data_downloads/*
rm -rf $disk/$erlang_FILE_DIR
}

Deployment_completion_notification (){
   host_ID=`dmidecode -s system-serial-number | sed -r 's/\s+//g'`
   host_IP=`ifconfig -a | grep inet | grep -v '127.0.0.1' | awk '{ print $2}' | awk 'NR==1'`
   memory_Size=`dmidecode -t memory | grep Size | grep -v No | awk '{sum+=$2} END {printf "%.0fG\n",sum/1^C4}'`
   CPU_Model=`cat /proc/cpuinfo | grep 'model name' | awk '{print $6}' | uniq`
   Disk_size=`fdisk -l | grep "sda:" | awk '{print $3$4}'`
   redhat_version=`cat /etc/redhat-release | grep "release" | awk '{print $6}'`
   redhat_core=`cat /proc/version | grep "version" | awk '{print $3}'`
   rabbitmq_server=`rabbitmqctl version`
   erl_version=`erl -eval '{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), io:fwrite(Version), halt().' -noshell`
   curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXX' \
   -H 'Content-Type: application/json' \
   -d '
    {
     "msgtype": "markdown",
      "markdown": {
         "content": " **system check** <font color=\"info\"> complete </font>  \n
         > **Host IP Address** \n
          [http://'$host_IP'](http://'$host_IP') \n
         > **Hardware information** \n
          hostSN:<font color=\"info\"> '$host_ID' </font> \n
          CPU_Model:<font color=\"info\"> '$CPU_Model' </font> \n
          memory_Size:<font color=\"info\"> '$memory_Size' </font> \n
          Disk_size:<font color=\"info\"> '$Disk_size' </font> \n
          System_version:<font color=\"info\"> '$redhat_version' </font> \n
          system_core:<font color=\"info\"> '$redhat_core' </font> \n
         > **rabbitmq install** \n
          rabbitmq_server:<font color=\"info\"> '$rabbitmq_server' </font> \n
          erl_version:<font color=\"info\"> '$erl_version' </font> \n",
      }
   }'
}
 
main (){
install_erlang
Deployment_completion_notification
}
 
main

插件开启管理,用户创建 

cat >>/rabbitmq_config.sh<<EOF
#!/bin/bash -e
# Author: CIASM 
# Date: 2023/04/12
rabbitmqctl start_app && \
rabbitmq-plugins enable rabbitmq_management && \
rabbitmqctl add_user admin Report@123 && \
rabbitmqctl set_user_tags admin administrator && \
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" && \
rabbitmq-plugins enable rabbitmq_mqtt && \
rabbitmq-plugins enable rabbitmq_web_mqtt
EOF

执行安装

sh /erlang_rabbitmq.sh

企业微信机器人通知 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/430864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

openai的whisper语音识别介绍

openAI发布了chatgpt&#xff0c;光环一时无两。但是openAI不止有这一个项目&#xff0c;它的其他项目也非常值得我们去研究学习。 今天说说这个whisper项目 https://github.com/openai/whisper ta是关于语音识别的。它提出了一种通过大规模的弱监督来实现的语音识别的方法。…

C++之深入解析STL unordered_map的底层实现原理

C STL 标准库中&#xff0c;不仅是 unordered_map 容器&#xff0c;所有无序容器的底层实现都采用的是哈希表存储结构。更准确地说&#xff0c;是用“链地址法”&#xff08;又称“开链法”&#xff09;解决数据存储位置发生冲突的哈希表&#xff0c;整个存储结构如下所示&…

JVM 垃圾收集器详解

一、垃圾收集器 如果说收集算法是内存回收的方法论&#xff0c;那垃圾收集器就是内存回收的实践者。《Java虚拟机规范》中对垃圾收集器应该如何实现并没有做出任何规定&#xff0c;因此不同的厂商、不同版本的虚拟机所包含的垃圾收集器都可能会有很大差别&#xff0c;不同的虚…

基于遗传算法的中药药对挖掘系统的设计与实现

用数据挖掘技术研究了中药方剂配伍的规律。主要工作&#xff1a;分析了关联规则存在的问题&#xff0c;引入双向关联规则的概念&#xff1b;介绍了遗传算法的基本原理&#xff0c;研究了遗传算法在数据挖掘中的应用&#xff1b;将方剂库转换为位图矩阵&#xff0c;大大提高搜索…

Mac重启清理缓存会怎么样 mac清理缓存怎么清理

众所周知&#xff0c;Mac电脑有着流畅的操作系统&#xff0c;因此&#xff0c;很多用户都会选择使用Mac电脑办公。随着日常使用&#xff0c;系统缓存数据越来越大&#xff0c;某些Mac电脑&#xff08;尤其是小内存版本的Mac电脑&#xff09;可能会出现“系统”占存储空间比例较…

初始单片机.md

1.如何将HEX文件烧录到单片机 STC-ISP STC-ISP是一款单片机下载编程烧录软件&#xff0c;是针对STC系列单片机而设计的&#xff0c;可下载STC89系列、12C2052系列和12C5410等系列的STC单片机&#xff0c;使用简便。 思路&#xff1a;将电脑磁盘上已存在的文件通过串口的方式下…

python中第三方库xlrd和xlwt的使用教程

excel文档名称为联系人.xls&#xff0c;内容如下&#xff1a; 一、xlrd模块用法 1.打开excel文件并获取所有sheet import xlrd# 打开Excel文件读取数据 data xlrd.open_workbook(联系人.xls)sheet_name data.sheet_names() # 获取所有sheet名称 print(sheet_name) # [银…

python依次运行多个代码遇到的同步与异步问题

1、要实现在一个Python代码运行完后紧接着运行另一个Python代码&#xff0c;可以使用Python的subprocess模块。该模块可以创建新进程并与之交互&#xff0c;可以用于在Python代码中启动新的程序或脚本。 下面是一个示例代码&#xff0c;用于在运行完code1.py后紧接着运行code2…

论文配色方案(收藏)

方案一&#xff1a;复古 系列色——十六进制颜色码&#xff1a; 0780cf - 765005 - fa6d1d - 0e2c82 - b6b51f - da1f18 - 701866 - f47a75 - 009db2 - 024b51 - 0780cf - 765005 系列色——RGB颜色值&#xff1a; &#xff08;7,128,207&#xff09;-&#xff08;118,80,5&…

【记录】优化油猴插件【BD网盘播放器】

收获最重要前言优化代码收获1.禁止浏览器弹窗2.定时器3.设置属性-隐藏元素4.鼠标悬停和移开事件5.添加元素6.div里均匀分布7.获取元素属性值8.监听播放器状态9.jQuery 选择器前言 有钱的可以支持一下原作者&#xff0c;没钱就要多学习 优化 1.1 视频刚开始未播放时&#xff…

酷雷曼一站式图片直播,助力品牌高效传播

传统模式下&#xff0c;摄影师拍摄会议、活动现场的照片后&#xff0c;一般需要7-10天时间才能完成成片交付&#xff0c;而实际上&#xff0c;由于新闻宣传的即时性&#xff0c;照片延迟交付&#xff0c;远远不能满足客户的需求。因此&#xff0c;即时图片直播技术应运而生&…

Jenkins自动化部署实例讲解

文章目录 前言实例讲解基本环境全局工具配置创建任务任务配置源码管理构建步骤&#xff08;Build Steps&#xff09;第一步&#xff1a;调用Maven第二步&#xff1a;执行shell启动容器 后记 前言 你平常在做自己的项目时&#xff0c;是否有过部署项目太麻烦的想法&#xff1f;…

哈希应用——位图(bitset)

目录 见见猪跑(初步了解位图) 位图的模拟实现 位图的应用 1、给定100亿个整数&#xff0c;设计算法找到只出现一次的整数 2、给两个文件&#xff0c;分别有100亿个整数&#xff0c;我们只有1G内存&#xff0c;如何找到两个文件交集&#xff1f; 3、位图应用变形&#xff…

第六章 Gated RNN

目录6.1 RNN的问题6.1.1 RNN的复习6.1.2 梯度消失和梯度爆炸6.1.3 梯度消失和梯度爆炸的原因6.1.4 梯度爆炸的对策6.2 梯度消失和LSTM6.2.1 LSTM的接口6.2.2 LSTM层的结构6.2.3 输出门6.2.4 遗忘门6.2.5 新的记忆单元6.2.6 输入门6.2.7 LSTM的梯度的流动6.3 LSTM的实现6.4 使用…

CIO成就计划第二季第一期 | 活动回顾:基于数字技术重塑流程,驱动业务增长

2023年3月25日&#xff0c;《科创人》联手金蝶共同打造的【CIO成就计划第二季】首期培训在北京金蝶软件园圆满举行。 【CIO成就计划】第二季&#xff0c;坚持服务于企业CIO、数字化变革负责人的价值定位&#xff0c;通过三期线下闭门培训会社群交流&#xff0c;帮助CIO建立应对…

JUC高级十-AbstractQueuedSynchronizer之AQS

1. 前置知识 公平锁和非公平锁可重入锁自旋锁LockSupport数据结构之双向链表设计模式之模板设计模式 AQS重要性 JAVA ------>JVM AQS ------>AQS 2. AQS入门级别理论知识 2.1 是什么? 2.1.1 字面意思 Abstract Queued Synchronizer----抽象的队列同步器 源码位置: …

【Java 并发编程】一文读懂线程、协程、守护线程

一文读懂线程、协程、守护线程1. 线程的调度1.1 协同式线程调度1.2 抢占式线程调度1.3 设置线程的优先级2. 线程的实现模型和协程2.1 内核线程实现2.2 用户线程实现2.3 混合实现2.4 Java 线程的实现2.5 协程2.5.1 出现的原因2.5.2 什么是协程2.5.3 Java19 虚拟线程 - 协程的复苏…

Cat原理简析

Cat原理简析 链路追踪系统设计思路如何高效组织业务日志如何动态串联业务日志通用解决方案链路定义链路染色链路上报链路存储 Cat原理客户端原理API设计序列化和通信客户端埋点核心类分析流程分析启动流程:消息生产Context 线程本地变量Transaction事务的开启其他类型消息组合关…

网页设计方向有哪些SCI期刊推荐? - 易智编译EaseEditing

网页设计和开发方向主要涉及人机交互、用户体验、可访问性等方面&#xff0c;以下是几个相关的SCI期刊推荐&#xff1a; ACM Transactions on Computer-Human Interaction (ACM TOCHI)&#xff1a; 该期刊由ACM&#xff08;Association for Computing Machinery&#xff09;出…

一次etcd变更引发的惨案

问题描述 在做etcd的数据变更时候&#xff0c;etcd在组成集群的时候出现leader不断切换问题&#xff0c;导致集群不稳定&#xff0c;都面将不健康的etcd节点踢出&#xff0c;只剩etcd单节点&#xff0c;后面将踢出的etcd节点重新加入现有etcd&#xff0c;导致etcd集群奔溃&…