• 阿里云河南授权服务中心--[ 阿里云精英级合作伙伴 ]
  • 阿里云河南授权服务中心电话 :0371-56982772

阿里云服务器ECS搭建部署RabbitMQ教程
发布时间:2018-11-30 15:10


部署RabbitMQ



本页目录

  • 部署方式
  • 镜像部署
  • 手工部署

RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP 等,支持 AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

部署方式

在阿里云服务器下部署 RabbitMQ 提供两种部署方式:

一般推荐镜像部署适合新手使用更加快捷方便,安装包部署以及手动部署适合对 Linux 命令有基本了解的用户,可以满足用户个性化部署的要求。本教程主要介绍镜像和手工部署的方式。

镜像部署

  1. 单击 RabbitMQ 环境 ( CentOS7.3 Erlang19.3 ) 进入镜像详情页。
  2. 单击 立即购买,按提示步骤购买 ECS 实例。
  3. 登录 ECS 管理控制台
  4. 在左侧导航栏中,单击 实例,进入 ECS 实例列表页。
  5. 选择所购 ECS 实例所在的地域,并找到所购 ECS 实例,在 IP 地址 列获取该实例的公网 IP 地址。
  6. 在浏览器地址栏中输入公网 IP 地址,下载操作文档。



  1. 使用 putty 登录 Linux 服务器,请参考 连接Linux实例;忘记 root 密码,请参考 重置实例密码
  2. 初始化 rabbitmq。

cd/root/oneinstack./init_rabbitmq.sh



  1. 进入管理页面,浏览器访问 http://公网IP:15672



手工部署

  • 系统平台:CentOS 7.3
  • rabbitmq版本:rabbitmq-server -3.6.9
  • erlang版本:erlang19.3
  • JDK版本:JDK1.8.0_121

前提准备

  1. 创建一般用户 rabbitmq,运行 rabbitmq。

useradd rabbitmq

  1. 设置 Linux 主机名。

CentOS 7 修改 /etc/hostname,CentOS 6 修改 /etc/sysconfig/network,下面以 CentOS 7 为例。

echo rabbit1 > /etc/hostnamehostname rabbit1exit#退出重新登录



安装依赖包

yum-yinstallmakegccgcc-c++m4ncurses-developenssl-develunixODBC-devel



源代码下载

  • 下载 Erlang:wget http://erlang.org/download/otp_src_19.3.tar.gz
  • 下载 rabbitmq:wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/rabbitmq-server-generic-unix-3.6.9.tar.xz

安装 Erlang

tar xzf otp_src_19.3.tar.gz #解压cd otp_src_19.3./configure--prefix=/usr/local/erlang--enable-shared-zlib--with-ssl--enable-threads--enable-smp-support--enable-kernel-poll--enable-hipe--without-javacmake && make install

解压 RabbitMQ

  1. 解压 rabbitmq-server-generic-unix-3.6.9.tar.xz 。

tar xvJf rabbitmq-server-generic-unix-3.6.9.tar.xzmv rabbitmq_server-3.6.9 /usr/local/rabbitmq

  1. rabbitmq 环境变量配置。

sed -i 's@^ERL_DIR=.*@ERL_DIR=/usr/local/erlang/bin/@' /usr/local/rabbitmq/sbin/rabbitmq-defaultssed -i 's@^LOG_BASE=.*@LOG_BASE=/usr/local/rabbitmq/var/log/rabbitmq@' /usr/local/rabbitmq/sbin/rabbitmq-defaultsmkdir -p /usr/local/rabbitmq/var/{liblog}/rabbitmq

  1. 一般用户(rabbitmq)运行 RabbitMQ。

wget http://pkgs.fedoraproject.org/cgit/rpms/rabbitmq-server.git/plain/rabbitmq-script-wrappersed -i 's@cd /var/lib/rabbitmq@cd /usr/local/rabbitmq/var/lib/rabbitmq@g' rabbitmq-script-wrapper #更改rabbitmq数据存储目录sed -i 's@/usr/lib/rabbitmq/bin/@/usr/local/rabbitmq/sbin/@g' rabbitmq-script-wrapperchmod +x rabbitmq-script-wrappercp rabbitmq-script-wrapper /usr/sbin/rabbitmqctlcp rabbitmq-script-wrapper /usr/sbin/rabbitmq-servercp rabbitmq-script-wrapper /usr/sbin/rabbitmq-pluginschown -R rabbitmq.rabbitmq /usr/local/rabbitmq/var

  1. rabbitmq 日志割接。

