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 完畢。

 

  

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM