はじめに
みなさんミドルウェアのインストールってどうしてます? わたしはディストリビューションのパッケージで用意されているのもをそのままインストールしています。 わたしの場合、CentOS なので yum でインストールすることになるのですが yum でインストールするとだいたい最新のものでなかったりします。 わたしはどちらかというと開発者寄りなので、とりあえず開発ができれば少々古くても気になりません。 ところが yum で提供されていなかったりすると非常に困ってしまいます。 また、どうしても最新のものが使いた場合も同様です。 さぁどう考えるか?
まず他にだれか Repository を公開してくれていないか探します。 PostgreSQL は本家のサイトで最新の Repository を公開してくれているので助かります。 Samba4 は以前 SerNet というところのが使えたのですが 4.3 系から有償になったので使えません。
yum の Repository が見つからなかった場合、rpm を探します 無ければ泣く泣くソースからインストールになります。 手順どうりやればソースからインストールしても全然問題ないのですが わたしの場合、Makefile の管理が悪いのでバーションアップに困って OS からやり直す場合が多いです。 (最近は VM を使っていたりするので OS からやり直すことは少なくなりました。 まぁ開発機なのでこれもOKかなと...
RabbitMQ は、EPEL で提供されているようですが 今回は、RabbitMQ の本家のサイトにある最新の rpm を利用しようと思います。 rpm はビルドこそしなくていいものの、その依存関係まではみてくれません。 RabbitMQ の場合、Erlang が依存関係にあるので 先にインストールしておくか、一緒にインストールしないといけません。 実際、この依存関係を調べるのもなかなかだったりします。 なにか、こう、一撃でインストールできる方法はないかと考えていたところ yum の LocalRepository に至った訳です。
今回は、LocalRepository を使った RabbitMQ のインストールと ユーザ設定などを中心に進めていきたいと思います。 ではでは!Getting Started!
環境
IP | 192.168.10.110 |
---|---|
ミドルウェア |
RabbitMQ server 3.6.1
ユーザ : user01 パスワード : passwd |
Apache 2.4.6 | |
OS | CentOS-7-x86_64-Minimal-1511.iso VirtualBox 5.0.16 |
LocalRepository の作成
repository 作成のために creatrepo コマンドと LocalRepository を内部ネットワーク向けに PrivateRepository として公開したいので Apache もインストールします。
yum install createrepo httpd
repository用のディレクトリを作成します。
mkdir -p /var/www/repo/centos/7/x86_64/rpms
場所はどこでもいいのですが、今回は、Apache のディレクトリの中に作成しました。
repository を作成します。
createrepo /var/www/repo/centos/7/x86_64
LocalRepository の作成としてはこんな感じです。
LocalRepository を yum の repository に追加します。
local.repo ファイルを以下のような内容で作成します。/etc/yum.repos.d/local.repo
[local] name=CentOS-$releasever - local baseurl=file:///var/www/repo/centos/$releasever/$basearch enabled=1 gpgcheck=0 protect=1
repo ファイルで使える変数
以下の変数が使えるようです。
-
- $releasever
- Red Hat Linux のリリースバージョン
- $basearch
- システムのベースアーキテクチャー
i686 と i586 は i386
AMD64 と Intel64 は x86_64 など - $arch
- CPU アーキテクチャー
i586、i686、x86_64 など
以下のコマンドでリポジトリ一覧に LocalRepository が追加されていれば OK です。
LANG=C yum repolist repo id repo name status ... local/7/x86_64 CentOS-7 - local 0 ...
PrivateRepository の作成
今度は、内部ネットワーク向けの PrivateRepository を作成したいと思います。 Repository のディレクトリは、先ほど作成した LocalRepository を流用します。 Repository のディレクトリを公開ディレクトリにする訳ですが Apache の公開ディレクトリの設定方法にはいろいろあると思います。 今回は、手っ取り早く Apache の DocumentRoot の下に LocalRepository のディレクトリのシンボリックリンクを張ります。
ln -s /var/www/repo/centos /var/www/html/centos
念のため Apache を再起動します。
systemctl enable httpd systemctl restart httpd
PrivateRepository の private.repo ファイルを以下のような内容で作成します。/etc/yum.repos.d/private.repo
[private] name=CentOS-$releasever - private baseurl=http://192.168.10.110/centos/$releasever/$basearch enabled=1 gpgcheck=0 protect=1
リポジトリ一覧に追加されているか確認します。
LANG=C yum repolist repo id repo name status ... private/7/x86_64 CentOS-7 - private 0 ...
RabbitMQ のインストール
Repository が完成したところで RabbitMQ をインストールしたいと思います。 LocalRepository と PrivateRepository のどちらを使ってもいいと思います。
Erlang が依存関係にあるのですが、これが EPEL での提供になっているようなので 先に EPEL の Repository を追加します。
yum install epel-release.noarch
RabbitMQ の rpm をダウンロードしてきて Local/PrivateRepository のディレクトリに置きます。
cd /var/www/repo/centos/7/x86_64/rpms curl -o rabbitmq-server-3.6.1-1.noarch.rpm \ http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-3.6.1-1.noarch.rpm
Erlang のインストール
わたしの場合、Erlang は最新でなくても気にならないので EPEL のものにしました。 気になる場合はLocal/PrivateRepository に最新のものを持ってきて 一緒にインストールするのもよいと思います。
createrepo コマンドで Repository を再設定します。
createrepo /var/www/repo/centos/7/x86_64
yum のキャッシュをクリアします。
yum clean all
後は yum で RabbitMQ をインストール します。
yum install rabbitmq-server
サービスの設定をして終わりです。
systemctl enable rabbitmq-server systemctl start rabbitmq-server
rabbitmqctl コマンドで RabbitMQ の設定
ユーザを作成します。
rabbitmqctl add_user user01 passwd
user01 ユーザを作成してパスワードを passwd にしています。
作成したユーザがリソースにアクセスできるように権限を付与します。
rabbitmqctl set_permissions -p / user01 ".*" ".*" ".*"
user01 がすべてのリソースに対して write と read の権限を付与しています。
ユーザ一覧、パスワード変更、削除など。
rabbitmqctl list_users rabbitmqctl change_password user01 newpasswd rabbitmqctl delete_user user01
ユーザタグの設定と削除。
rabbitmqctl set_user_tags user01 administrator rabbitmqctl set_user_tags user01 administrator test rabbitmqctl set_user_tags user01
権限一覧、ユーザ権限一覧、権限取り消しなど。
rabbitmqctl list_permissions -p / rabbitmqctl list_user_permissions user01 rabbitmqctl clear_permissions -p / user01
Queue、Exchange、Binding の一覧。
rabbitmqctl list_queues -p / name durable messages rabbitmqctl list_exchanges -p / name durable type rabbitmqctl list_bindings -p / source_name source_kind destination_name destination_kind routing_key
詳しいコマンドのパタメータについては man 参照。
ManagementPlugin を有効にする
Queue や Exchange などを Web 画面から管理できる ManagementPlugin を有効にします。
rabbitmq-plugins enable rabbitmq_management
Web の管理コンソール を利用できるように tag を使ってユーザに Role を設定します。
rabbitmqctl set_user_tags user01 administrator
Web の管理コンソールを開く前に一旦、RabbitMQ サーバーを再起動させます。
systemctl stop rabbitmq-server systemctl start rabbitmq-server
ブラウザから「http://192.168.10.110:15672/」にアクセスします。 先ほどの Role を設定したユーザでログインできれば OK です。
CommandLineTool も合わせてインストールしておきます。 インストール方法としては、Web の管理コンソールのページから rabbitmqadmin のスクリプトを ダウンロードしてきて /usr/local/bin に置くといった流れになります。
cd /usr/local/bin curl -o rabbitmqadmin http://localhost:15672/cli/rabbitmqadmin chmod 755 rabbitmqadmin
各コマンドのヘルプが表示されればインストールは、OK です。
rabbitmqadmin --help rabbitmqadmin help subcommands rabbitmqadmin help config
さらに CommandLineTool の bash 補完を有効にしておきます。 bash-completion がインストールされていない場合は、yum でインストールした後、 CommandLineTool の bash 補完を有効にします。
yum install bash-completion
rabbitmqadmin --bash-completion > /etc/bash_completion.d/rabbitmqadmin
再ログイン後に有効になるようです。
以下のように入力して
rabbitmqadmin he
「TAB」キーを押すと
rabbitmqadmin help
のように補完されれば OK です。
おわりに
とりあえず、わたしの Makefile 紛失問題は解決しそうです。 rpm の管理もいい感じに yum で一元化できるかなぁと思いました。
- 参考URL
- https://wiki.centos.org/HowTos/CreateLocalRepos
- http://www.serverlab.ca/tutorials/linux/network-services/creating-a-yum-repository-server-for-red-hat-and-centos/
- https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Using_Yum_Variables.html
- http://www.rabbitmq.com
- http://www.rabbitmq.com/man/rabbitmqctl.1.man.html