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

 

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

企业微信机器人通知 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MPC的560x系列的运行模式的介绍

一、模式简介 1、运行模式 一共11种模式&#xff0c;分别为RESET、DRUN、SAFE、TEST、RUN0、RUN1、RUN2、RUN3、HALT、STOP、STANDBY。其中RESET、DRUN、SAFE、TEST是系统工作模式&#xff0c;用户不用个特别关系&#xff0c;而后面几种是用于经常使用到的工作模式。 RESET&a…

Linux搭建docker

1. 查看系统的内核版本 [rootwide ~]# uname -r 3.10.0-1160.el7.x86_642. 将yum更新到最新版本 [rootwide ~]# yum upate -y Complete!3. 安装Docker所需的依赖包 [rootwide ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2 Loaded plugins: fastes…

MyBatis多表查询+动态sql

文章目录MyBatis多表查询1. 多表一对一查询2. 多表一对多动态SQL1.\<if\>标签2.\<trim\>标签3. \<where\>标签4.\<set\>标签5. \<foreach\>标签MyBatis多表查询 在全局配置文件中中设置MyBatis执行日志 mybatis:configuration:log-impl: org.a…

hadoop使用MapReduce统计单词出现次数案例

前言 前面的文章已经展示了如何在windows上传文件到hdfs&#xff0c;上传后如何简单的做统计&#xff0c;本文展示一下。上传文件到HDFS链接 这里我们做一个案例&#xff0c;对一个上传到HDFS的文档中统计good出现的次数。 文件内容如下 这里我使用的是【上传文件到HDFS链接…

南方猛将加盟西方手机完全是臆测,他不会希望落得兔死狗烹的结局

早前南方某科技企业因为命名的问题闹得沸沸扬扬&#xff0c;于是一些业界人士就猜测该猛将会加盟西方手机&#xff0c;对于这种猜测可以嗤之以鼻&#xff0c;从西方手机以往的作风就可以看出来它向来缺乏容纳猛将的气量。一、没有猛将的西方手机迅速沉沦曾几何时&#xff0c;西…

linux服务器禁止ping命令,linux服务器禁ping如何解除

linux服务器禁止ping命令&#xff0c;linux服务器禁ping如何解除 我是艾西&#xff0c;在我们搭建网站或做某些程序时&#xff0c;不少人会问禁ping是什么意思&#xff0c;怎么操作的对于业务有哪些好处等&#xff0c;今天艾西一次给你们说清楚。 禁PING的意思是&#xff1a;不…

《花雕学AI》12:从ChatGPT的出现看人类与人工智能的互补关系与未来发展

马云说道&#xff0c;ChatGPT这一类技术已经对教育带来挑战&#xff0c;但是ChatGPT这一类技术只是AI时代的开始。 谷歌CEO桑德尔皮猜曾说&#xff1a;“人工智能是我们人类正在从事的最为深刻的研究方向之一&#xff0c;甚至要比火与电还更加深刻。” 360周鸿祎认为&#xf…

Java Web 实战 15 - 计算机网络之网络编程套接字

文章目录一 . 网络编程中的基本概念1.1 网络编程1.2 客户端(client) / 服务器(server)1.3 请求(request) / 响应(response)1.4 客户端和服务器之间的交互数据1.4.1 一问一答1.4.2 多问一答1.4.3 一问多答1.4.4 多问多答二 . socket 套接字2.1 UDP 的 Socket API2.1.1 引子2.1.2…

Ubuntu20.04 个人配置和i3美化

Ubuntu20.04 个人配置和i3美化 本文是基于个人习惯和审美&#xff0c;快速配置一个新ubuntu的步骤。脚本在资源里给出&#xff0c;但仍有部分配置文件需在脚本执行后手动修改,文中已用红色字体标出 更新apt源 备份原来的源更换阿里源 # 备份 sudo mv /etc/apt/sources.list…

基于Pytorch的可视化工具