cat >> /etc/logrotate.d/rabbitmq-server << EOF/usr/local/rabbitmq/var/log/rabbitmq/*.log {weeklymissingokrotate 20compressdelaycompressnotifemptysharedscriptspostrotate /sbin/service rabbitmq-server rotate-logs > /dev/nullendscript}EOF

  1. rabbitmq 启动脚本。

vi /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/functionsPATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/erlang/binNAME=rabbitmq-serverDAEMON=/usr/sbin/${NAME}CONTROL=/usr/sbin/rabbitmqctlDESC=rabbitmq-serverUSER=rabbitmqROTATE_SUFFIX=INIT_LOG_DIR=/usr/local/rabbitmq/var/log/rabbitmqPID_FILE=/var/run/rabbitmq/pidSTART_PROG="daemon"LOCK_FILE=/var/lock/subsys/$NAMEtest -x $DAEMON || exit 0test -x $CONTROL || exit 0RETVAL=0set -e[ -f /etc/default/${NAME} ] && . /etc/default/${NAME}[ -f /etc/sysconfig/${NAME} ] && . /etc/sysconfig/${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 ] ; thenecho RabbitMQ is currently running else RETVAL=0 # RABBIT_NOFILES_LIMIT from /etc/sysconfig/rabbitmq-server is not handled# automaticallyif [ "$RABBITMQ_NOFILES_LIMIT" ]; thenulimit -n $RABBITMQ_NOFILES_LIMITfi 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<&- & $CONTROLwait$PID_FILE >/dev/null 2>&1 RETVAL=$? set -e case"$RETVAL"in 0) echo SUCCESS if [ -n "$LOCK_FILE" ] ; then touch $LOCK_FILEfi ;; *) remove_pid echo FAILED - check ${INIT_LOG_DIR}/startup_\{log, _err\} RETVAL=1 ;; esacfi}stop_rabbitmq () { status_rabbitmq quiet if [ $RETVAL = 0 ] ; thenset +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_FILEfielseecho FAILED - check ${INIT_LOG_DIR}/shutdown_log, _err fielseecho 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 fiif [ $? != 0 ] ; then RETVAL=3 fiset -e}rotate_logs_rabbitmq() { set +e $CONTROL rotate_logs ${ROTATE_SUFFIX}if [ $? != 0 ] ; then RETVAL=1 fiset -e}restart_running_rabbitmq () { status_rabbitmq quiet if [ $RETVAL = 0 ] ; then restart_rabbitmq elseecho 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 ;;esacexit$RETVAL15435605.61575

保存后,添加执行权限,并设置自启动。

chmod +x /etc/init.d/rabbitmq-serverchkconfig --add rabbitmq-serverchkconfig rabbitmq-serveron

  1. 修改 rabbitmq.config。

特别注意默认用户名密码,请自行修改 default_user,default_pass,loopback_users。

cat > /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.config << EOF[{rabbit, [ {tcp_listeners,[{"0.0.0.0"5672}]}, {tcp_listen_options, [binary, {packet,raw}, {reuseaddr,true}, {backlog,128}, {nodelay,true}, {exit_on_close,false}, {keepalive,true}]}, {default_vhost, <<"/">>}, {default_user, <<"guest">>}, {default_pass, <<"guest">>}, {loopback_users, ["guest"]}, {default_permissions, [<<".*">>, <<".*">>, <<".*">>]}]}].EOF

  1. 开启 rabbitmq manager。

cat > /usr/local/rabbitmq/etc/rabbitmq/enabled_plugins << EOF[rabbitmq_management].EOF

  1. 启动 rabbitmq。

service rabbitmq-serverstart



  1. 进入管理页面。

浏览器访问 http://公网IP:15672。




售前咨询:

0371-56982772