RabbitMQソースコードのコンパイル



Rabbitmq Source Code Compilation



RabbitMQは複数のインストール方法をサポートしています。 RabbitMQソースコードを分析およびデバッグする必要がある場合は、RabbitMQソースコードを使用してコンパイルおよびインストールする必要があります。

RabbitMQはerlang言語に基づいて記述されており、そのソースコードはgithubでホストされています。 Githubのバイナリパッケージは、インストールと使用に直接使用できます。ソースコード圧縮パッケージは、使用する前にコンパイルする必要があります。たとえば、バージョン3.7.17のRabbitMQインストールパッケージへのリンクは次のとおりです。 https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.17 。ここで選択できます rabbitmq-server-3.7.17.tar.xz アーカイブ。圧縮パッケージには、RabbitMQソースコードとその他のソースコード、および依存するRabbitMQプラグインが含まれています。



RabbitMQは、インストール時にerlang / OTPバージョンに依存する必要があるため、RabbitMQの公式ドキュメントに対応する手順があります。 https://www.rabbitmq.com/which-erlang.html



ここでは、RabbitMQバージョン3.7.17をインストールし、erlangバージョン22.0.6、リンクを介して渡すことができるerlangバージョンを選択します:http://35.244.242.82/yum/rabbitmq_erlang/el7/x86_64/。 erlang-22.0.6-1.el7.x86_64.rpmパッケージをダウンロードしてインストールします。

RabbitMQのソースコードをコンパイルする手順には、RabbitMQの公式ドキュメントに対応するリンクがあります。 https://www.rabbitmq.com/build-server.html

以下は、RabbitMQのソースコードコンパイルプロセスです。ここでは、RabbitMQのインストールプロセスのみがソースコードからコンパイルされています。 erlangがRabbitMQに依存するパッケージは、rpmパッケージ(ここで使用されるcentosシステム)を介して直接インストールされます。



1erlangをインストールします

[root@xxxxx rabbitmq]# yum install erlang-22.0.6-1.el7.x86_64.rpm -y

2コンパイルメイク

Linuxインストールのmakeバージョンはデフォルトで3.8であるため、RabbitMQソースコードをコンパイルする場合、make 4バージョンの要件が必要であり、make4バージョンを使用するためにコンパイルする必要があります。

make4.2バージョンをダウンロードします。リンクは次のとおりです。 https://ftp.gnu.org/gnu/make/

2.1gccをインストールする

[root@xxxxx rabbitmq]# yum install gcc -y

2.2コンパイルmake4.2

[root@xxxxx rabbitmq]# tar -zxvf make-4.2.tar.gz [root@xxxxx rabbitmq]# cd make-4.2 [root@xxxxx make-4.2]# ./configure [root@xxxxx make-4.2]# make && make install

2.3 make3.8コマンドを置き換えます

[root@xxxxx make-4.2]# which make [root@xxxxx make-4.2]# mv /usr/local/bin/make /usr/local/bin/make_bk [root@xxxxx make-4.2]# cp make /usr/local/bin/

2.4makeがバージョン4.2であることを確認します

[root@xxxxx make-4.2]# make -v GNU Make 4.2 Built for x86_64-pc-linux-gnu Copyright (C) 1988-2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

3エリクサーをコンパイルする

githubからelixirをダウンロードしてコンパイルします。リンクは次のとおりです。 https://github.com/elixir-lang/elixir 、インストール方法は次のリンクからインストールできます。 http://www.jeramysingleton.com/install-erlang-and-elixir-on-centos-7-minimal/

[root@xxxxx rabbitmq]# unzip elixir-master.zip [root@xxxxx rabbitmq]# mv elixir-master elixir [root@xxxxx rabbitmq]# cp -r elixir /opt/ [root@xxxxx rabbitmq]# cd /opt/elixir [root@xxxxx elixir]# make clean test [root@xxxxx elixir]# ln -s /opt/elixir/bin/iex /usr/local/bin/iex [root@xxxxx elixir]# ln -s /opt/elixir/bin/mix /usr/local/bin/mix [root@xxxxx elixir]# ln -s /opt/elixir/bin/elixir /usr/local/bin/elixir [root@xxxxx elixir]# ln -s /opt/elixir/bin/elixirc /usr/local/bin/elixirc