深度学习网络通常具有很深的层次结构&#xff0c;而且层与层之间通常会有并联、串联等连接方式。当使用PyTorch建立一个深度学习网络并输出文本向读者展示网络的连接方式是非常低效的&#xff0c;所以需要有效的工具将建立的深度学习网络结构有层次化的展示&#xff0c;这就需要…

RK3399平台开发系列讲解(基础篇)Linux 传统间隔定时器

🚀返回专栏总目录 文章目录 一、设置间隔定时器 setitimer()二、查询定时器状态 getitimer()三、更简单的定时接口 alarm()四、传统定时器的应用4.1、为阻塞操作设置超时4.2、性能剖析五、传统定时器的局限性沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将详细…

【Vue】el与data的两种写法

data与el的2种写法 el有两种写法 new Vue时配置el属性。先创建Vue实例。随后再通过vm.$mount(‘root’)指定el的值。 data有2种写法 对象式: data:{}函数式: data(){ return {}} 如何选择&#xff1a;目前哪种写法都可以&#xff0c;以后学习到组件时&#xff0c;data必须使…

ERP软件的作用

ERP软件的运用是在企业管理系统的数据基础上实现的&#xff0c;它的应用涉及到企业的各个部门。ERP软件是在制造资源计划的基础上进一步发展而成的对企业供应链的管理软件。ERP是集采购、销售和库存、财务、生产管理和委托加工为一体的企业管理软件。它是集企业管理理念、业务流…

快速排序详解

一、定义 快速排序&#xff08;英语&#xff1a;Quicksort&#xff09;&#xff0c;又称分区交换排序&#xff08;英语&#xff1a;partition-exchange sort&#xff09;&#xff0c;简称「快排」&#xff0c;是一种被广泛运用的排序算法。 二、基本原理 快速排序是一个基于 分…

PostgreSQL下载、安装、Problem running post-install step的解决、连接PostgreSQL

我是参考《SQL基础教程》来安装的&#xff0c;关于书的介绍、配套视频、相关代码可以参照下面的链接&#xff1a; SQL基础教程&#xff08;第2版&#xff09; (ituring.com.cn) 一、下载 我直接打开书中的下载链接时&#xff0c;显示的是这个界面&#xff1a; You are not …

二维(三维)坐标系中旋转矩阵

求三维坐标系的旋转矩阵通常需要求分别沿3个坐标轴的二维坐标系下的旋转矩阵&#xff0c;二维坐标系下的旋转矩阵的推导过程通常以某一点逆时针旋转θ\thetaθ角度进行推理。以下将通过此例来详细讲解二维坐标系下的旋转矩阵推导过程&#xff0c;并进一步给出其他方式的旋转矩阵…

Surfshark下载到使用完整教程|2023最新

2023年3月16日更新 在正式介绍surfshark的教程( 教程直达学习地址: qptool.net/shark.html )之前&#xff0c;我们可以来看看最近surfshark的服务与产品退化到什么程度了。我曾经是Surshark两年的忠实用户&#xff0c;但是&#xff0c;现在&#xff0c;作为一个负责人的测评&a…

文件操作File类,OutputStream、InputStream、Reader、Writer的用法

文章目录File 类OutputStream、InputStreamInputStreamOutputStreamReader、WriterReaderWriter注意事项简单模拟实战File 类 Java标准库中提供的File类是对硬盘上的文件的抽象&#xff0c;每一个File对象代表了一个文件&#xff0c;因为文件在硬盘上存储&#xff0c;而直接操…

网络编程三要素

网络编程三要素 IP、端口号、协议 三要素分别代表什么 ip&#xff1a;设备在网络中的地址&#xff0c;是唯一的标识 端口号&#xff1a;应用程序在设备中的唯一标识 协议&#xff1a;数据在网络中传输的规则 常见的协议有UDP、TCP、http、https、ftp ip&#xff1a;IPv4和…

Java通过继承的方法来实现长方形的面积和体积

目录 前言 一、测试.java类 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 二、Changfangxing.java类 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 三、Jxing.java类 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 前言 1.若有选择…