Compilation de code source RabbitMQ

Rabbitmq Source Code Compilation



RabbitMQ prend en charge plusieurs méthodes d'installation. Si vous avez besoin d'analyser et de déboguer le code source de RabbitMQ, vous devez utiliser le code source de RabbitMQ pour compiler et installer.

RabbitMQ est écrit en utilisant le langage erlang et son code source est hébergé sur github. Le package binaire sur Github peut être directement utilisé pour l'installation et l'utilisation, et le package de compression du code source doit être compilé avant de pouvoir être utilisé. Par exemple, le lien vers le package d'installation de RabbitMQ pour la version 3.7.17 est: https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.17 . Ici, nous pouvons choisir rabbitmq-server-3.7.17.tar.xz Archiver. Le package compressé comprend le code source RabbitMQ et d'autres codes sources et les plugins RabbitMQ dont il dépend.



Puisque RabbitMQ doit s'appuyer sur la version erlang / OTP lors de son installation, il existe des instructions correspondantes dans la documentation officielle de RabbitMQ: https://www.rabbitmq.com/which-erlang.html





Ici, nous choisissons d'installer RabbitMQ version 3.7.17, et choisissons erlang version 22.0.6, version erlang que nous pouvons passer par le lien: http://35.244.242.82/yum/rabbitmq_erlang/el7/x86_64/. Nous téléchargeons et installons le package erlang-22.0.6-1.el7.x86_64.rpm.

Les étapes de compilation du code source de RabbitMQ ont des liens correspondants dans la documentation officielle de RabbitMQ: https://www.rabbitmq.com/build-server.html

Voici le processus de compilation du code source de RabbitMQ. Ici, seul le processus d'installation de RabbitMQ est compilé à partir du code source. Les packages dont erlang dépend de RabbitMQ sont directement installés via le package rpm (système centos utilisé ici).



1 Installez erlang

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

2 Compilez make

Comme la version make de mon installation Linux est 3.8 par défaut, lors de la compilation du code source de RabbitMQ, l'exigence de la version make 4 est requise, donc la version make 4 doit être compilée pour être utilisée.

Téléchargez la version 4.2, le lien est: https://ftp.gnu.org/gnu/make/

2.1 Installer gcc

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

2.2 Compiler make 4.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 Remplacer la commande make 3.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.4 Vérifiez que make est la version 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 Compiler l'élixir

Téléchargez elixir depuis github pour compiler, le lien est: https://github.com/elixir-lang/elixir , La méthode d'installation peut être installée par le lien suivant: 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

4 Compilez RabbitMQ

[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

Si vous rencontrez une erreur pendant le processus de compilation, la commande ou pkg est généralement manquant et vous devez installer la version correspondante de la commande ou de pkg avant la compilation.

5 Vérifiez RabbitMQ

Une fois le RabbitMQ compilé avec succès, vous devez vérifier si la fonction RabbitMQ est normale.

[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.

Démarrer RabbitMQ ici est normal, si la fonction est normale, nous pouvons vérifier via la commande rabbitmqctl. Exécutez ctrl + c, au lieu de terminer le processus RabbitMQ, mais laissez-le s'exécuter en arrière-plan.

[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,[]}]}]

La fonction RabbitMQ est normale. Ensuite, nous activons le plugin rabbitmq-management pour lui permettre d'accéder à l'interface RabbitMQ.

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

Ensuite, ouvrez une autre fenêtre et exécutez la commande suivante:

[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 ferme la commande make run-broker, puis exécute la commande suivante:

[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.

À ce stade, nous voyons 32 plugins ouverts, les plugins peuvent exécuter la commande cat / etc / rabbitmq / enabled_plugins pour afficher. Les 32 plugins incluent le plugin rabbitmq-management, afin que nous puissions accéder à l'interface RabbitMQ, et son port est le port 15672. L'interface est la suivante:

6 Résumé

La compilation du code source de RabbitMQ est utile pour apprendre et analyser ou développer RabbitMQ. Lors de l'apprentissage du flux de code RabbitMQ, vous pouvez l'analyser en ajoutant des journaux de débogage au code source. Plus tard, nous présenterons le flux de code d'analyse de RabbitMQ à l'aide de l'outil de débogage dbg.