常用软件运维部署篇(五)--安装RabbitMq 3.7.8

常用软件运维部署篇(五)–3.4.安装RabbitMq 3.7.8

在这里插入图片描述
RabbitMq 3.7.8 相关软件下载地址:
https://pan.baidu.com/s/1jOgpgRMA_Lx6XwgbYp2yoA
提取码:JKGD

1.1. 安装RabbitMq 3.7.8

1.1.1. 上传相关安装包到Linux环境下

glibc-2.16.0.tar.gz

1.1.2. 安装erlang环境

首先安装erlang语言所需要的依赖
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel libtool libtool-ltdl-devel

yum install xmlto -y
yum install unixODBC unixODBC-devel wxBase wxGTK SDL wxGTK-gl

1.1.3. 安装glibc

原因是因为系统的glibc版本不符合安装要求,可以对glibc进行升级。
下载相应安装包:http://ftp.gnu.org/gnu/glibc/glibc-2.16.0.tar.gz。

解压: tar xvf glibc-2.16.tar.gz
进入glibc-2.1.6.0目录:cd glibc-2.16.0
创建build文件夹:mkdir build
进入build目录:cd build

执行:../configure --prefix=/opt/glibc-2.16.0
执行:make编译
执行:sudo make install

ln -s libtinfo.so libtinfo.so.6

1.1.4. GLIBC升级

查看已安装的 gblic 版本
strings /lib64/libc.so.6 | grep GLIBC

执行如下:
[root@VM_0_5_centos glibc-2.14]# strings /lib64/libc.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE

[root@VM_0_5_centos glibc-2.14]#
使用yum更新安装依赖
sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y

下载rpm包
sudo wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-utils-2.17-55.el6.x86_64.rpm &
sudo wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-static-2.17-55.el6.x86_64.rpm &
sudo wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-2.17-55.el6.x86_64.rpm &
sudo wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-common-2.17-55.el6.x86_64.rpm &
sudo wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-devel-2.17-55.el6.x86_64.rpm &
sudo wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-headers-2.17-55.el6.x86_64.rpm &
sudo wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/nscd-2.17-55.el6.x86_64.rpm &

安装rpm包
sudo rpm -Uvh *-2.17-55.el6.x86_64.rpm --force --nodeps

安装完毕后,再次查看版本
[root@VM_0_5_centos glibc-2.17]# strings /lib64/libc.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE

sudo rpm -ivh *.rpm --nodeps --force

1.1.5. 安装 zlib(root安装)

tar zxf zlib-1.2.7.tar.gz
cd zlib-1.2.7
./configure
sudo make && make install

ln -s  /usr/local/lib/libz.so.1.2.7.1 /lib64/libz.so.1

1.1.6. 安装相关软件包

rpm -ivh xz-libs-5.2.2-1.el7.x86_64.rpm
rpm -ivh lz4-1.8.3-1.el7.x86_64.rpm
rpm -ivh systemd-libs-219-78.el7.x86_64.rpm

rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm

1.1.7. 安装erlang

tar zxvf otp_src_22.0.tar.gz
mv otp_src_22.0 /usr/local/
cd /usr/local/otp_src_22.0/
./otp_build autoconf 
./configure --prefix=/home/lamp/soft/erlang --without-javac
make 
make install

配置Erlang环境变量:# vi /etc/profile
添加内容:
#ERLANG_HOME
export ERLANG_HOME=/home/lamp/soft/erlang
export ERLANG_PATH=$ERLANG_HOME/bin
export PATH=$PATH:${ERLANG_PATH}

验证  在任意目录下输入 erl 命令,出现如下图,则 erlang 安装成功
在这里插入图片描述

1.1.8. 安装rabbitmq-server

xz -d rabbitmq-server-generic-unix-3.7.8.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.7.8.tar

这种下载的方式解压后直接可以使用,无需再编译安装;
进入到rabbit文件内,其命令文件存在于sbin文件夹下,因此需要将sbin文件夹的路径添加到PATH中:修改/etc/profile [ vi /etc/profile ]

#RABBITMQ_HOME
export RABBITMQ_HOME=/home/lamp/soft/rabbitmq_server-3.7.8
export RABBITMQ_PATH=$RABBITMQ_HOME/sbin
export PATH=$PATH:${RABBITMQ_PATH}

source /etc/profile

1.1.9. 启动rabbitmq

