安裝
有兩種辦法,一是直接從官網下載最新的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
