• rabbitmq安装


    下载rabbitmq软件包

    rabbitmq官网地址:http://www.rabbitmq.com/

    本次安装3.8.1版本的,版本仓库地址:https://github.com/rabbitmq/rabbitmq-server/releases

    安装包下载地址:https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.1/rabbitmq-server-generic-unix-3.8.1.tar.xz,

    GitHub的软件版本页面会提示需要Erlang的版本,点击链接下载即可

    另外,官网也给出了不同版本rabbitmq需要的Erlang版本,https://www.rabbitmq.com/which-erlang.html ,Erlang的下载地址:https://www.erlang.org/downloads/21.3

    安装依赖

    # yum -y install perl perl-devel ncurses-devel libtool libtool-ltdl-devel gcc-c++ erlang-doc erlang-jinterface unixODBC-devel mesa-libGLU-devel unixODBC-bin gtk2 fop libxml2-utils libxml2 libxslt

     

    安装openssl

    备份旧版本openssl

    # which openssl
    /usr/bin/openssl
    # mv  /usr/bin/openssl{,.old}
    # mv /etc/ssl{,.bak} #删除配置文件

    安装新版本openssl

    # wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz --no-check-certificate
    # tar -xzf openssl-1.1.1c.tar.gz -C ../softwares/
    
    # cd ../softwares/openssl-1.1.1c/
    
    # ./Configure shared --openssldir=/usr/local/openssl --prefix=/usr/local/openssl

    报错

    NOTE: If in doubt, on Unix-ish systems use './config'.

    需要使用config安装

    # ./config shared --openssldir=/usr/local/openssl --prefix=/usr/local/openssl
    
    # make && make install

    修改动态库配置

    # vim /etc/ld.so.conf
    
    include ld.so.conf.d/*.conf
    /usr/local/openssl/lib

    配置生效
    # ldconfig -v

    设置openssl命令的软链接,并验证

    # ln -s /usr/local/openssl/bin/openssl  /usr/local/bin/openssl
    
    [root@localhost openssl-1.1.1c]# openssl version -a
    OpenSSL 1.1.1c  28 May 2019
    built on: Fri May 28 05:38:57 2021 UTC
    platform: linux-x86_64
    options:  bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr) 
    compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG
    OPENSSLDIR: "/usr/local/openssl"
    ENGINESDIR: "/usr/local/openssl/lib/engines-1.1"
    Seeding source: os-specific

    安装jdk

    # tar xfz  jdk-8u191-linux-x64.tar.gz -C ../softwares/
    
    # cd ../softwares/
    
    # ln -sv jdk1.8.0_191 jdk
    
    # sed -i.ori '$a export JAVA_HOME=/opt/softwares/jdk
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
    
    # . /etc/profile
    
    [root@localhost softwares]# java -version
    java version "1.8.0_191"
    Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

    安装wxWidgets-3.0.3

    # wget https://github.com/wxWidgets/wxWidgets/releases/download/v3.0.5/wxWidgets-3.0.5.tar.bz2
    
    # tar -xjf wxWidgets-3.0.5.tar.bz2  -C ../softwares/

    安装

    # cd ../softwares/wxWidgets-3.0.5/
    
    # ./configure --with-opengl -enable-unicode -enable-debug
    
    # make && make install

    安装Erlang

    [root@localhost packages]# ll
    total 84844
    -rw-r--r-- 1 root root 85547038 May 27 22:16 otp_src_21.3.tar.gz
    -rw-r--r-- 1 root root  1327914 May 27 22:13 rabbitmq-server-generic-unix-3.8.1.tar.xz
    
    # tar xfz otp_src_21.3.tar.gz -C ../softwares/
    
    # cd ../softwares/otp_src_21.3/
    
    # ./configure --prefix=/opt/softwares/erlang --enable-shared-zlib --with-ssl=/usr/local/openssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --with-javac
    
    # make && make install

    配置环境变量

    # sed -ri -e '/JAVA_HOME=/a ERLANG_HOME=/opt/softwares/erlang' -e 's#(export PATH=.*)#1:$ERLANG_HOME/bin#' /etc/profile
    
    # . /etc/profile

    验证erlang

    [root@localhost otp_src_21.3]# erl
    Erlang/OTP 21 [erts-10.3] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]
    
    Eshell V10.3  (abort with ^G)
    1> ssl:versions().
    [{ssl_app,"9.2"},
     {supported,['tlsv1.2','tlsv1.1',tlsv1]},
     {supported_dtls,['dtlsv1.2',dtlsv1]},
     {available,['tlsv1.2','tlsv1.1',tlsv1,sslv3]},
     {available_dtls,['dtlsv1.2',dtlsv1]}]

    安装rabbitmq

    # xz -d rabbitmq-server-generic-unix-3.8.1.tar.xz
    
    # tar xf rabbitmq-server-generic-unix-3.8.1.tar -C ../softwares/
    
    # cd ../softwares/
    
    # ln -sv rabbitmq_server-3.8.1 rabbitmq
    
    [root@localhost softwares]# ll
    total 8
    drwxr-xr-x  4 root root    28 May 28 01:04 erlang
    drwxr-xr-x 12 2004 wheel 4096 May 28 01:03 otp_src_21.3
    lrwxrwxrwx  1 root root    22 May 28 01:19 rabbitmq -> rabbitmq_server-3.8.1/
    drwxr-xr-x 10 root root  4096 Oct 31  2019 rabbitmq_server-3.8.1

    添加环境变量

    # sed -ri 's#(export PATH=.*)#1:/opt/softwares/rabbitmq/sbin#' /etc/profile
    # . /etc/profile

    启动rabbitmq的方式

    1、以守护进程启动

    # rabbitmq-server -detached
    Warning: PID file not written; -detached was passed.

    2、nohup rabbitmq-server start &

    服务运行状态及端口

    [root@localhost softwares]# rabbitmqctl status
    Status of node rabbit@localhost ...
    Runtime

    端口

    [root@localhost softwares]# ss -lntp
    State       Recv-Q Send-Q                                      Local Address:Port                                                     Peer Address:Port              
    LISTEN      0      128                                                     *:4369                                                                *:*                   users:(("epmd",pid=35113,fd=3))
    LISTEN      0      128                                                     *:22                                                                  *:*                   users:(("sshd",pid=11363,fd=3))
    LISTEN      0      100                                             127.0.0.1:25                                                                  *:*                   users:(("master",pid=826,fd=13))
    LISTEN      0      128                                                     *:25672                                                               *:*                   users:(("beam.smp",pid=35155,fd=77))
    LISTEN      0      128                                                    :::4369                                                               :::*                   users:(("epmd",pid=35113,fd=4))
    LISTEN      0      128                                                    :::22                                                                 :::*                   users:(("sshd",pid=11363,fd=4))
    LISTEN      0      100                                                   ::1:25                                                                 :::*                   users:(("master",pid=826,fd=14))
    LISTEN      0      128                                                    :::5672                                                               :::*                   users:(("beam.smp",pid=35155,fd=90))

    设置开机启动(两种)

    1、脚本

    [root@localhost softwares]# cat /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
    # Default-Start:     3 5
    # Default-Stop:      0 1 2 6
    # Description:       RabbitMQ broker
    # Short-Description: Enable AMQP service provided by RabbitMQ broker
    ### END INIT INFO
     
    # Source function library.
    . /etc/init.d/functions
     
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    export HOME=/root
    NAME=rabbitmq-server
    DAEMON=/opt/softwares/rabbitmq/sbin/${NAME}
    CONTROL=/opt/softwares/rabbitmq/sbin/rabbitmqctl
    DESC=rabbitmq-server
    USER=root
    PID_FILE=/var/run/rabbitmq/pid
    #RABBITMQ_ENV=/usr/lib/rabbitmq/bin/rabbitmq-env
    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}
     
    #RABBITMQ_SCRIPTS_DIR=$(dirname "$RABBITMQ_ENV")
    #. "$RABBITMQ_ENV"
     
    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 
                > "${RABBITMQ_LOG_BASE}/startup_log" 
                2> "${RABBITMQ_LOG_BASE}/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 ${RABBITMQ_LOG_BASE}/startup_{log, _err}
                    RETVAL=1
                    ;;
            esac
        fi
    }
     
    stop_rabbitmq () {
        status_rabbitmq quiet
        if [ $RETVAL = 0 ] ; then
            set +e
            $CONTROL stop ${PID_FILE} 
                > ${RABBITMQ_LOG_BASE}/shutdown_log 
                2> ${RABBITMQ_LOG_BASE}/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 ${RABBITMQ_LOG_BASE}/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
        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

    设置权限并加入开机自启动

    # chmod +x /etc/init.d/rabbitmq-server
    chkconfig rabbitmq-server on

    2、unit文件

    # vim /usr/lib/systemd/system/rabbitmq-server.service
    
    [unit]
    Description=RabbitMQ broker
    After=syslog.target network.target
    [Service]
    Type=notify
    User=root
    Group=root
    WorkingDirectory=/opt/softwares/rabbitmq
    ExecStart=/opt/softwares/rabbitmq/bin/rabbitmq-server
    ExecStop=/opt/softwares/rabbitmq/bin/rabbitmqctl stop
    [Install]
    WantedBy=multi-user.target

    开启rabbitmq的web插件

    1、开启rabbitmq

    # rabbitmqctl start_app
    Starting node rabbit@localhost ...

    2、开启管理插件

    [root@localhost softwares]# rabbitmq-plugins enable rabbitmq_management
    Enabling plugins on node rabbit@localhost:
    rabbitmq_management
    The following plugins have been configured:
      rabbitmq_management
      rabbitmq_management_agent
      rabbitmq_web_dispatch
    Applying plugin configuration to rabbit@localhost...
    The following plugins have been enabled:
      rabbitmq_management
      rabbitmq_management_agent
      rabbitmq_web_dispatch
    
    started 3 plugins.

    3、查看插件集合

    [root@localhost softwares]# rabbitmq-plugins list
    Listing plugins with pattern ".*" ...
     Configured: E = explicitly enabled; e = implicitly enabled
     | Status: * = running on rabbit@localhost
     |/
    [  ] rabbitmq_amqp1_0                  3.8.1
    [  ] rabbitmq_auth_backend_cache       3.8.1
    [  ] rabbitmq_auth_backend_http        3.8.1
    [  ] rabbitmq_auth_backend_ldap        3.8.1
    [  ] rabbitmq_auth_backend_oauth2      3.8.1
    [  ] rabbitmq_auth_mechanism_ssl       3.8.1
    [  ] rabbitmq_consistent_hash_exchange 3.8.1
    [  ] rabbitmq_event_exchange           3.8.1
    [  ] rabbitmq_federation               3.8.1
    [  ] rabbitmq_federation_management    3.8.1
    [  ] rabbitmq_jms_topic_exchange       3.8.1
    [E*] rabbitmq_management               3.8.1
    [e*] rabbitmq_management_agent         3.8.1
    [  ] rabbitmq_mqtt                     3.8.1
    [  ] rabbitmq_peer_discovery_aws       3.8.1
    [  ] rabbitmq_peer_discovery_common    3.8.1
    [  ] rabbitmq_peer_discovery_consul    3.8.1
    [  ] rabbitmq_peer_discovery_etcd      3.8.1
    [  ] rabbitmq_peer_discovery_k8s       3.8.1
    [  ] rabbitmq_prometheus               3.8.1
    [  ] rabbitmq_random_exchange          3.8.1
    [  ] rabbitmq_recent_history_exchange  3.8.1
    [  ] rabbitmq_sharding                 3.8.1
    [  ] rabbitmq_shovel                   3.8.1
    [  ] rabbitmq_shovel_management        3.8.1
    [  ] rabbitmq_stomp                    3.8.1
    [  ] rabbitmq_top                      3.8.1
    [  ] rabbitmq_tracing                  3.8.1
    [  ] rabbitmq_trust_store              3.8.1
    [e*] rabbitmq_web_dispatch             3.8.1
    [  ] rabbitmq_web_mqtt                 3.8.1
    [  ] rabbitmq_web_mqtt_examples        3.8.1
    [  ] rabbitmq_web_stomp                3.8.1
    [  ] rabbitmq_web_stomp_examples       3.8.1

    web页面访问

    关闭rabbitmq 

    # rabbitmqctl stop_app
    Stopping rabbit application on node rabbit@localhost ...
  • 相关阅读:
    spring boot SpringApplication.run 执行过程
    算法 计算四则运算字符串结果
    算法 RingBuffer
    java BigDecimal 四舍五入
    算法 常用函数和近似
    java 多线程执行
    Java 三个线程依次输出ABC
    Java interrupt 中断
    java 垃圾收集器与内存分配策略
    软件项目与软件产品的区别
  • 原文地址:https://www.cnblogs.com/zh-dream/p/14823610.html
Copyright © 2020-2023  润新知