ズッキーニのプログラミング実験場

プログラミング + アカデミック + 何か面白いこと。 記載されているものは基本的に私が所属する団体とは関係がありません。

   Mar 14

[RabbitMQ]RabbitMQをUbuntuにインストールしてサンプルと管理画面を動かしてみる

by zuqqhi2 at 2015年3月14日
Pocket

20150314_rabbitmq_logo

Goal

次のことをやる。

  1. RabbitMQをUbuntuインストールする(12.04)
  2. サンプルRubyクライントを動かす
  3. Web管理画面を動かす

Environment

  • OS
    • Linux version 3.2.0-64-generic (buildd@kissel) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #97-Ubuntu SMP Wed Jun 4 22:04:21 UTC 2014
  • RabbitMQ
    • 3.5
  • ruby
    • 2.1.2p95

Procedure

1. RabbitMQをUbuntuにインストールする

RabbitMQをインストールするにはaptのソースリストに1つ追加する必要がある。
以下のコマンドでapt-getを使ってRabbitMQをインストールしてみる。

sudo vim /etc/apt/sources.list.d/rabbitmq.list
=====
deb http://www.rabbitmq.com/debian/ testing main
=====

# Add signature
wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
sudo apt-key add rabbitmq-signing-key-public.asc

# apt-get
sudo apt-get update
sudo apt-get install rabbitmq-server

# Check status
sudo /etc/init.d/rabbitmq-server status
=====
Status of node rabbit@www1242up ...
[{pid,21208},
 {running_applications,[{rabbit,"RabbitMQ","3.5.0"},
                        {mnesia,"MNESIA  CXC 138 12","4.5"},
                        {os_mon,"CPO  CXC 138 46","2.2.7"},
                        {xmerl,"XML parser","1.2.10"},
                        {sasl,"SASL  CXC 138 11","2.1.10"},
                        {stdlib,"ERTS  CXC 138 10","1.17.5"},
                        {kernel,"ERTS  CXC 138 10","2.14.5"}]},
 {os,{unix,linux}},
 {erlang_version,"Erlang R14B04 (erts-5.8.5)  [64-bit] [smp:3:3] [rq:3] [async-threads:30] [kernel-poll:true]\n"},
 {memory,[{total,28074848},
          {connection_readers,0},
          {connection_writers,0},
          {connection_channels,0},
          {connection_other,2704},
          {queue_procs,2704},
          {queue_slave_procs,0},
          {plugins,0},
          {other_proc,9304344},
          {mnesia,60560},
          {mgmt_db,0},
          {msg_index,34680},
          {other_ets,776160},
          {binary,8632},
          {code,14672972},
          {atom,1363353},
          {other_system,1848739}]},
 {alarms,[]},
 {listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},
 {vm_memory_high_watermark,0.4},
 {vm_memory_limit,840266547},
 {disk_free_limit,50000000},
 {disk_free,165005750272},
 {file_descriptors,[{total_limit,924},
                    {total_used,3},
                    {sockets_limit,829},
                    {sockets_used,1}]},
 {processes,[{limit,1048576},{used,125}]},
 {run_queue,0},
 {uptime,20}]
=====

2. サンプルRubyクライントを動かす

サンプルRubyクライアントを動かしてみる。
RubyでRabbitMQを扱うにはbunnyというライブラリを使うと楽。
まずはGemfileを書く。

source "https://rubygems.org"

gem "bunny", ">= 1.7.0"

次はコード。

#!/usr/bin/env ruby
# encoding: utf-8

require "rubygems"
require "bunny"

conn = Bunny.new
conn.start

ch = conn.create_channel
q  = ch.queue("bunny.examples.hello_world", :auto_delete => true)
x  = ch.default_exchange

q.subscribe do |delivery_info, metadata, payload|
  puts "Received #{payload}"
end

x.publish("Hello!", :routing_key => q.name)

sleep 1.0
conn.close

動かしてみる。

bundle install
=====
Fetching gem metadata from https://rubygems.org/...
Resolving dependencies...
Installing amq-protocol 1.9.2
Installing bunny 1.7.0
Using bundler 1.7.4
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
=====

ls
=====
client.rb  Gemfile  Gemfile.lock
=====

bundle exec ruby client.rb
=====
Received Hello!
=====

動いてる。

3. Web管理画面を動かす

