ubuntu安装Rabbitmq
安装
有两种办法,一是直接从官网下载最新的deb文件,但是在你dpkg -i 时,因为缺少erlang的依赖,只能再通过apt-get install -f 安装erlang,最终也能成功,但是会有一些不舒服的错误提示。
建议使用另一个官网上提供的安装办法(有洁僻的使用)。
首先,修改 /etc/apt/sources.list文件,最后一行加上:
deb http://www.rabbitmq.com/debian/ testing main
然后,命令行先后执行以下两句加rabbitmq的公钥为可信:
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc sudo apt-key add rabbitmq-signing-key-public.asc
现在,可以先update,然后安装了
apt-get update sudo apt-get install rabbitmq-server
用此步骤安装,屏幕上会一路很爽地刷到最后,你见到如下信息,说明OK了。。。
Setting up rabbitmq-server (3.6.0-1) ... Adding group `rabbitmq' (GID 114) ... Done. Adding system user `rabbitmq' (UID 106) ... Adding new user `rabbitmq' (UID 106) with group `rabbitmq' ... Not creating home directory `/var/lib/rabbitmq'. * Starting message broker rabbitmq-server [ OK ] Processing triggers for libc-bin (2.19-0ubuntu6.6) ... Processing triggers for ureadahead (0.100.0-16) ...
然后,我们可以 ps -ef|grep rabbit 看看情况:
rabbitmq 2102 1 0 10:44 ? 00:00:00 /usr/lib/erlang/erts-5.10.4/bin/epmd -daemon rabbitmq 2124 1 0 10:44 ? 00:00:00 /bin/sh -e /usr/lib/rabbitmq/bin/rabbitmq-server rabbitmq 2386 2124 2 10:44 ? 00:00:00 /usr/lib/erlang/erts-5.10.4/bin/beam -W w -A 64 -P 1048576 -K true -B i -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.0/ebin -noshell -noinput -s rabbit boot -sname rabbit@two -boot start_sasl -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/var/log/rabbitmq/rabbit@two.log"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/rabbit@two-sasl.log"} -rabbit enabled_plugins_file "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.0/plugins" -rabbit plugins_expand_dir "/var/lib/rabbitmq/mnesia/rabbit@two-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/rabbit@two" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672 rabbitmq 2469 2386 0 10:44 ? 00:00:00 inet_gethost 4 rabbitmq 2470 2469 0 10:44 ? 00:00:00 inet_gethost 4
看上去没什么问题。我们进入安装目录看看状态。
cd /usr/lib/rabbitmq/bin/ yancheng@two:/usr/lib/rabbitmq/bin$ sudo ./rabbitmqctl status Status of node rabbit@two ... Error: unable to connect to node rabbit@two: nodedown DIAGNOSTICS =========== attempted to contact: [rabbit@two] rabbit@two: * connected to epmd (port 4369) on two * epmd reports node 'rabbit' running on port 25672 * TCP connection succeeded but Erlang distribution failed * suggestion: hostname mismatch? * suggestion: is the cookie set correctly? * suggestion: is the Erlang distribution using TLS? current node details: - node name: 'rabbitmq-cli-2507@two' - home dir: /home/yancheng - cookie hash: LzLUNZfZaIrZKLsr1kLeAg==
必然会报错,其实用两种方法安装都会有这个问题。在这个bin目录下有一个rabbitmq-server,你使用它停止服务也停不了,感觉上好象就没安装成功。。。所以,我们需要做一些配置的工作。
配置
现在我们来修改一些东西,首先,还是官网上提供的命令,停止服务:
invoke-rc.d rabbitmq-server stop
这回真的能停止掉,所以从此命令来看,应该还有一个rabbitmq-server脚本才对,的确,我们可以在 /etc/init.d/ 目录下找到真正起作用的(开机自启动的)rabbitmq-server脚本。感兴趣的可以自己打开此文件看看内容。
我要说的是,在安装成功的提示中,说新建了一个rabbitmq用户,的确,自启动的服务是用这个用户启动的,所以当前你登录的帐号是没办法查询状态,也就是上面你看不到状态的原因。我们可以这样:
invoke-rc.d rabbitmq-server status
这也是可以的(前提你要先启动服务,invoke-rc.d rabbitmq-server start)
于是我们做的配置就是让当前用户,比如我一直使用的是yancheng账户,能够执行某些脚本。我需要手工修改一下/usr/lib/rabbitmq/bin目录下的两个脚本,让它可用。
rabbitmqctl 用于添加用户和查看信息等,以及rabbitmq-plugins,用于添加插件。修改方法基本一样,就是添加一个HOME,指到 /var/lib/rabbitmq ,也就是要与启动的rabbitmq服务中使用的HOME一致,因为当前登录的HOME是/home/yancheng,大概如下:
RABBITMQ_USE_LONGNAME=${RABBITMQ_USE_LONGNAME} \ HOME=/var/lib/rabbitmq \ exec ${ERL_DIR}erl \ -pa "${RABBITMQ_HOME}/ebin" \ ...
现在,我们可以查看状态 sudo ./rabbitmqctl status 了。应该是成功了。
添加用户并加入管理员:
sudo ./rabbitmqctl add_user admin admin123 sudo ./rabbitmqctl set_user_tags admin administrator
启用WEB管理台:
sudo ./rabbitmq-plugins enable rabbitmq_management
一切都跟以前一样了。
默认端口:
- 4369 (epmd), 25672 (Erlang distribution)
- 5672, 5671 (AMQP 0-9-1 without and with TLS)
- 15672 (if management plugin is enabled)
- 61613, 61614 (if STOMP is enabled)
- 1883, 8883 (if MQTT is enabled)
控制台打开方式:
http://localhost(ip):15672
python3安装关于rabbitmq的模块:
pip3 install pika
pip3 install Celery
pip3 install Haigha