RabbitMQのインストールと管理画面の有効化(MacOSX/Linux/Windows)

RabbitMQのインストールとRabbitMQ管理画面の有効化までのステップのメモ

#Mac OSX

一番簡単

```brew install rabbitmq```

以上でインストール終了。裏でいろいろ(下で実施するLinuxインストール相当のことを)やってくれてる。

http://localhost:15672/　

にアクセスすると管理画面が有効になっている。

![CBIMGfsewr004.png](https://qiita-image-store.s3.amazonaws.com/0/36931/3d47c2da-fa17-b84d-f158-4c13f5d26b91.png)

user:guest password:guest でログインできる

![CBIMGfsewr003.png](https://qiita-image-store.s3.amazonaws.com/0/36931/2f8d7488-a7ef-e3cb-f3e0-4e1c30b112b6.png)





#Linux

## Erlangをインストール
``sudo yum install erlang``

## RabbitMQをダウンロード

RPMはこちらから
http://www.rabbitmq.com/install-rpm.html

``curl -O http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.4/rabbitmq-server-3.4.4-1.noarch.rpm``

## RabbitMQをインストール
``sudo rpm -ivh rabbitmq-server-3.4.4-1.noarch.rpm``

## RabbitMQを開始
``sudo service rabbitmq-server start``

ntsysvとかでOS起動時にBOOTするようにしておく(任意)

## 管理画面を有効化
`` sudo rabbitmq-plugins enable rabbitmq_management ``

ちなみにsudoしないとひどいエラーがでる
``rabbitmq-plugins enable rabbitmq_management``

``
[siori@localhost download]$ rabbitmq-plugins enable rabbitmq_management
{error_logger,{{2015,3,2},{0,26,59}},"Error when reading ./.erlang.cookie: eacces",[]}
{error_logger,{{2015,3,2},{0,26,59}},crash_report,[[{initial_call,{auth,init,['Argument__1']}},{pid,<0.19.0>},{registered_name,[]},{error_info,{exit,{"Error when reading ./.erlang.cookie: eacces",[{auth,init_cookie,0,[{file,"auth.erl"},{line,285}]},{auth,init,1,[{file,"auth.erl"},{line,139}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,304}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]},[{gen_server,init_it,6,[{file,"gen_server.erl"},{line,328}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}},{ancestors,[net_sup,kernel_sup,<0.10.0>]},{messages,[]},{links,[<0.17.0>]},{dictionary,[]},{trap_exit,true},{status,running},{heap_size,987},{stack_size,27},{reductions,609}],[]]}
{error_logger,{{2015,3,2},{0,26,59}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{"Error when reading ./.erlang.cookie: eacces",[{auth,init_cookie,0,[{file,"auth.erl"},{line,285}]},{auth,init,1,[{file,"auth.erl"},{line,139}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,304}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}},{offender,[{pid,undefined},{name,auth},{mfargs,{auth,start_link,[]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]}
{error_logger,{{2015,3,2},{0,26,59}},supervisor_report,[{supervisor,{local,kernel_sup}},{errorContext,start_error},{reason,{shutdown,{failed_to_start_child,auth,{"Error when reading ./.erlang.cookie: eacces",[{auth,init_cookie,0,[{file,"auth.erl"},{line,285}]},{auth,init,1,[{file,"auth.erl"},{line,139}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,304}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}}}},{offender,[{pid,undefined},{name,net_sup},{mfargs,{erl_distribution,start_link,[]}},{restart_type,permanent},{shutdown,infinity},{child_type,supervisor}]}]}
{error_logger,{{2015,3,2},{0,26,59}},crash_report,[[{initial_call,{application_master,init,['Argument__1','Argument__2','Argument__3','Argument__4']}},{pid,<0.9.0>},{registered_name,[]},{error_info,{exit,{{shutdown,{failed_to_start_child,net_sup,{shutdown,{failed_to_start_child,auth,{"Error when reading ./.erlang.cookie: eacces",[{auth,init_cookie,0,[{file,"auth.erl"},{line,285}]},{auth,init,1,[{file,"auth.erl"},{line,139}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,304}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}}}}},{kernel,start,[normal,[]]}},[{application_master,init,4,[{file,"application_master.erl"},{line,133}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}},{ancestors,[<0.8.0>]},{messages,[{'EXIT',<0.10.0>,normal}]},{links,[<0.8.0>,<0.7.0>]},{dictionary,[]},{trap_exit,true},{status,running},{heap_size,610},{stack_size,27},{reductions,148}],[]]}
``

## 管理画面が有効になったか調べる
``[siori@localhost download]$  curl http://127.0.0.1:15672/ ``

```html:index.html
<html>
  <head>
    <title>RabbitMQ Management</title>
    <script src="js/ejs.min.js" type="text/javascript"></script>
    <script src="js/jquery-1.6.4.min.js" type="text/javascript"></script>
    <script src="js/jquery.flot.min.js" type="text/javascript"></script>
    <script src="js/jquery.flot.time.min.js" type="text/javascript"></script>
    <script src="js/sammy-0.6.0.min.js" type="text/javascript"></script>
    <script src="js/json2.js" type="text/javascript"></script>
    <script src="js/base64.js" type="text/javascript"></script>
    <script src="js/global.js" type="text/javascript"></script>
    <script src="js/main.js" type="text/javascript"></script>
    <script src="js/prefs.js" type="text/javascript"></script>
    <script src="js/help.js" type="text/javascript"></script>
    <script src="js/formatters.js" type="text/javascript"></script>
    <script src="js/charts.js" type="text/javascript"></script>

    <link href="css/main.css" rel="stylesheet" type="text/css"/>
    <link href="favicon.ico" rel="shortcut icon" type="image/x-icon"/>

<!--[if lte IE 8]>
    <script src="js/excanvas.min.js" type="text/javascript"></script>
    <link href="css/evil.css" rel="stylesheet" type="text/css"/>
<![endif]-->
  </head>
  <body>
    <div id="outer"></div>
    <div id="debug"></div>
    <div id="scratch"></div>
  </body>
</html>
```

こんなのが返ってきたらOK

## ポートフォワーディングして家のデスクトップから管理画面にアクセスできるようにする

Linuxは基本的にVPSなどリモート経由でアクセスする事が多いと思います。
デスクトップPC(Windows/Mac)から管理画面にアクセスするには ssh -L コマンドでポートフォワーディングを使います。

ここではLinux(VPS)のアドレスを111.111.111.111とし、ローカルのPCの25672ポートにフォワードします。

`` ssh -L 25672:111.111.111.111:15672 username@111.111.111.111``

http://localhost:25672/　

にアクセスし管理画面が開けたら成功・・・ですが、このままではguest/guestでログインできません(´・ω・｀)

## リモートからguest/guestで管理画面にアクセスできるようにする

RabbitMQのデフォルト設定ではguestユーザーはリモートPCからアクセスできないようになっています。
iptablesなどでセキュリティ確保していることを前提でguestユーザーをリモートアクセスできるようにします。

```
cd $RABBITMQ_HOME/etc/rabbitmq/
sudo touch rabbitmq.config
vi rabbitmq.config 
```


```text:rabbitmq.config 
[{rabbit, [{loopback_users, []}]}].
```

サービス再起動

`` sudo service rabbitmq-server restart ``

これでリモートからguestでログインできるようになります。


# Windows 

## erlangのサイトからerlangをインストール

http://www.erlang.org/download.html

Windowsでアクセスした場合はWindowsのバイナリのリンクがでる

http://www.erlang.org/download/otp_win64_17.4.exe

こういうのを落としてクリックインストール

## RabbitMQをダウンロード

http://www.rabbitmq.com/download.html

http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.4/rabbitmq-server-3.4.4.exe

こういうのを落としてクリックインストール！

## RabbitMQを有効化

サービスとしてインストールされるのでコントロールパネルの管理→サービスで有効化

![CBIMGfsewr001.png](https://qiita-image-store.s3.amazonaws.com/0/36931/69286405-4bba-e5fd-c436-4712adf5e0e1.png)


## 管理系のコマンドがある場所まで移動

rabbitMQのコマンドはここらへんにインストールされるのでコマンドプロンプトに入りこのパスまで移動する
``cd C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.4.4\sbin``

## 有効になってるプラグインを見つめる

![CBIMGfsewr002.png](https://qiita-image-store.s3.amazonaws.com/0/36931/494066f6-d84d-137c-f659-6e7fe8750510.png)

``rabbitmq-plugins.bat list``を実行すると管理系のプラグインが有効になってないのがわかる

```
C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.4.4\sbin>rabbitmq-plugins.bat list
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status:   * = running on rabbit@MACHINE
 |/
[  ] amqp_client                       3.4.4
[  ] cowboy                            0.5.0-rmq3.4.4-git4b93c2d
[  ] mochiweb                          2.7.0-rmq3.4.4-git680dba8
[  ] rabbitmq_amqp1_0                  3.4.4
[  ] rabbitmq_auth_backend_ldap        3.4.4
[  ] rabbitmq_auth_mechanism_ssl       3.4.4
[  ] rabbitmq_consistent_hash_exchange 3.4.4
[  ] rabbitmq_federation               3.4.4
[  ] rabbitmq_federation_management    3.4.4
[  ] rabbitmq_management               3.4.4
[  ] rabbitmq_management_agent         3.4.4
[  ] rabbitmq_management_visualiser    3.4.4
[  ] rabbitmq_mqtt                     3.4.4
[  ] rabbitmq_shovel                   3.4.4
[  ] rabbitmq_shovel_management        3.4.4
[  ] rabbitmq_stomp                    3.4.4
[  ] rabbitmq_test                     3.4.4
[  ] rabbitmq_tracing                  3.4.4
[  ] rabbitmq_web_dispatch             3.4.4
[  ] rabbitmq_web_stomp                3.4.4
[  ] rabbitmq_web_stomp_examples       3.4.4
[  ] sockjs                            0.3.4-rmq3.4.4-git3132eb9
[  ] webmachine                        1.10.3-rmq3.4.4-gite9359c7
```

全部無効になってる(´・ω・｀)

## 管理プラグインを有効化する

``C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.4.4\sbin>rabbitmq-plugins.bat enable rabbitmq
_management``

以下のようになったらOK

```
The following plugins have been enabled:
  mochiweb
  webmachine
  rabbitmq_web_dispatch
  amqp_client
  rabbitmq_management_agent
  rabbitmq_management

Applying plugin configuration to rabbit@MACHINE... started 6 plugins.
```

## 管理プラグインが有効になったか調べる

```
C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.4.4\sbin>rabbitmq-plugins.bat list
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status:   * = running on rabbit@MACHINE
 |/
[e*] amqp_client                       3.4.4
[  ] cowboy                            0.5.0-rmq3.4.4-git4b93c2d
[e*] mochiweb                          2.7.0-rmq3.4.4-git680dba8
[  ] rabbitmq_amqp1_0                  3.4.4
[  ] rabbitmq_auth_backend_ldap        3.4.4
[  ] rabbitmq_auth_mechanism_ssl       3.4.4
[  ] rabbitmq_consistent_hash_exchange 3.4.4
[  ] rabbitmq_federation               3.4.4
[  ] rabbitmq_federation_management    3.4.4
[E*] rabbitmq_management               3.4.4
[e*] rabbitmq_management_agent         3.4.4
[  ] rabbitmq_management_visualiser    3.4.4
[  ] rabbitmq_mqtt                     3.4.4
[  ] rabbitmq_shovel                   3.4.4
[  ] rabbitmq_shovel_management        3.4.4
[  ] rabbitmq_stomp                    3.4.4
[  ] rabbitmq_test                     3.4.4
[  ] rabbitmq_tracing                  3.4.4
[e*] rabbitmq_web_dispatch             3.4.4
[  ] rabbitmq_web_stomp                3.4.4
[  ] rabbitmq_web_stomp_examples       3.4.4
[  ] sockjs                            0.3.4-rmq3.4.4-git3132eb9
[e*] webmachine                        1.10.3-rmq3.4.4-gite9359c7
```

OK!(｀・ω・´)ｼｬｷｰﾝ

なんとなくビジュアライザーも有効化しておく

```
C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.4.4\sbin>rabbitmq-plugins.bat enable rabbitmq
_management_visualiser
The following plugins have been enabled:
  rabbitmq_management_visualiser

Applying plugin configuration to rabbit@MACHINE... started 1 plugin.
```


以上