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