オフライン解決Rabbitmq起動報「line 80:erl:command not found」


問題の説明:
新しい環境を配置します。この環境のマシンは外部ネットワークに接続できないと規定されていますので、ラビットmqはオフラインで配置されています。ローカルyumでダウンロードされたrabbitmqに必要なrpmパッケージを手動でこの環境にアップロードするマシンがオフラインで展開されます。すべてのrpmパッケージはローカルオンラインインストールと同じで、ローカルテストマシンでの展開と起動は正常ですが、新しい環境マシンでrabitmqを起動すると、「/usr/lib/rabbiitmq/bin/rabbiitmq-server:line 80:erl:command not found」というエラーが発生します。エラーメッセージは以下の通りです。
[root@host1 ~]# rabbitmq-server
/usr/lib/rabbitmq/bin/rabbitmq-server: line 80: erl: command not found
[root@host1 ~]#
分析プロセス:
1、エラーで「erl:command not found」と言って、単独でerlを実行しましたが、問題がないことが分かりました。
[root@host1 ~]# erl
Erlang/OTP 19 [erts-8.3] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V8.3  (abort with ^G)
1>
2、配置のパスを見ましたが、地元のテスト機の実験時の配置と同じです。経路などは正しいです。
[root@host1 ~]# cat /etc/profile
# /etc/profile
......   #     
  export PATH=$PATH:/usr/local/erlang/bin
  export PATH=$PATH:/usr/lib/rabbitmq/bin
[root@host1 ~]#
3、誤報の文書を直接実行して起動してみてもいいです。サービスも起動できます。
[root@host1 ~]# sh /usr/lib/rabbitmq/bin/rabbitmq-server

              RabbitMQ 3.6.12. Copyright (C) 2007-2017 Pivotal Software, Inc.
  ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/
  ##  ##
  ##########  Logs: /var/log/rabbitmq/[email protected]
  ######  ##        /var/log/rabbitmq/[email protected]
  ##########
              Starting broker...
 completed with 0 plugins.
実行されるスクリプトを起動するのはこのスクリプトではないかもしれませんので、代わりにスクリプトを起動してみたいです。役に立つかもしれません。
解決プロセス:
1、ラビットq-serverコマンドで実行されるスクリプトの位置を見つけました。
[root@host1 ~]# which rabbitmq-server
/sbin/rabbitmq-server
[root@host1 ~]#
2、2つの文書を比較すると、同じファイルではないことが分かります。そこで、実行可能な/usr/lib/rabbiitmq/bin/rabbiitmq-serverをソフトに接続し、/sbinの下に接続して、元の実行エラーの/sbin/rabbiitmq-serverファイルを置き換える。
[root@host1 sbin]# mv /sbin/rabbitmq-server /sbin/rabbitmq-server.bak
[root@host1 sbin]# ln -s /usr/lib/rabbitmq/bin/rabbitmq-server /sbin/rabbitmq-server
3、再度ラヴィットmq-server命令を実行して起動したら、まだエラーが発生していることが分かりました。
[root@host1 sbin]# rabbitmq-server
/sbin/rabbitmq-server: line 22: /sbin/rabbitmq-env: No such file or directory
[root@host1 sbin]#
4、エラーが発生したファイルのrabbiitmq-envをもう一つソフトリンクして/sbinの下にリンクする:
[root@host1 sbin]# ln -s /usr/lib/rabbitmq/bin/rabbitmq-env /sbin/rabbitmq-env
5、ラヴィットmq-server命令を実行してサービスを開始すると、起動できることが分かりました。
[root@host1 sbin]# rabbitmq-server   #            ,Ctrl+c,     。             nohup rabbitmq-server >/dev/null 2>&1 &       

              RabbitMQ 3.6.12. Copyright (C) 2007-2017 Pivotal Software, Inc.
  ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/
  ##  ##
  ##########  Logs: /var/log/rabbitmq/[email protected]
  ######  ##        /var/log/rabbitmq/[email protected]
  ##########
              Starting broker...
 completed with 0 plugins.
