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を分析するコードフローを紹介します。