> 文章列表 > Linux Shell 实现一键部署二进制Rabbitmq

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

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

 

rabbitmq 前言

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

rabbitmq 参考

rabbitmq erlang java wxWidgets
download download download download
备用download

Linux 各系统下载使用参考

Red Hat Rocky Linux  Oracle Linux

AlmaLinux 

ubuntu suselinux esxi RHEL标准安装 系统安装参考 YUM参考

MobaXterm 远程连接工具

Red Hat Enterprise 9.0 文档 Kickstart 生成器
download download download download download download download 参考 参考 配置参考 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.0install_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 $diskif [ $? -eq 0 ];then cd $disk/$erlang_FILE_DIR./configure --prefix=/opt/erlang --without-javacmake -j8 && make installecho 'export ERLANG_HOME=/opt/erlang'  >> /etc/profileecho 'export PATH=$PATH:$ERLANG_HOME/bin'  >> /etc/profileecho 'export ERLANG_HOME' >> /etc/profilesource /etc/profileln -s $disk/$erlang_new/bin/* /usr/local/sbin/install_rabbitmqaction "\\033[32mThe rabbitmq Install Sussess...\\033[0m" elseaction "\\033[33mThe rabbitmq Install Failed...\\033[0m" exit 1fielseecho -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/profilecat >>/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
EOFsystemctl daemon-reload
systemctl enable --now rabbitmq-server.servicesh /rabbitmq_config.shfirewall-cmd --zone=public --permanent --add-port={4369,25672,5671,5672,15672,61613,61614,1883,8883}/tcp
firewall-cmd --reloadrm -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 \\nhostSN:<font color=\\"info\\"> '$host_ID' </font> \\nCPU_Model:<font color=\\"info\\"> '$CPU_Model' </font> \\nmemory_Size:<font color=\\"info\\"> '$memory_Size' </font> \\nDisk_size:<font color=\\"info\\"> '$Disk_size' </font> \\nSystem_version:<font color=\\"info\\"> '$redhat_version' </font> \\nsystem_core:<font color=\\"info\\"> '$redhat_core' </font> \\n> rabbitmq install \\nrabbitmq_server:<font color=\\"info\\"> '$rabbitmq_server' </font> \\nerl_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

企业微信机器人通知