わすれっぽいきみえ

みらいのじぶんにやさしくしてやる

9日目: RabbitMQインストール

友人がこのブログを見てくれているようだったのだが、今日の昼「大掃除とかwww」と突っ込まれ技術系の記事を書くことを強いられた。
はい。書きます。

今、業務でRabbitMQを導入しようかどうしようかという話が出ているのだけども、使ったことがないので自分ちのVMに入れてみようかなと思って調べていた。
すると公式サイトでrpmパッケージを配布していたので、これを使って入れると簡単かなーと思った。

具体的なRabbitMQの使い方については明日書けたらいいなー。
とりあえずRabbitMQをインストールする。

ちなみに私の環境は

$ cat /etc/redhat-release
CentOS release 6.5 (Final)
$ uname -a
Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

というわけでCentOS 6.5 64bitのvagrantに入れる準備をする。

rpmパッケージと署名だけ先にダウンロード

$ wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.1/rabbitmq-server-3.2.1-1.noarch.rpm
$ wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.1/rabbitmq-server-3.2.1-1.noarch.rpm.asc

あとで気づいたけど、ascファイルに関しては別にダウンロードする必要なかった。
まぁいいや。

Erlangの準備

RabbitMQはErlangがインストールされた環境で動く。なのでErlangのインストールから行う。

まずEPELパッケージの最新版を入れておく。EPELいつ入れたか忘れたけど、アップデート。

$ sudo yum -y --enablerepo=epel update epel-release

次にRabbitMQ - Installing on RPM-based Linux (CentOS, Fedora, OpenSuse, RedHat)によると

EPELパッケージ・ポリシーのため、EPEL 5にはとても古いErlang(R12B-5)が入っているが、これはRabbitMQと互換性がない。*1

と載っているので、Erlangの最新版を入れることにする*2。 で、RabbitMQ - Installing on RPM-based Linux (CentOS, Fedora, OpenSuse, RedHat)wgetの親切なコマンドがあるのだけども、おもむろに無視してErlangの公式ページにあるインストール方法

wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
sudo rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
sudo yum install erlang

を実行。いろいろ入る。

GnuPG 鍵の登録

RabbitMQのrpmパッケージには署名がついているので、認証する必要がある。なのでRabbitMQ - Signaturesにある方法で鍵を登録する。

$ gpg --keyserver pgp.mit.edu --recv-keys 0x056E8E56
gpg: requesting key 056E8E56 from hkp server pgp.mit.edu
gpg: /home/vagrant/.gnupg/trustdb.gpg: trustdb created
gpg: key 056E8E56: public key "RabbitMQ Release Signing Key <info@rabbitmq.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
$  gpg --verify rabbitmq-server-3.2.1-1.noarch.rpm.asc rabbitmq-server-3.2.1-1.noarch.rpm
gpg: Signature made Thu 07 Nov 2013 08:05:33 PM JST using DSA key ID 056E8E56
gpg: Good signature from "RabbitMQ Release Signing Key <info@rabbitmq.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: ****

警告が気になるならここの最後に書いてあるコマンドを使えばいい。

RabbitMQをインストール

ここまでできてたらあとは簡単。

$ sudo yum install rabbitmq-server-3.2.1-1.noarch.rpm

RabbitMQサーバ立ち上げ

$ sudo service rabbitmq-server start
Starting rabbitmq-server: SUCCESS
rabbitmq-server.
$ sudo rabbitmqctl status
Status of node rabbit@localhost ...
[{pid,3375},
 {running_applications,[{rabbit,"RabbitMQ","3.2.1"},
                        {mnesia,"MNESIA  CXC 138 12","4.9"},
                        {os_mon,"CPO  CXC 138 46","2.2.12"},
                        {xmerl,"XML parser","1.3.3"},
                        {sasl,"SASL  CXC 138 11","2.3.2"},
                        {stdlib,"ERTS  CXC 138 10","1.19.3"},
                        {kernel,"ERTS  CXC 138 10","2.16.3"}]},
 {os,{unix,linux}},
 {erlang_version,"Erlang R16B02 (erts-5.10.3) [source-b44b726] [64-bit] [async-threads:30] [kernel-poll:true]\n"},
 {memory,[{total,34432880},
          {connection_procs,2632},
          {queue_procs,5264},
          {plugins,0},
          {other_proc,13314400},
          {mnesia,57808},
          {mgmt_db,0},
          {msg_index,33584},
          {other_ets,768432},
          {binary,7448},
          {code,16261903},
          {atom,561761},
          {other_system,3419648}]},
 {vm_memory_high_watermark,0.4},
 {vm_memory_limit,192287539},
 {disk_free_limit,50000000},
 {disk_free,496668463104},
 {file_descriptors,[{total_limit,924},
                    {total_used,3},
                    {sockets_limit,829},
                    {sockets_used,1}]},
 {processes,[{limit,1048576},{used,122}]},
 {run_queue,0},
 {uptime,2089}]
...done.

さて立ち上げまではそんなに困らなかったが、これを使うとなるとどうなるんだろう。
また明日!

*1:"Due to the EPEL package update policy, EPEL 5 contains a very old version of Erlang, R12B-5; with which RabbitMQ is not compatible."の訳

*2:ちなみにErlangインストール前にEPELパッケージをアップデートしているのでEPELパッケージは実は6なのだけど、それで入るErlangのバージョンがいくつなのか調べるの面倒だったのでやってない。だってそれのバージョンがやっぱり古くて使えません、となると結局Erlang Solutionsを見ないといけなくなる。