RabbitMQでは各種プラグインが使える。
管理画面もそのプラグインの一つ。
以下のコマンドでプラグインを有効にできる。

sudo rabbitmq-plugins list
=====
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status:   * = running on rabbit@www1242up
 |/
[  ] amqp_client                       3.5.0
[  ] cowboy                            0.5.0-rmq3.5.0-git4b93c2d
[  ] eldap                             3.5.0-gite309de4
[  ] mochiweb                          2.7.0-rmq3.5.0-git680dba8
[  ] rabbitmq_amqp1_0                  3.5.0
[  ] rabbitmq_auth_backend_ldap        3.5.0
[  ] rabbitmq_auth_mechanism_ssl       3.5.0
[  ] rabbitmq_consistent_hash_exchange 3.5.0
[  ] rabbitmq_federation               3.5.0
[  ] rabbitmq_federation_management    3.5.0
[  ] rabbitmq_management               3.5.0
[  ] rabbitmq_management_agent         3.5.0
[  ] rabbitmq_management_visualiser    3.5.0
[  ] rabbitmq_mqtt                     3.5.0
[  ] rabbitmq_shovel                   3.5.0
[  ] rabbitmq_shovel_management        3.5.0
[  ] rabbitmq_stomp                    3.5.0
[  ] rabbitmq_test                     3.5.0
[  ] rabbitmq_tracing                  3.5.0
[  ] rabbitmq_web_dispatch             3.5.0
[  ] rabbitmq_web_stomp                3.5.0
[  ] rabbitmq_web_stomp_examples       3.5.0
[  ] sockjs                            0.3.4-rmq3.5.0-git3132eb9
[  ] webmachine                        1.10.3-rmq3.5.0-gite9359c7
=====


sudo rabbitmq-plugins enable rabbitmq_management
=====
The following plugins have been enabled:
  mochiweb
  webmachine
  rabbitmq_web_dispatch
  amqp_client
  rabbitmq_management_agent
  rabbitmq_management

Applying plugin configuration to rabbit@... started 6 plugins.
=====


sudo rabbitmq-plugins list
=====
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status:   * = running on rabbit@www1242up
 |/
[e*] amqp_client                       3.5.0
[  ] cowboy                            0.5.0-rmq3.5.0-git4b93c2d
[  ] eldap                             3.5.0-gite309de4
[e*] mochiweb                          2.7.0-rmq3.5.0-git680dba8
[  ] rabbitmq_amqp1_0                  3.5.0
[  ] rabbitmq_auth_backend_ldap        3.5.0
[  ] rabbitmq_auth_mechanism_ssl       3.5.0
[  ] rabbitmq_consistent_hash_exchange 3.5.0
[  ] rabbitmq_federation               3.5.0
[  ] rabbitmq_federation_management    3.5.0
[E*] rabbitmq_management               3.5.0
[e*] rabbitmq_management_agent         3.5.0
[  ] rabbitmq_management_visualiser    3.5.0
[  ] rabbitmq_mqtt                     3.5.0
[  ] rabbitmq_shovel                   3.5.0
[  ] rabbitmq_shovel_management        3.5.0
[  ] rabbitmq_stomp                    3.5.0
[  ] rabbitmq_test                     3.5.0
[  ] rabbitmq_tracing                  3.5.0
[e*] rabbitmq_web_dispatch             3.5.0
[  ] rabbitmq_web_stomp                3.5.0
[  ] rabbitmq_web_stomp_examples       3.5.0
[  ] sockjs                            0.3.4-rmq3.5.0-git3132eb9
[e*] webmachine                        1.10.3-rmq3.5.0-gite9359c7
=====

#Check port number
netstat -l
=====
Proto Recv-Q Send-Q Local Address           Foreign Address         State
...
tcp        0      0 *:15672                 *:*                     LISTEN
...
=====


#Allow the port
sudo ufw allow 15672
=====
Rule added
Rule added (v6)
=====


# Add user setting
sudo vim /etc/rabbitmq/rabbitmq.config
=====
[{rabbit, [{loopback_users, []}]}].
=====

# Restart
sudo /etc/init.d/rabbitmq-server restart

“http://targethost:15672″にアクセスすると、
以下のページが見れる。

20150314_rabbitmq_login

初期アカウントはusername => guest, password => guest。
この管理画面ではキューの状態とサーバリソースが見れる。

20150314_rabbitmq_webui

参考

Pocket

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です