二、RabbitMQ安装

RabbitMQ安装

RabbitMQ是由Erlang语言编写的,因此在使用RabbitMQ之前需要安装Erlang,本次安装Erlang_19.3版本

1、安装Erlang

  1. 下载Erlang19.3版本,官网下载为otp_src_19.3.tar.gz

    [hayson@localhost ~]$ ls
    otp_src_19.3.tar.gz
  2. 解压otp_src_19.3.tar.gz到当前目录

    [hayson@localhost ~]$ tar -xvf otp_src_19.3.tar.gz
  3. 进入解压目录,配置安装目录为/usr/local/erlang,如果不需要java编译器编译,可以添加--without-javac选项。

    [zeng@localhost ~]$ cd otp_src_19.3
    [zeng@localhost otp_src_19.3]$ sudo ./configure --prefix=/usr/local/erlang

    在这一步中如果出现类似

    No curses library functions found

    的错误,此时就需要安装ncurses(出现提示输入y后回车安装)

    [zeng@localhost otp_src_19.3]$ sudo yum install ncurses-devel

    上面安装完后,再执行第3步配置目录,如果还出现如下错误

    crypto         : No usable OpenSSL found
    odbc           : ODBC library - link check failed
    ssh            : No usable OpenSSL found
    ssl            : No usable OpenSSL found

    可以执行安装相应缺失的包

    1. 安装OpenSSL

      • 查询yum源中含有的ssl

        [hayson@localhost otp_src_19.3]$ yum list | grep ssl
        openssl-devel.i686                          1:1.0.2k-12.el7            base
        openssl-devel.x86_64                        1:1.0.2k-12.el7            base
      • 执行安装openssl-devel

        [hayson@localhost otp_src_19.3]$ sudo yum install openssl-devel
    2. 安装ODBC

      • 查询yum源中含有的ODBC

        [hayson@localhost otp_src_19.3]$ yum list | grep ODBC
        unixODBC-devel.i686                         2.3.1-11.el7               base
        unixODBC-devel.x86_64                       2.3.1-11.el7               base
      • 执行安装unixODBC-devel

        [hayson@localhost otp_src_19.3]$ sudo yum install unixODBC-devel

    安装完后,重新执行配置目录

    [hayson@localhost otp_src_19.3]$ sudo ./configure --prefix=/opt/erlang
  4. 安装Erlang

    执行如下命令编译安装

    [hayson@localhost otp_src_19.3]$ sudo make
    [hayson@localhost otp_src_19.3]$ sudo make install

    配置环境变量

    [hayson@localhost otp_src_19.3]$ sudo vim /etc/profile

    /etc/profile中写入如下内容

    # Erlang
    ERLANG_HOME=/usr/local/erlang
    export PATH=$PATH:${ERLANG_HOME}/bin
    export ERLANG_HOME

    启动Erlang shell

    [hayson@localhost otp_src_19.3]$ erl
    Erlang/OTP 19 [erts-8.3] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]
    Eshell V8.3  (abort with ^G)
    1> 

    启动成功,退出Erlang shell

    1> halt().

