zoukankan      html  css  js  c++  java
  • CentOS6.5安装和配置RabbitMQ3.5.4

    CentOS6.5安装和配置RabbitMQ3.5.4

    准备工作

    1.RabbitMQ是由Erlang语言开发的,所以安装RabbitMQ之前需要安装Erlang

    2.在Erlang官网下载安装包otp_src_17.0.tar.gz 

    地址:http://www.erlang.org/download/otp_src_17.0.tar.gz

    3.在RabbitMQ官网下载安装包rabbitmq-server-generic-unix-3.5.4.tar.gz 

    地址:http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.4/rabbitmq-server-generic-unix-3.5.4.tar.gz

    4.而Erlang的安装有依赖其他模块 curses,ssl, orber(C++ compiler),Jdk等重要组件

       安装curses组件的命令:yum -y install ncurses-devel

     安装ssl组件的命令:yum install openssl-devel

     安装orber的命令:yun install gcc-c++

     Jdk的安装有多种方式,我的安装报是.rpm文件,所以使用命令: rpm -ivh xxx.rpm 即可不需要配置环境变量。

    5.安装Erlang

      解压otp_src_17.0.tar.gz 后进入解压后的目录

      再通过./configure命令完成配置检测

        ./configure

      然后通过make && make install 完成编译和安装

       make && make install

    6.测试Erlang是否安装成功

       在命令行输入erl命令判断

    [root@localhost rabbitmq_server-3.5.4]# erl
    Erlang/OTP 17 [erts-6.0] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]
    
    Eshell V6.0  (abort with ^G)
    1>
    

      如果显示Erlang的版本信息并进入erlang命令窗口表示安装成功。

    RabbitMQ的安装

      1.解压 rabbitmq-server-generic-unix-3.5.4.tar.gz 

         tar zxvf rabbitmq-server-generic-unix-3.5.4.tar.gz 

      解压完成就可以启动RabbitMQ了

      2.启动RabbitMQ  (以我的安装目录为例)

      cd /opt/rabbitmq/rabbitmq_server-3.5.4/sbin  进入rabbitmq的sbin目录

      ./rabbitmq-server                                          启动rabbitmq

      ./rabbitmqctl status                                       查看rabbitmq的运行状态信息

    RabbitMQ的配置

       先通过kill命令将rabbitmq进程杀死 

       rabbitmq的配置放在/opt/rabbitmq/rabbitmq_server-3.5.4/etc/rabbitmq目录下

       rabbitm的配置文件有三中

       一是rabbitmq服务器的属性配置 文件名称为:rabbitmq.config

       二是rabbitmq服务器环境变量配置 文件名称为:rabbitmq-env.conf

       三是rabbitmq服务器插件开启配置 文件名称为:enabled_plugins 

      具体的配置选项可以通过rabbitmq的官网了解 网址为:http://www.rabbitmq.com/configure.html

      以我的安装配置为例查看三个配置文件的内容

      rabbitmq.config

     1 [
     2     {
     3         rabbit, [{tcp_listeners,[5672]},
     4                  {heartbeat, 60},
     5                  {cluster_partition_handling, autoheal}]
     6     },
     7     {
     8         rabbitmq_management, [{listener, [{port, 15672}]}]
     9     },
    10     {
    11         kernel, [{inet_dist_listen_min, 40000},{inet_dist_listen_max, 45000}]
    12     }
    13 ].

     rabbitmq-env.conf

    NODENAME=rabbitmq@rmq01

     修改/etc/hosts文件 在文件末尾追加一行配置 如下   192.168.153.128是当前主机的IP地址

     192.168.153.128 rmp01

    enabled_plugins :启动rabbitmq的web管理插件

    [rabbitmq_management].

    注意 配置文件最后的  点.  确实是存在的

    RabbitMQ的自启动配置

    1.编写启动脚本 文件名为:rabbitmq

     内容如下:

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

      注意:配置文件中 字体变大标红的 是需要根据实际的安装目录配置的。

              第一行标红的是erlang的安装目录,需要是你的erlang安装的实际地址。

    2.配置自启动

      将rabbitmq脚本文件放到目录 /etc/rc.d/init.d目录下

      cd /etc/rc.d/init.d          进入该目录

      chmod 777 rabbitmq     修改脚本文件的权限

      chkconfig --add rabbitmq  添加服务器

      chkconfig --level 345 rabbitmq on  设置自启动

      chkconfig --list rabbitmq     查看自启动项是否设置成功

    3.启动rabbitmq服务

       service rabbitmq start 

      查看rabbitmq的状态

       service rabbitmq status 

      重启

       service rabbitmq restart 

    重启机器验证是否自启动

      重启后进入命令行   使用 ps aux | grep rabbitmq   或 service rabbitmq status  

      验证rabbitmq是否自启动成功。

    RabbitMQ的web管理配置


    1.RabbitMQ的Web管理界面的默认账户为guest/guest 但3.5.4版本的guest账户只能在服务器本机登录

    翻看官方的release文档后,得知由于账号guest具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest用户只能通过localhost登陆使用,并建议修改guest用户的

    密码以及新建其他账号管理使用rabbitmq(该功能是在3.3.0版本引入的)。 【该段文字摘自博客http://www.cnblogs.com/mingaixin/p/4134920.html】

    2.添加RabbitMQ账户

     在/opt/rabbitmq/rabbitmq_server-3.5.4/sbin目录下使用rabbitmqctl进行账户添加

    cd /opt/rabbitmq/rabbitmq_server-3.5.4/sbin 进入目录

    ./rabbitmqctl add_user dev dev     添加账户 dev dev  分别是用户名和密码

    ./rabbitmqctl set_user_tags dev administrator  设置dev为管理员账户

    ./rabbitmqctl set_permission -p / .* .* .*   设置对Vhost的配置,读和写的权限。

    此时启动rabbitmq 访问界面http://192.168.233.128:15672/ 会进入到登录界面,如果你的linux 系统开启了防火墙则需要设置端口开放

    iptables端口设置 

    查看iptable内容 

    iptable -L -n     查看内容

    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination 

    如果只有这些内容表示 没有开启防火墙则不再需要对RabbitMQ的端口进行配置

    如果包含其他内容,如下:

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination          
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:8080 
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:3306 
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80 
    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination

    则需要添加以下内容

    -I INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT  
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT

    5672端口是客户端通过tcp连接rabbitmq的

    15672是web管理界面的http协议接口。

    使用vi命令编辑iptables文件

    vi /etc/sysconfig/iptables

    将上面两行内容添加,添加后结果如下

    # Firewall configuration written by system-config-firewall
    # Manual customization of this file is not recommended.
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
    -I INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    COMMIT

    重启iptables

     service iptables restart 

    重启成功后就可以访问web管理界面了

    OK 完毕。

     

      

      

  • 相关阅读:
    意图识别及槽填充联合模型bert
    意图识别及槽填充联合模型的改进 cnn-self-attention
    意图识别及槽填充联合模型cnn-seq2seq
    cnn-residual用于意图识别
    centos 8 上配置asp.net core 5
    WPF自定义控件
    jdk 动态代理源码分析
    在windows上构建angular项目 (下)
    在windows上构建angular项目 (上)
    "名字好难想队“团队项目
  • 原文地址:https://www.cnblogs.com/jack2013/p/4797140.html
Copyright © 2011-2022 走看看