そしてプロセスを見ると、プロセスとポート番号はすでに起きています。
[root@host1 sbin]# ps -ef|grep rabbitmq
root     16778     1  0 Jul03 ?        00:32:36 /usr/local/erlang/lib/erlang/erts-8.3/bin/beam.smp -W w -A 128 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/local/erlang/lib/erlang -progname erl -- -home /root -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.12/ebin -noshell -noinput -s rabbit boot -sname rabbit@host-172-51-121-10 -boot start_sasl -config /etc/rabbitmq/rabbitmq -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/var/log/rabbitmq/[email protected]"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/[email protected]"} -rabbit enabled_plugins_file "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/plugins:/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.12/plugins" -rabbit plugins_expand_dir "/var/lib/rabbitmq/mnesia/rabbit@host-172-51-121-10-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/rabbit@host-172-51-121-10" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672 -noshell -noinput
root     27708 25767  0 09:12 pts/1    00:00:00 grep --color=auto rabbitmq
[root@host1 sbin]#
[root@host1 sbin]# netstat -tlunp|grep 15672
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      16778/beam.smp
[root@host1 sbin]#
6、プラグインをインストールする:
[root@host1 sbin]#  rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
  amqp_client
  cowlib
  cowboy
  rabbitmq_web_dispatch
  rabbitmq_management_agent
  rabbitmq_management

Applying plugin configuration to rabbit@host1... started 6 plugins.
[root@host1 sbin]#
[root@host1 sbin]#
特に説明します。本論文のこのような解決方法は、rabitmq-server方法を使ってサービスを開始することができますが、もう一つのservice rabitmq-server startの方法を使って起動します。まだ起動できないことが分かりました。このエラーを報告します。
[root@host1 sbin]# service rabbitmq-server start
Starting rabbitmq-server (via systemctl):  Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.
                                                           [FAILED]
エラーの詳細を表示:
[root@host1 sbin]# systemctl status rabbitmq-server.service
â— rabbitmq-server.service - LSB: Enable AMQP service provided by RabbitMQ broker
   Loaded: loaded (/etc/rc.d/init.d/rabbitmq-server; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2018-07-03 11:26:58 CST; 22s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 10985 ExecStart=/etc/rc.d/init.d/rabbitmq-server start (code=exited, status=1/FAILURE)

Jul 03 11:26:58 host1 systemd[1]: Starting LSB: Enable AMQP service provided by RabbitMQ broker...
Jul 03 11:26:58 host1 su[11076]: (to rabbitmq) root on none
Jul 03 11:26:58 host1 su[11208]: (to rabbitmq) root on none
Jul 03 11:26:58 host1 rabbitmq-server[10985]: Starting rabbitmq-server: FAILED - check /var/log/rabbitmq/startup_{log, _err}
Jul 03 11:26:58 host1 rabbitmq-server[10985]: rabbitmq-server.
Jul 03 11:26:58 host1 systemd[1]: rabbitmq-server.service: control process exited, code=exited status=1
Jul 03 11:26:58 host1 systemd[1]: Failed to start LSB: Enable AMQP service provided by RabbitMQ broker.
Jul 03 11:26:58 host1 systemd[1]: Unit rabbitmq-server.service entered failed state.
Jul 03 11:26:58 host1 systemd[1]: rabbitmq-server.service failed.
[root@host1 sbin]#
エラーログを表示:
[root@host1 sbin]# cat /var/log/rabbitmq/startup_err
erlexec: HOME must be set
[root@host1 sbin]#
この問題はまだ解決方法が見つからないので、後で解決してから補充します。
後記:エラーが発生しました。「/usr/lib/rabitmq/bin/rabitmq-server:line 80:erl:command not found」は、オンラインで多くの解決方法を調べました。2、環境変数を修正し、export HOME=/usr/lib/rabbiitmqのような配置を加えて、この二つの方法を試しました。私の問題に対して効果がないですが、参考にしてください。