摘要: 今天教你們利用鏡像快熟部署使用RabbitMQ。RabbitMQ是一個開源的AMQP實現,服務器端用Erlang語言編寫,支持多種客戶端,用於在分佈式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面表現不俗。html
chown -R www.www /data/wwwroot
useradd rabbitmq
echo rabbit1 > /etc/hostname hostname rabbit1 exit #退出從新登陸
yum -y install make gcc gcc-c++ m4 ncurses-devel openssl-devel unixODBC-devel
wget http://erlang.org/download/otp_src_19.3.tar.gz wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/rabbitmq-server-generic-unix-3.6.9.tar.xz
tar xzf otp_src_19.3.tar.gz #解壓 cd otp_src_19.3 ./configure --prefix=/usr/local/erlang --enable-shared-zlib --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac make && make install
tar xvJf rabbitmq-server-generic-unix-3.6.9.tar.xz mv rabbitmq_server-3.6.9 /usr/local/rabbitmq2. rabbitmq環境變量配置
sed -i 's@^ERL_DIR=.*@ERL_DIR=/usr/local/erlang/bin/@' /usr/local/rabbitmq/sbin/rabbitmq-defaults sed -i 's@^LOG_BASE=.*@LOG_BASE=/usr/local/rabbitmq/var/log/rabbitmq@' /usr/local/rabbitmq/sbin/rabbitmq-defaults mkdir -p /usr/local/rabbitmq/var/{lib,log}/rabbitmq3. 通常用戶(rabbitmq)運行RabbitMQ
wget http://pkgs.fedoraproject.org/cgit/rpms/rabbitmq-server.git/plain/rabbitmq-script-wrapper sed -i 's@cd /var/lib/rabbitmq@cd /usr/local/rabbitmq/var/lib/rabbitmq@g' rabbitmq-script-wrapper #更改rabbitmq數據存儲目錄 sed -i 's@/usr/lib/rabbitmq/bin/@/usr/local/rabbitmq/sbin/@g' rabbitmq-script-wrapper chmod +x rabbitmq-script-wrapper cp rabbitmq-script-wrapper /usr/sbin/rabbitmqctl cp rabbitmq-script-wrapper /usr/sbin/rabbitmq-server cp rabbitmq-script-wrapper /usr/sbin/rabbitmq-plugins chown -R rabbitmq.rabbitmq /usr/local/rabbitmq/var4. rabbitmq日誌割接
cat >> /etc/logrotate.d/rabbitmq-server << EOF /usr/local/rabbitmq/var/log/rabbitmq/*.log { weekly missingok rotate 20 compress delaycompress notifempty sharedscripts postrotate /sbin/service rabbitmq-server rotate-logs > /dev/null endscript } EOF
vi /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 # 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:/usr/local/erlang/bin NAME=rabbitmq-server DAEMON=/usr/sbin/${NAME} CONTROL=/usr/sbin/rabbitmqctl DESC=rabbitmq-server USER=rabbitmq ROTATE_SUFFIX= INIT_LOG_DIR=/usr/local/rabbitmq/var/log/rabbitmq PID_FILE=/var/run/rabbitmq/pid 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} [ -f /etc/sysconfig/${NAME} ] && . /etc/sysconfig/${NAME} 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 # RABBIT_NOFILES_LIMIT from /etc/sysconfig/rabbitmq-server is not handled # automatically if [ "$RABBITMQ_NOFILES_LIMIT" ]; then ulimit -n $RABBITMQ_NOFILES_LIMIT fi ensure_pid_dir set +e RABBITMQ_PID_FILE=$PID_FILE $START_PROG $DAEMON \ > "${INIT_LOG_DIR}/startup_log" \ 2> "${INIT_LOG_DIR}/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 ${INIT_LOG_DIR}/startup_\{log, _err\} RETVAL=1 ;; esac fi } stop_rabbitmq () { status_rabbitmq quiet if [ $RETVAL = 0 ] ; then set +e $CONTROL stop ${PID_FILE} > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/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 ${INIT_LOG_DIR}/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 ${ROTATE_SUFFIX} 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 --add rabbitmq-server chkconfig rabbitmq-server on6. 修改rabbitmq.config
cat > /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.config << EOF [ {rabbit, [ {tcp_listeners,[{"0.0.0.0",5672}]}, {tcp_listen_options, [binary, {packet,raw}, {reuseaddr,true}, {backlog,128}, {nodelay,true}, {exit_on_close,false}, {keepalive,true}]}, {default_vhost, <<"/">>}, {default_user, <<"guest">>}, {default_pass, <<"guest">>}, {loopback_users, ["guest"]}, {default_permissions, [<<".*">>, <<".*">>, <<".*">>]} ]} ]. EOF7. 開啓rabbitmq manager
cat > /usr/local/rabbitmq/etc/rabbitmq/enabled_plugins << EOF [rabbitmq_management]. EOF8. 啓動rabbitmq
service rabbitmq-server start9. 進入管理頁面