随后启用MQ管理方式:
rabbitmq-plugins enable rabbitmq_management   #启动后台管理
启动服务:# ./rabbitmq-server start
查看网络状态:# ./rabbitmqctl status
关闭服务:# ./rabbitmqctl stop

在这里插入图片描述
在这里插入图片描述

5672 客户端连接端口
15672 web管控台端口
25672 集群通信端口

1.1.10. 添加用户和权限

默认网页guest用户是不允许访问的,需要增加一个用户修改一下权限,代码如下:

添加用户:
./rabbitmqctl add_user admin $2admin@87

添加权限:
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"


修改用户角色:
rabbitmqctl set_user_tags admin administrator
ERLANG_HOME=/home/lamp/soft/erlang
export  PATH=$PATH:$ERLANG_HOME/bin

在这里插入图片描述
在这里插入图片描述

1.1.11. 中途报错解决

在这里插入图片描述

要先启动rabbitmq-server,才能添加用户

1.1.12. 注册开机启动服务

1.1.12.1. 增加自启动脚本:

在/etc/init.d目录下新建一个rabbitmq-server文件,内容如下:

#!/bin/sh
#
# rabbitmq-server RabbitMQ broker
#
# chkconfig: - 80 05
# description: Enable AMQP service provided by RabbitMQ
#

### BEGIN INIT INFO
# Provides:          rabbitmq-server
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Description:       RabbitMQ broker
# Short-Description: Enable AMQP service provided by RabbitMQ broker
### END INIT INFO

# Source function library.
. /etc/init.d/functions

export HOME=/root
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/home/lamp/soft/erlang/bin
NAME=rabbitmq-server
DAEMON=/home/lamp/soft/rabbitmq_server-3.7.8/sbin/${NAME}
CONTROL=/home/lamp/soft/rabbitmq_server-3.7.8/sbin/rabbitmqctl
DESC=rabbitmq-server
USER=root
ROTATE_SUFFIX=
INIT_LOG_DIR=/home/lamp/soft/rabbitmq_server-3.7.8/var/log/rabbitmq
PID_FILE=/home/lamp/soft/rabbitmq_server-3.7.8/var/run/rabbitmq/pid

START_PROG="daemon"
LOCK_FILE=/var/lock/subsys/$NAME

test -x $DAEMON || exit 0
test -x $CONTROL || exit 0

RETVAL=0
set -e

[ -f /etc/default/${NAME} ] && . /etc/default/${NAME}

ensure_pid_dir () {
    PID_DIR=`dirname ${PID_FILE}`
    if [ ! -d ${PID_DIR} ] ; then
        mkdir -p ${PID_DIR}
        chown -R ${USER}:${USER} ${PID_DIR}
        chmod 755 ${PID_DIR}
    fi
}

remove_pid () {
    rm -f ${PID_FILE}
    rmdir `dirname ${PID_FILE}` || :
}

start_rabbitmq () {
    status_rabbitmq quiet
    if [ $RETVAL = 0 ] ; then
        echo RabbitMQ is currently running
    else
        RETVAL=0
        ensure_pid_dir
        set +e
        RABBITMQ_PID_FILE=$PID_FILE $START_PROG $DAEMON \
            > "${INIT_LOG_DIR}/startup_log" \
            2> "${INIT_LOG_DIR}/startup_err" \
            0<&- &
        $CONTROL wait $PID_FILE >/dev/null 2>&1
        RETVAL=$?
        set -e
        case "$RETVAL" in
            0)
                echo SUCCESS
                if [ -n "$LOCK_FILE" ] ; then
                    touch $LOCK_FILE
                fi
                ;;
            *)
                remove_pid
                echo FAILED - check ${INIT_LOG_DIR}/startup_\{log, _err\}
                RETVAL=1
                ;;
        esac
    fi
}

stop_rabbitmq () {
    status_rabbitmq quiet
    if [ $RETVAL = 0 ] ; then
        set +e
        $CONTROL stop ${PID_FILE} > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err
        RETVAL=$?
        set -e
        if [ $RETVAL = 0 ] ; then
            remove_pid
            if [ -n "$LOCK_FILE" ] ; then
                rm -f $LOCK_FILE
            fi
        else
            echo FAILED - check ${INIT_LOG_DIR}/shutdown_log, _err
        fi
    else
        echo RabbitMQ is not running
        RETVAL=0
    fi
}

status_rabbitmq() {
    set +e
    if [ "$1" != "quiet" ] ; then
        $CONTROL status 2>&1
    else
        $CONTROL status > /dev/null 2>&1
    fi
    if [ $? != 0 ] ; then
        RETVAL=3
    fi
    set -e
}

