常用软件运维部署篇(五)–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 。