liunx下 安装rabbitMQ及其扩展

安装RabbitMQ

安装 Erlang

Erlang依赖库:
GCC 编译使用
Ncurses 可以在Linux终端中写出字符用户界面的一个库
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
yum -y install make gcc gcc-c++ kernel-devel ncurses-devel openssl openssl-devel
编译安装Erlang:
    cd /usr/local/src
    wget -c http://www.erlang.org/download/otp_src_R16B03.tar.gz
    tar -xzvf ./otp_src_R16B03.tar.gz
    cd ./otp_src_R16B03
    ./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
    make && make install
 配置环境变量
vim /etc/profile
#追加如下内容:
export PATH=$PATH:/usr/local/erlang/bin
使其生效
source /etc/profile

安装RabbitMQ

*你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一。 
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。网站在: http://www.rabbitmq.com/ 上面有各种语言教程和实例代码 
安装依赖 
xmlto包是前端一个XSL工具链。它为您需要的转换选择适当的样式表,并使用外部XSLT处理器应用它。它还执行任何必要的后处理。*
yum -y install xmlto
cd /usr/local/src
wget -c http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.3/rabbitmq-server-3.4.3.tar.gz
tar -xzvf ./rabbitmq-server-3.4.3.tar.gz``
cd rabbitmq-server-3.4.3``
make
make install TARGET_DIR=/usr/local/rabbitmq SBIN_DIR=/usr/local/rabbitmq/sbin MAN_DIR=/usr/local/rabbitmq/man DOC_INSTALL_DIR=/usr/local/rabbitmq/doc

设置日志与消息持久化目录

mkdir /var/log/rabbitmq
mkdir /var/lib/rabbitmq
ln -s /usr/local/rabbitmq/sbin/rabbitmq-server /usr/bin/rabbitmq-server
ln -s /usr/local/rabbitmq/sbin/rabbitmq-env /usr/bin/rabbitmq-env
ln -s /usr/local/rabbitmq/sbin/rabbitmqctl /usr/bin/rabbitmqctl

操作命令

rabbitmq-server start & 启动rabbitmq 
rabbitmqctl status 查看状态 
rabbitmqctl stop 关闭rabbitmq 

增加守护进程脚本

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/rc.d/init.d/functions

 export HOME=/root
 PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/erlang/bin
 NAME=rabbitmq-server
 DAEMON=/usr/local/rabbitmq/sbin/${NAME}
 CONTROL=/usr/local/rabbitmq/sbin/rabbitmqctl
 DESC=rabbitmq-server
 USER=root
 INIT_LOG_DIR=/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}

 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 \
             > "${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
 }

 if  [ ! -d $INIT_LOG_DIR ]; then   
     mkdir $INIT_LOG_DIR
 fi

 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 on

安装Web插件管理界面

cd /usr/local/rabbitmq/sbin 
mkdir /etc/rabbitmq 
./rabbitmq-plugins enable rabbitmq_management

查看插件列表

./rabbitmq-plugins list

在服务器使用浏览器访问http://127.0.0.1:15672
登陆,默认用户名和密码都是guest,登陆成功!
浏览器访问http://192.168.0.28:15672,如果出现无法访问的情况。
开放防火墙端口:

iptables -I INPUT -p tcp -m tcp --dport 15672 -j ACCEPT 
iptables -I INPUT -p tcp -m tcp --dport 5672 -j ACCEPT 
service iptables save 
service iptables restart 

输入用户名密码 guest/guest 发现不能登录
原来从 rabbitmq 3.3.0 之后不能以 guest/guest 登录了(本机可以)
两种解决方案
- 更改文件配置
- 复制默认配置:cp /usr/local/rabbitmq/doc/rabbitmq.config.example /etc/rabbitmq/
- 修改配置文件名: cd /etc/rabbitmq ; mv rabbitmq.config.example rabbitmq.config
- 编辑配置文件,开启用户远程访问:vim rabbitmq.config
- 在 64 行,默认有这样一句话:%%{loopback_users,[<<”guest”>>]},,注意,该语句最后有一个逗号,等下是要去掉的我们需要改为:{loopback_users, []}

- rabbitmqctl stop 
- rabbitmq-server start

要新增用户及权限:

rabbitmqctl add_user test test 
rabbitmqctl set_user_tags test administrator 
rabbitmqctl set_permissions -p / test ".*" ".*" ".*" 

创建了用户名/密码:test/test
最后成功登录

Web插件的使用

添加新授权用户

这里写图片描述

添加 Host(如下图所示)

这里写图片描述

给添加的 Host 设置权限(如下图所示)

这里写图片描述

交换机绑定队列(如下图所示)

这里写图片描述

安装RabbitMQ扩展

安装PHP扩展 amqp
cd /usr/local/src 
wget http://pecl.php.net/get/amqp-1.9.1.tgz 
tar zxvf amqp-1.9.1.tgz 
cd amqp-1.9.1 
/usr/local/php/bin/phpize 

可能会出现错误信息

FATAL ERROR: Autoconf version 2.59 or higher is required for this script

删除旧版rpm -e –nodeps autoconf 版本autoconf

cd /usr/local/src 
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz 
tar -xzf autoconf-2.69.tar.gz 
cd autoconf-2.69 
./configure 
make && make install
安装rabbitmq-c依赖包
yum install autoconf automake libtool 
cd /usr/local/src 
wget https://codeload.github.com/alanxz/rabbitmq-c/tar.gz/master -O rabbitmq-c.tar.gz 
tar zxvf rabbitmq-c.tar.gz 
cd rabbitmq-c-master 
autoreconf -i 
#如果到这一步出现问题,则上面的rabbitmq-c有问题
去https://github.com/alanxz/rabbitmq-c 这里下载
./configure --prefix=/usr/local/rabbitmq-c

结果如下:
rabbitmq-c build options:
Host: x86_64-unknown-linux-gnu
Version: 0.8.1
SSL/TLS: openssl
Tools: no
Documentation: no
Examples: yes

make && make install
安装amqp扩展
cd /usr/local/src 
wget https://pecl.php.net/get/amqp-1.8.0.tgz 
tar zxvf amqp-1.8.0.tgz 
cd amqp-1.8.0 
/usr/local/php/bin/phpize
cd /usr/local/src/amqp-1.8.0 
/usr/local/php/bin/phpize 
./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c/      
#php-config根据自己实际情况 可以使用find命令来查找这个文件的位置
make && make install 

增加php配置

vim /usr/local/php/etc/php.ini 

增加
[rabbitmq]

extension=amqp.so 

如果以上不能添加扩展,请参考以下方法添加扩展:
经过上面make install 之后,在/usr/lib64/php/modules/下应该有amqp.so文件

cd /etc/php.d/

新建文件amqp.ini,内容如下:

;amqp extension module
extension=amqp.so

重启

service httpd restart 

或者

service php-fpm restart

php -m查看扩展

amqp #amqp扩展
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
igbinary
json
ldap
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
swoole
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值