4RabbitMQをコンパイルします

[root@xxxxx rabbitmq]# tar -xvf rabbitmq-server-3.7.17.tar.xz [root@xxxxx rabbitmq-server-3.7.17]# cd rabbitmq-server-3.7.17 [root@xxxxx rabbitmq-server-3.7.17]# make all

コンパイルプロセス中にエラーが発生した場合は、通常、コマンドまたはpkgが欠落しているため、コンパイルする前に、対応するバージョンのコマンドまたはpkgをインストールする必要があります。

5RabbitMQを確認します

RabbitMQが正常にコンパイルされたら、RabbitMQ関数が正常であるかどうかを確認する必要があります。

[root@xxxxx rabbitmq-server-3.7.17]# cd deps/rabbit/scripts/ [root@xxxxx scripts]# ./rabbitmq-server ## ## ## ## RabbitMQ 3.7.17. Copyright (C) 2007-2019 Pivotal Software, Inc. ########## Licensed under the MPL. See https://www.rabbitmq.com/ ###### ## ########## Logs: /var/log/rabbitmq/root@xxxxx /var/log/rabbitmq/root@xxxxx_upgrade.log Starting broker... completed with 0 plugins.

ここでRabbitMQを起動するのは正常です。関数が正常であるかどうかは、rabbitmqctlコマンドで確認できます。 RabbitMQプロセスを終了する代わりに、ctrl + cを実行しますが、バックグラウンドで実行します。

[root@xxxxx scripts]# ./rabbitmqctl cluster_status Cluster status of node root@xxxxx ... [{nodes,[{disc,[root@xxxxx]}]}, {running_nodes,[root@xxxxx]}, {cluster_name,<<'root@xxxxx'>>}, {partitions,[]}, {alarms,[{root@xxxxx,[]}]}]

RabbitMQ関数は正常です。次に、rabbitmq-managementプラグインを有効にして、RabbitMQインターフェイスにアクセスできるようにします。

[root@xxxxx rabbitmq-server-3.7.17]# make run-broker

次に、別のウィンドウを開き、次のコマンドを実行します。

[root@xxxxx ~]# mkdir /etc/rabbitmq [root@xxxxx ~]# cp /tmp/rabbitmq-test-instances/rabbit/enabled_plugins /etc/rabbitmq/ [root@xxxxx ~]# cd /home/rabbitmq/rabbitmq-server-3.7.17 [root@xxxxx rabbitmq-server-3.7.17]# cp -r plugins deps/rabbit/

Ctrl + Cでmakerun-brokerコマンドを閉じてから、次のコマンドを実行します。

[root@xxxxx rabbitmq-server-3.7.17]# cd deps/rabbit/scripts/ [root@xxxxx scripts]# ./rabbitmq-server ## ## ## ## RabbitMQ 3.7.17. Copyright (C) 2007-2019 Pivotal Software, Inc. ########## Licensed under the MPL. See https://www.rabbitmq.com/ ###### ## ########## Logs: /var/log/rabbitmq/root@xxxxx /var/log/rabbitmq/root@xxxxx_upgrade.log Starting broker... completed with 32 plugins.

この時点で、32個のプラグインが開いていることがわかります。プラグインは、cat / etc / rabbitmq / enabled_pluginsコマンドを実行して表示できます。 32個のプラグインにはrabbitmq-managementプラグインが含まれているため、RabbitMQインターフェースにアクセスでき、そのポートは15672ポートです。インターフェイスは次のとおりです。

6まとめ

RabbitMQソースコードのコンパイルは、RabbitMQの学習、分析、または開発に役立ちます。 RabbitMQコードフローを学習するときは、ソースコードにデバッグログを追加することで分析できます。後で、dbgデバッグツールを使用してRabbitMQを分析するコードフローを紹介します。