RabbitMQ是一个实现了AMQP高级消息队列协议的消息队列服务,用Erlang语言编写的。
为什么选择RabbitMQ?
类似的还有ActiveMQ ZeroMQ Appche Qpid
除了Qpid,RabbitMQ是唯一一个实现了AMQP标准的消息服务器。
可靠性强,支持持久化,保证稳定性
具有高并发和高可用特性【Erlang是为电话交换机开发的语言,天生自带高并发光环】
集群部署简单
社区活跃程度高
一、安装Erlang
1、安装依赖:yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
2、安装其他:yum -y install ncurses-devel unixODBC-devel
3、下载erlang并解压:
wget http://erlang.org/download/otp_src_20.0.tar.gz
chmod +x otp_src_20.0.tar.gz
tar -xzvf otp_src_20.0.tar.gz
4、编译安装:
cd otp_src_20.0/
./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac //不用java编译,故去掉java避免错误
make && make install //编译后安装
5、配置环境:
vi /etc/profile
#在文件末尾添加下面代码
-------------------------------------------------------------
ERL_HOME=/usr/local/erlang
export PATH= var PATH: var ERL_HOME/bin
---------------------------------------------------------------------
#使环境变量生效
source /etc/profile
6、输入命令检验是否安装成功
erl
------------------------------------------------------------------------------
Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.0 (abort with ^G)
--------------------------------------------------------------------------------
[提示:一是完整的GCC编译器环境;二是Ncurses开发库]
二、安装rabitmq
1、安装依赖:yum -y install xmlto
2、下载解压:
wget http://www.rabbitmq.com/releases/rabbitmq-server/current/rabbitmq-server-generic-unix-3.6.15.tar.xz
chmod +x rabbitmq-server-generic-unix-3.6.15.tar.xz
xz -d rabbitmq-server-generic-unix-3.6.15.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.6.15.tar
【说明:xz格式的压缩包是利用LZMP算法的一种无损数据的压缩格式,在linux中较为常见,解压命令为xz -d 】
3、rabbit 无需编译安装
4、配置启动:
a、开启管理页面插件
mv rabbitmq_server-3.6.10/ /usr/local/rabbitmq
cd /usr/local/rabbitmq/sbin/
./rabbitmq-plugins enable rabbitmq_management
b、配置环境变量
vi /etc/profile
#在文件末尾添加下面代码
RMQ_HOME=/usr/local/rabbitmq
export PATH=
P
A
T
H
:
PATH:
PATH:RMQ_HOME/sbin
c、使环境变量生效
source /etc/profile
d、启动rabbitmq
rabbitmq-server
e、关闭服务
rabbitmqctl stop
f、添加用户【对于rabbitmq的guest用户无法访问控制台的问题,是因为rabbitmq做了安全措施,禁止guest登陆控制台。需要我们自己创建用户进行登陆】
1、执行添加用户命令 rabbitmqctl add_user rabbitadmin 123456
2、执行设置权限命令 rabbitmqctl set_permissions -p / rabbitadmin “." ".” “.*”
3、执行设置角色命令 rabbitmqctl set_user_tags ad administrator
4、执行查看用户命令 rabbitmqctl list_users
---------------------------------------------------------------------------------------
Listing users
rabbitadmin [administrator]
guest [administrator]
---------------------------------------------------------------------------------------
g、然后在地址栏输入 ip:15672 就能访问rabbitmq的后台了。
h、需在阿里云配置防火墙规则,及添加端口号
三、 PHP 操作rabbitmq
1、下载rabbitmq-c包
wget https://codeload.github.com/alanxz/rabbitmq-c/tar.gz/master
2、解压
tar zxvf rabbitmq-c.tar.gz
3、安装
cd rabbitmq-c-master
yum install autoconf automake libtool
autoreconf -i
./configure --prefix=/usr/local/rabbitmq-c
(如果失败:参照
cd rabbitmq-c-0.8.0/
mkdir build && cd build #这一步是在rabbitmq-c的根目录下创建一个build子目录
# 这一步是让cmake根据../CMakeList.txt,即rabbitmq-c的根目录下的CMakeList.txt创建Makefile文件
# Makefile文件会被创建到build目录中
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c ..
# 这一步是真正的build rabbitmq-c库的,注意,不要漏掉点 '.'
cmake --build . --target install
到这里就已经安装完成了。不过这里有一个坑。你可以看一下/usr/local/rabbitmq-c下的目录只有include和lib64。因为后面编译安装amqp扩展的时候系统会 到/usr/local/rabbitmq-c/lib目录下搜索依赖库,导致错误。所以这里需要加一步:
ln -s lib64 lib
)
------------------------------------------------------------------------------------
rabbitmq-c build options:
Host: x86_64-unknown-linux-gnu
Version: 0.8.0
SSL/TLS: openssl
Tools: yes
Documentation: no
Examples: yes
---------------------------------------------------------------------------------------------
返回以上内容正常
4、编译
make && make install
5、下载amqp的包
wget https://pecl.php.net/get/amqp-1.8.0.tgz
6、cd amqp-* 执行该命令 phpize
---------------------------------
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
---------------------------------
7、如果没有则安装
yum install php-devel
8、编译
/usr/local/php-7.0.5/bin (php7.0路径)
./configure --with-php-config=/usr/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c/
9、安装
make && make install
10、添加扩展
vim /etc/php.ini
[rabbitmq]
extension=amqp.so
11、重启服务器或者php-fpm
# /bin/systemctl restart nginx.service
# /bin/systemctl restart php-fpm.service
sudo service php-fpm restart
//服务器端编写以下代码就能正常输出了
<?php
$cnn = new AMQPConnection();
$cnn->setHost('127.0.0.1');
$cnn->setLogin('rabbitadmin');
$cnn->setPassword('123456');
if($cnn->connect()){
echo '连接成功';
}
?>