2、安装RabbitMQ

  1. 下载RabbitMQ3.6.14版本,官网下载为rabbitmq-server-generic-unix-3.6.14.tar.xz

    [hayson@localhost ~]$ ls
    rabbitmq-server-generic-unix-3.6.14.tar.xz
  2. 解压rabbitmq-server-generic-unix-3.6.14.tar.xz/opt目录

    [hayson@localhost ~]$ sudo tar -xvf rabbitmq-server-generic-unix-3.6.14.tar.xz -C /usr/local
  3. 修改解压的目录rabbitmq_server-3.6.14rabbitmq

    [hayson@localhost ~]$ cd /usr/local
    [hayson@localhost local]$ sudo mv rabbitmq_server-3.6.14 rabbitmq
  4. 修改rabbitmq目录及目录用户组和用户为hayson

    [hayson@localhost local]$ sudo chgrp -R hayson rabbitmq
    [hayson@localhost local]$ sudo chown -R hayson rabbitmq
  5. 配置环境变量

    [hayson@localhost local]$ sudo vim /etc/profile

    写入如下内容

    RABBITMQ_HOME=/usr/local/rabbitmq
    export PATH=$PATH:${RABBITMQ_HOME}/sbin
    export RABBITMQ_HOME
  6. 启动rabbitmq

    [hayson@localhost local]$ cd rabbitmq
    [hayson@localhost rabbitmq]$ rabbitmq-server
                  RabbitMQ 3.6.14. Copyright (C) 2007-2017 Pivotal Software, Inc.
      ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/
      ##  ##
      ##########  Logs: /opt/rabbitmq/var/log/rabbitmq/[email protected]
      ######  ##        /opt/rabbitmq/var/log/rabbitmq/[email protected]
      ##########
                  Starting broker...
     completed with 0 plugins.

    输出如上信息,RabbitMQ启动成功。

    上面是以当前Shell窗口运行并打印信息,一旦关闭终端后便停止运行,不推荐使用该命令运行。所以在rabbitmq-server命令后面添加一个参数-detached

    [hayson@localhost rabbitmq]$ rabbitmq-server -detached

    可以让RabbitMQ以守护进程方式在后台运行,不会因为当前Shell窗口的关闭而停止运行。

  7. 查看RabbitMQ启动状态

    • 通过rabbitmqctl status

      [hayson@localhost rabbitmq]$ rabbitmqctl status

      如果RabbitMQ正常启动,无输出红色错误信息。

    • 通过rabbitmqctl cluster_status

      [hayson@localhost rabbitmq]$ rabbitmqctl cluster_status
      Cluster status of node rabbit@localhost
      [{nodes,[{disc,[rabbit@localhost]}]},
       {running_nodes,[rabbit@localhost]},
       {cluster_name,<<"rabbit@localhost">>},
       {partitions,[]},
       {alarms,[{rabbit@localhost,[]}]}]

      以上通过查看集群信息来查看RabbitMQ是否启动成功。以上目前只有一个RabbitMQ服务节点,可以看作单节点的集群

    • 通过端口查看

      [hayson@localhost rabbitmq]$ lsof -i:5672
      COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
      beam    89238 hayson   51u  IPv6 197613      0t0  TCP *:amqp (LISTEN)

      RabbitMQ默认端口为5672,通过查看该端口可以查看到*:amqp(LISTEN)在监听状态

    • 通过ps命令

      [hayson@localhost rabbitmq]$ ps -ef | grep rabbitmq
       hayson   102312      1  0 11月13 ?      00:03:37 /usr/local/erlang/lib/erlang/erts-8.3/bin/beam -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/local/erlang/lib/erlang -progname erl -- -home /home/hayson -- -pa /usr/local/rabbitmq/ebin -noshell -noinput -s rabbit boot -sname rabbit@localhost -boot start_sasl -config /usr/local/rabbitmq/etc/rabbitmq/rabbitmq -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/usr/local/rabbitmq/var/log/rabbitmq/[email protected]"} -rabbit sasl_error_logger {file,"/usr/local/rabbitmq/var/log/rabbitmq/[email protected]"} -rabbit enabled_plugins_file "/usr/local/rabbitmq/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/local/rabbitmq/plugins" -rabbit plugins_expand_dir "/usr/local/rabbitmq/var/lib/rabbitmq/mnesia/rabbit@localhost-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/usr/local/rabbitm /var/lib/rabbitmq/mnesia/rabbit@localhost" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672 -noshell -noinput
      

      启动成功,输出rabbitmq相关信息,未启动无信息。

  8. 开启webui界面管理

    默认情况下,安装RabbitMQ并启动成功,并不会开启任何插件

    [hayson@localhost rabbitmq]$ rabbitmq-server
                  RabbitMQ 3.6.14. Copyright (C) 2007-2017 Pivotal Software, Inc.
      ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/
      ##  ##
      ##########  Logs: /opt/rabbitmq/var/log/rabbitmq/[email protected]
      ######  ##        /opt/rabbitmq/var/log/rabbitmq/[email protected]
      ##########
                  Starting broker...
     completed with 0 plugins.

    如果需要通过浏览器访问RabbitMQ管理界面,要开启rabbitmq_management插件

    1. 查看RabbitMQ所有插件

      [hayson@localhost ~]$ rabbitmq-plugins list -v
       Configured: E = explicitly enabled; e = implicitly enabled
       | Status:   * = running on rabbit@localhost
       |/
      [  ] rabbitmq_management
           Version:           3.6.14
           Dependencies:      [amqp_client,cowboy,cowlib,rabbitmq_web_dispatch,
                               rabbitmq_management_agent]
           Description:       RabbitMQ Management Console

      可以看到rabbitmq_management就是RabbitMQ的web管理插件,还需要同时开启其他的5个插件。

    2. 开启rabbitmq_management插件

      [hayson@localhost ~]$ rabbitmq-plugins enable rabbitmq_management
      The following plugins have been enabled:
        amqp_client
        cowlib
        cowboy
        rabbitmq_web_dispatch
        rabbitmq_management_agent
        rabbitmq_management
      Applying plugin configuration to rabbit@localhost... started 6 plugins.

      共开启了6个插件。查看插件列表,前面出现e*标记表示开启

      [hayson@localhost ~]$ rabbitmq-plugins list
       Configured: E = explicitly enabled; e = implicitly enabled
       | Status:   * = running on rabbit@localhost
       |/
      [e*] amqp_client                       3.6.14
      [e*] cowboy                            1.0.4
      [e*] cowlib                            1.0.2
      [  ] rabbitmq_consistent_hash_exchange 3.6.14
      [  ] rabbitmq_event_exchange           3.6.14
      [  ] rabbitmq_federation               3.6.14
      [E*] rabbitmq_management               3.6.14
      [e*] rabbitmq_management_agent         3.6.14
      [e*] rabbitmq_web_dispatch             3.6.14
    3. 重启rabbitmq,通过rabbitmqctl status可以看到http服务开启,占用端口15672,并且通过查看启动状态和端口15672看到监听状态。

      [hayson@localhost ~]$ rabbitmqctl shutdown
      [hayson@localhost ~]$ rabbitmq-server -detached
      [hayson@localhost ~]$ rabbitmqctl status | grep listeners
      {listeners,[{clustering,25672,"::"},{amqp,5672,"::"},{http,15672,"::"}]},
      
      [hayson@localhost sbin]$ lsof -i:15672
      COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
      beam    89238 hayson   52u  IPv4 197670      0t0  TCP *:15672 (LISTEN)
    4. 配置防火墙端口以便外网浏览器访问

      [hayson@localhost ~]$ sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
      success
      [hayson@localhost ~]$ sudo firewall-cmd --reload
      success
    5. 用户登录webui管理界面

      • 默认用户guest登录

        默认情况下,访问RabbitMQ服务的用户名和密码都是guest,这个账户有限制,默认只能通过本地网络(如localhost)访问,远程网络访问受限,可以通过配置文件rabbitmq.config进行配置外网访问

        [hayson@localhost ~]$ cd /usr/local/rabbitmq/etc/rabbitmq
        [hayson@localhost rabbitmq]$ vim rabbitmq.config 

        写入如下内容

        [
            {rabbit, [{loopback_users,[]}]}
        ].

        保存后,重启RabbitMQ,可以在外网浏览器通过默认用户guest登录。

      • 创建用户登录

        默认情况下,访问RabbitMQ服务的用户名和密码都是guest,这个账户有限制,默认只能通过本地网络(如localhost)访问,远程网络访问受限,通过配置可以设置外网访问,但不推荐。所以需要另外创建一个用户

        1. 创建用户

          [hayson@localhost rabbitmq]$ rabbitmqctl add_user admin admin
          Creating user "admin"
        2. 为用户设置权限

          设置用户admin访问名为“/(所有)”的虚拟主机,并对所有.*(正则)的资源具有配置权限,并对所有资源执行写入.*(正则)和读取.*(正则)权限资源:

          [hayson@localhost rabbitmq]$ rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
          Setting permissions for user "admin" in vhost "/"
        3. 设置用户为管理员角色

          [hayson@localhost rabbitmq]$ rabbitmqctl set_user_tags admin administrator
          Setting tags for user "admin" to [administrator]
        4. 查看RabbitMQ用户

          [hayson@localhost rabbitmq]$ rabbitmqctl list_users
          Listing users
          admin   [administrator]
          guest   [administrator]

          可以看到用户admin为管理员权限

    6. 外网浏览器打开并输入用户名和密码登录,进入管理页面

3、本节RabbitMQ相关命令

# 启动rabbitmq,在当前Shell窗口打开并打印信息,关闭窗口后停止运行,不推荐使用
rabbitmq-server
# 启动rabbitmq,以守护进程方式在后台运行,不会因为当前Shell窗口的关闭而停止运行。
rabbitmq-server -detached
# 关闭rabbitmq
rabbitmqctl shutdown
# 查看所有插件,后面加 -v 显示详细信息
rabbitmq-plugins list
# 开启插件,后面加插件名
rabbitmq-plugins enable pluginName
# 关闭插件
rabbitmq-plugins disable pluginName
# 查看rabbitmqctl所有命令
rabbitmqctl
# rabbitmq启动状态
rabbitmqctl status
# 创建rabbitmq用户名和密码
rabbitmqctl add_user username password
# 设置用户admin访问名为“/(所有)”的虚拟主机,并对所有.*(正则)的资源具有配置权限,并对所有资源执行写入.*(正则)和读取.*(正则)权限资源:
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
# 设置用户为管理员角色
rabbitmqctl set_user_tags admin administrator
# 查看rabbitmq所有用户
rabbitmqctl list_users

猜你喜欢

转载自www.cnblogs.com/zenghi-home/p/9959952.html