rotate_logs_rabbitmq() {
    set +e
    $CONTROL rotate_logs ${ROTATE_SUFFIX}
    if [ $? != 0 ] ; then
        RETVAL=1
    fi
    set -e
}

restart_running_rabbitmq () {
    status_rabbitmq quiet
    if [ $RETVAL = 0 ] ; then
        restart_rabbitmq
    else
        echo RabbitMQ is not runnning
        RETVAL=0
    fi
}

restart_rabbitmq() {
    stop_rabbitmq
    start_rabbitmq
}

case "$1" in
    start)
        echo -n "Starting $DESC: "
        start_rabbitmq
        echo "$NAME."
        ;;
    stop)
        echo -n "Stopping $DESC: "
        stop_rabbitmq
        echo "$NAME."
        ;;
    status)
        status_rabbitmq
        ;;
    rotate-logs)
        echo -n "Rotating log files for $DESC: "
        rotate_logs_rabbitmq
        ;;
    force-reload|reload|restart)
        echo -n "Restarting $DESC: "
        restart_rabbitmq
        echo "$NAME."
        ;;
    try-restart)
        echo -n "Restarting $DESC: "
        restart_running_rabbitmq
        echo "$NAME."
        ;;
    *)
        echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload}" >&2
        RETVAL=1
        ;;
esac

exit $RETVAL
1.1.12.2. 设置执行权限

命令:chmod a+x /etc/init.d/rabbitmq-server

1.1.12.3. 添加开机启动项
a、添加命令:chkconfig --add /etc/init.d/rabbitmq-server
b、查看启动项,命令:chkconfig --list
 rabbitmq-server启动项状态:rabbitmq-server           0:off   1:off   2:off   3:off   4:off   5:off   6:off
c、需要设置rabbitmq-server启动命令:chkconfig rabbitmq-server on
 rabbitmq-server启动项状态:rabbitmq-server           0:off   1:off   2:on    3:on    4:on    5:on    6:off
d、关闭命令为:chkconfig rabbitmq-server off
e、删除命令为:chkconfig --del rabbitmq-server

ln -s $(which erl) /usr/bin/erl && chkconfig rabbitmq-server on
1.1.12.4. 验证开机启动配置是否成功
systemctl start rabbitmq-server.service

#若启动失败,则使用status命令查看原因
systemctl status rabbitmq-server.service

#或者使用命令journalctl -xe
journalctl -xe|grep rabbit

1.1.13. 防火墙端口开放限制

若有远程调测的需求,则需要在阿里云平台的安全组中开放rabbitmq端口15672,并限制指定的IP才能访问,避免黑客攻击。

5672 客户端连接端口

15672 web管控台端口

25672 集群通信端口

在这里插入图片描述

1.1.14. 浏览器访问rabbitmq

浏览器访问http://8.152.124.38:15672/
在这里插入图片描述

1.1.15. 安全加固

1.1.15.1. 修改rabbitmq 自带的guest用户默认密码
./rabbitmqctl change_password guest '*4d#4e12lAE1$%863g3f5$~!'

1.1.16. 常用命令

#查看当前用户命令:
rabbitmqctl  list_users

#创建用户和密码
rabbitmqctl add_user admin beyond_2021

 
#将用户给于管理员权限
rabbitmqctl set_user_tags admin administrator

#查看用户权限
rabbitmqctl list_user_permissions admin

#设置用户权限(接受来自所有Host的所有操作)
rabbitmqctl  set_permissions -p "/" admin '.*' '.*' '.*'

修改用户密码
./rabbitmqctl change_password admin '*4de1lAE2$%3iuu'
./rabbitmqctl change_password guest '*4d#4elAE$%386g34f5$~!'

=====RabbitMQ插件
#列出插件
rabbitmq-plugins list


#启用WEB管理界面
rabbitmq-plugins enable rabbitmq_management


#启用mqtt插件
rabbitmq-plugins enable rabbitmq_mqtt

#启用mqtt的websocket插件
rabbitmq-plugins enable rabbitmq_web_mqtt

接下来将持续更新内容。欢迎大家关注公众号,点击 #软件运维部署 话题即可继续阅读 常用软件运维部署篇 相关内容。若需要文章中的源码或有疑问,可以在公众号中联系客服免费获取源码或沟通疑问或联系QQ:2833536029
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT小太阳2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值