全部产品
云服务器 ECS

部署RabbitMQ

更新时间:2017-06-07 13:26:11   分享:   

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

  7. 使用 putty 登录 Linux 服务器,请参考连接Linux实例;忘记 root 密码,请参考重置实例密码

  8. 初始化 rabbitmq。

    1. cd /root/oneinstack
    2. ./init_rabbitmq.sh

    2

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

    3

手工部署

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

前提准备

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

  1. useradd rabbitmq

设置 Linux 主机名。

centos 7 修改 /etc/hostname,centos6 修改 /etc/sysconfig/network,下面以 centos 7 为例:

  1. echo rabbit1 > /etc/hostname
  2. hostname rabbit1
  3. exit #退出重新登录

4

安装依赖包

  1. yum -y install make gcc gcc-c++ m4 ncurses-devel openssl-devel unixODBC-devel

6

源代码下载

安装 Erlang

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

解压 RabbitMQ

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

    1. tar xvJf rabbitmq-server-generic-unix-3.6.9.tar.xz
    2. mv rabbitmq_server-3.6.9 /usr/local/rabbitmq
  2. rabbitmq 环境变量配置。

    1. sed -i 's@^ERL_DIR=.*@ERL_DIR=/usr/local/erlang/bin/@' /usr/local/rabbitmq/sbin/rabbitmq-defaults
    2. sed -i 's@^LOG_BASE=.*@LOG_BASE=/usr/local/rabbitmq/var/log/rabbitmq@' /usr/local/rabbitmq/sbin/rabbitmq-defaults
    3. mkdir -p /usr/local/rabbitmq/var/{liblog}/rabbitmq
  3. 一般用户(rabbitmq)运行 RabbitMQ。

    1. wget http://pkgs.fedoraproject.org/cgit/rpms/rabbitmq-server.git/plain/rabbitmq-script-wrapper
    2. sed -i 's@cd /var/lib/rabbitmq@cd /usr/local/rabbitmq/var/lib/rabbitmq@g' rabbitmq-script-wrapper #更改rabbitmq数据存储目录
    3. sed -i 's@/usr/lib/rabbitmq/bin/@/usr/local/rabbitmq/sbin/@g' rabbitmq-script-wrapper
    4. chmod +x rabbitmq-script-wrapper
    5. cp rabbitmq-script-wrapper /usr/sbin/rabbitmqctl
    6. cp rabbitmq-script-wrapper /usr/sbin/rabbitmq-server
    7. cp rabbitmq-script-wrapper /usr/sbin/rabbitmq-plugins
    8. chown -R rabbitmq.rabbitmq /usr/local/rabbitmq/var
  4. rabbitmq 日志割接。

    1. cat >> /etc/logrotate.d/rabbitmq-server << EOF
    2. /usr/local/rabbitmq/var/log/rabbitmq/*.log {
    3. weekly
    4. missingok
    5. rotate 20
    6. compress
    7. delaycompress
    8. notifempty
    9. sharedscripts
    10. postrotate
    11. /sbin/service rabbitmq-server rotate-logs > /dev/null
    12. endscript
    13. }
    14. EOF
  5. rabbitmq 启动脚本。

    1. vi /etc/init.d/rabbitmq-server
    2. #!/bin/sh
    3. #
    4. # rabbitmq-server RabbitMQ broker
    5. #
    6. # chkconfig: - 80 05
    7. # description: Enable AMQP service provided by RabbitMQ
    8. #
    9. ### BEGIN INIT INFO
    10. # Provides: rabbitmq-server
    11. # Required-Start: $remote_fs $network
    12. # Required-Stop: $remote_fs $network
    13. # Description: RabbitMQ broker
    14. # Short-Description: Enable AMQP service provided by RabbitMQ broker
    15. ### END INIT INFO
    16. # Source function library.
    17. . /etc/init.d/functions
    18. PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/erlang/bin
    19. NAME=rabbitmq-server
    20. DAEMON=/usr/sbin/${NAME}
    21. CONTROL=/usr/sbin/rabbitmqctl
    22. DESC=rabbitmq-server
    23. USER=rabbitmq
    24. ROTATE_SUFFIX=
    25. INIT_LOG_DIR=/usr/local/rabbitmq/var/log/rabbitmq
    26. PID_FILE=/var/run/rabbitmq/pid
    27. START_PROG="daemon"
    28. LOCK_FILE=/var/lock/subsys/$NAME
    29. test -x $DAEMON || exit 0
    30. test -x $CONTROL || exit 0
    31. RETVAL=0
    32. set -e
    33. [ -f /etc/default/${NAME} ] && . /etc/default/${NAME}
    34. [ -f /etc/sysconfig/${NAME} ] && . /etc/sysconfig/${NAME}
    35. ensure_pid_dir () {
    36. PID_DIR=`dirname ${PID_FILE}`
    37. if [ ! -d ${PID_DIR} ] ; then
    38. mkdir -p ${PID_DIR}
    39. chown -R ${USER}:${USER} ${PID_DIR}
    40. chmod 755 ${PID_DIR}
    41. fi
    42. }
    43. remove_pid () {
    44. rm -f ${PID_FILE}
    45. rmdir `dirname ${PID_FILE}` || :
    46. }
    47. start_rabbitmq () {
    48. status_rabbitmq quiet
    49. if [ $RETVAL = 0 ] ; then
    50. echo RabbitMQ is currently running
    51. else
    52. RETVAL=0
    53. # RABBIT_NOFILES_LIMIT from /etc/sysconfig/rabbitmq-server is not handled
    54. # automatically
    55. if [ "$RABBITMQ_NOFILES_LIMIT" ]; then
    56. ulimit -n $RABBITMQ_NOFILES_LIMIT
    57. fi
    58. ensure_pid_dir
    59. set +e
    60. RABBITMQ_PID_FILE=$PID_FILE $START_PROG $DAEMON \
    61. > "${INIT_LOG_DIR}/startup_log" \
    62. 2> "${INIT_LOG_DIR}/startup_err" \
    63. 0<&- &
    64. $CONTROL wait $PID_FILE >/dev/null 2>&1
    65. RETVAL=$?
    66. set -e
    67. case "$RETVAL" in
    68. 0)
    69. echo SUCCESS
    70. if [ -n "$LOCK_FILE" ] ; then
    71. touch $LOCK_FILE
    72. fi
    73. ;;
    74. *)
    75. remove_pid
    76. echo FAILED - check ${INIT_LOG_DIR}/startup_\{log _err\}
    77. RETVAL=1
    78. ;;
    79. esac
    80. fi
    81. }
    82. stop_rabbitmq () {
    83. status_rabbitmq quiet
    84. if [ $RETVAL = 0 ] ; then
    85. set +e
    86. $CONTROL stop ${PID_FILE} > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err
    87. RETVAL=$?
    88. set -e
    89. if [ $RETVAL = 0 ] ; then
    90. remove_pid
    91. if [ -n "$LOCK_FILE" ] ; then
    92. rm -f $LOCK_FILE
    93. fi
    94. else
    95. echo FAILED - check ${INIT_LOG_DIR}/shutdown_log _err
    96. fi
    97. else
    98. echo RabbitMQ is not running
    99. RETVAL=0
    100. fi
    101. }
    102. status_rabbitmq() {
    103. set +e
    104. if [ "$1" != "quiet" ] ; then
    105. $CONTROL status 2>&1
    106. else
    107. $CONTROL status > /dev/null 2>&1
    108. fi
    109. if [ $? != 0 ] ; then
    110. RETVAL=3
    111. fi
    112. set -e
    113. }
    114. rotate_logs_rabbitmq() {
    115. set +e
    116. $CONTROL rotate_logs ${ROTATE_SUFFIX}
    117. if [ $? != 0 ] ; then
    118. RETVAL=1
    119. fi
    120. set -e
    121. }
    122. restart_running_rabbitmq () {
    123. status_rabbitmq quiet
    124. if [ $RETVAL = 0 ] ; then
    125. restart_rabbitmq
    126. else
    127. echo RabbitMQ is not runnning
    128. RETVAL=0
    129. fi
    130. }
    131. restart_rabbitmq() {
    132. stop_rabbitmq
    133. start_rabbitmq
    134. }
    135. case "$1" in
    136. start)
    137. echo -n "Starting $DESC: "
    138. start_rabbitmq
    139. echo "$NAME."
    140. ;;
    141. stop)
    142. echo -n "Stopping $DESC: "
    143. stop_rabbitmq
    144. echo "$NAME."
    145. ;;
    146. status)
    147. status_rabbitmq
    148. ;;
    149. rotate-logs)
    150. echo -n "Rotating log files for $DESC: "
    151. rotate_logs_rabbitmq
    152. ;;
    153. force-reload|reload|restart)
    154. echo -n "Restarting $DESC: "
    155. restart_rabbitmq
    156. echo "$NAME."
    157. ;;
    158. try-restart)
    159. echo -n "Restarting $DESC: "
    160. restart_running_rabbitmq
    161. echo "$NAME."
    162. ;;
    163. *)
    164. echo "Usage: $0 {start|stop|status|rotate-logs|restart|condrestart|try-restart|reload|force-reload}" >&2
    165. RETVAL=1
    166. ;;
    167. esac
    168. exit $RETVAL

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

    1. chmod +x /etc/init.d/rabbitmq-server
    2. chkconfig --add rabbitmq-server
    3. chkconfig rabbitmq-server on
  6. 修改 rabbitmq.config 。

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

    1. cat > /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.config << EOF
    2. [
    3. {rabbit [
    4. {tcp_listeners,[{"0.0.0.0"5672}]},
    5. {tcp_listen_options [binary {packetraw},
    6. {reuseaddrtrue},
    7. {backlog128},
    8. {nodelaytrue},
    9. {exit_on_closefalse},
    10. {keepalivetrue}]},
    11. {default_vhost <<"/">>},
    12. {default_user <<"guest">>},
    13. {default_pass <<"guest">>},
    14. {loopback_users ["guest"]},
    15. {default_permissions [<<".*">>, <<".*">>, <<".*">>]}
    16. ]}
    17. ].
    18. EOF
  7. 开启 rabbitmq manager。

    1. cat > /usr/local/rabbitmq/etc/rabbitmq/enabled_plugins << EOF
    2. [rabbitmq_management].
    3. EOF
  8. 启动 rabbitmq 。

    1. service rabbitmq-server start

    5

  9. 进入管理页面。

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

    7

    更多开源软件尽在云市场:https://market.aliyun.com/software

本文导读目录
本文导读目录
以上内容是否对您有帮助?