【集成RabbitMQ系列之一】在Linux下安装RabbitMQ
获取erlang(RabbitMQ依赖erlang)
erlang网站主页:https://www.erlang.org/
下载地址:https://erlang.org/download/otp_src_25.0.tar.gz
获取RabbitMQ
RabbitMQ网站主页: https://www.rabbitmq.com/
下载地址: https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.10.4/rabbitmq-server-generic-unix-3.10.4.tar.xz
安装OpenSSL
如果不安装OpenSSL,后续安装完成erlang后,打开erlang,执行crypto:start().
命令时会有如下报错:
Eshell V5.10.3 (abort with ^G)
1> crypto:start().
** exception error: undefined function crypto:start/0
2>
=ERROR REPORT==== 12-Mar-2014::17:09:15 ===
Unable to load crypto library. Failed with error:
"load_failed, Failed to load NIF library: '/usr/local/lib/erlang/lib/crypto-3.1/priv/lib/crypto.so: undefined symbol: EC_GROUP_new_curve_GF2m'"
OpenSSL might not be installed on this system.
该报错会导致后续在启动 RabbitMQ 报错 “no such file or directory“,“crypto.app“
如果已经安装完 erlang 后,发现有此问题,可先安装 OpenSSL后,再在erlang的编译目录下执行清理命令make clean
后,重新编译安装erlang即可。
1.下载OpenSSL源码,下载地址http://www.openssl.org/source/openssl-1.0.1f.tar.gz,上传至服务器,建议路径: /usr/local/src
2.解压OpenSSL: tar -zxvf openssl-1.0.1f.tar.gz
3.配置安装路径,不要和已有的OpenSSL目录重复,建议路径为:/usr/local/openssl-1.0.1f
,在解压后的目录中执行 ./config --perfix=/usr/local/openssl-1.0.1f
4.修改配置文件
修改Makefile vi Makefile
,在如下行中,CFLAG行前面添加 -fPIC
CC= gcc
CFLAG=-fPIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
5.编译安装OpenSSL: make && make install
6.如果安装过程中出现如下报错:
smime.pod around line 285: Expected text after =item, not a number
smime.pod around line 289: Expected text after =item, not a number
POD document had syntax errors at /usr/bin/pod2man line 71.
Makefile:544: recipe for target 'install_docs' failed
make: *** [install_docs] Error 255
是由于perl版本较高,OpenSSL 与 perl 不兼容导致的。
可以将文件 /usr/bin/pod2man
中如下代码注释
$parser->parse_from_file (@files);
或者直接删除该文件:rm -f /usr/bin/pod2man
然后重新安装OpenSSL即可。
安装erlang
1.将 erlang 和 RabbitMQ 拷贝至服务器中,建议路径: /usr/local/src
2.安装依赖ncurses-devel: yum install ncurses-devel
3.解压 erlang : tar xf otp_src_25.0.tar.gz
4.配置 erlang,建议安装目录为 /usr/local/erlang25
,因为已经有了 javac,所以不再安装,切换到解压的目录中执行以下命令 : ./configure --with-ssl=/usr/local/openssl-1.0.1f --prefix=/usr/local/erlang25 --without-javac
, /usr/local/openssl-1.0.1f
为OpenSSL的安装目录
5.配置中如果有如下报错:
configure: error: in `/usr/local/software/otp_src_24.3.2/erts':
configure: error: no acceptable C compiler found in $PATH
安装C++编译环境即可:sudo yum install gcc-c++
6.配置中如果有如下报错:
configure: error: Perl version 5 is required to build the emulator!
ERROR: /tmp/otp_src_25.0/erts/configure failed!
安装 perl 编译环境即可:sudo yum install perl
7.出现如下信息,即说明配置成功:
JIT disabled due to lack of compiler with C++17 support
****** DOCUMENTATION INFORMATION ******
documentation :
fop is missing.
Using fakefop to generate placeholder PDF files.
******************************************
8.编译erlang
切换至解压目录,执行make -j
出现如下信息,即编译成功:
make[2]: 离开目录“/tmp/otp_src_25.0/erts/start_scripts”
make[2]: 进入目录“/tmp/otp_src_25.0/erts/start_scripts”
GEN /tmp/otp_src_25.0/bin/start.script
GEN /tmp/otp_src_25.0/bin/start_sasl.script
GEN /tmp/otp_src_25.0/bin/start_clean.script
GEN /tmp/otp_src_25.0/bin/no_dot_erlang.script
make[2]: 离开目录“/tmp/otp_src_25.0/erts/start_scripts”
make[1]: 离开目录“/tmp/otp_src_25.0/erts”
9.安装 erlang
执行 make install
出现如下信息,即安装成功:
ln -s ../lib/erlang/bin/run_erl run_erl
ln -s ../lib/erlang/bin/to_erl to_erl
ln -s ../lib/erlang/bin/dialyzer dialyzer
ln -s ../lib/erlang/bin/typer typer
ln -s ../lib/erlang/bin/escript escript
ln -s ../lib/erlang/bin/ct_run ct_run
10.进入 erlang
切换到安装路径: cd /usr/local/erlang25/bin
执行: ./erl
可以进入到如下 erlang 的 shell 界面,即说明安装成功
Erlang/OTP 25 [erts-13.0] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1]
Eshell V13.0 (abort with ^G)
可以执行命令 crypto:start().
Erlang/OTP 25 [erts-13.0] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1]
Eshell V13.0 (abort with ^G)
1> crypto:start().
ok
安装RabbitMQ
1.解压 RabbitMQ : xz -d rabbitmq-server-generic-unix-3.10.4.tar.xz
,再次解压 RabbitMQ : tar xf rabbitmq-server-generic-unix-3.10.4.tar
2.安装 python 依赖: yum install python -y
安装完成,出现如下提示:
更新完毕:
python.x86_64 0:2.7.5-90.el7
作为依赖被升级:
python-libs.x86_64 0:2.7.5-90.el7
完毕!
3.安装 xmlto: yum install xmlto -y
安装完成,出现如下提示
已安装:
xmlto.x86_64 0:0.0.25-7.el7
作为依赖被安装:
centos-indexhtml.noarch 0:7-9.el7.centos docbook-dtds.noarch 0:1.0-60.el7
docbook-style-xsl.noarch 0:1.78.1-3.el7 flex.x86_64 0:2.5.37-6.el7
lynx.x86_64 0:2.8.8-0.3.dev15.el7 m4.x86_64 0:1.4.16-10.el7
sgml-common.noarch 0:0.6.3-39.el7 xml-common.noarch 0:0.6.3-39.el7
完毕!
4.安装 simplejson : yum install python-simplejson -y
5.启动 RabbitMQ
切换至 RabbitMQ 安装目录:cd /usr/local/rabbitmq/sbin
启动 RabbitMQ : ./rabbitmq-server
如果有如下报错 :
./rabbitmq-server: 第 73 行:exec: erl: 未找到
是由于 erlang 的环境变量配置问题,临时配置 erlang 的环境变量,执行命令,路径为 erlang 的安装路径下的bin目录: export PATH=$PATH:/usr/local/erlang25/bin
,再次启动,启动成功提示如下:
Doc guides: https://rabbitmq.com/documentation.html
Support: https://rabbitmq.com/contact.html
Tutorials: https://rabbitmq.com/getstarted.html
Monitoring: https://rabbitmq.com/monitoring.html
Logs:/usr/local/rabbitmq/var/log/rabbitmq/rabbit@localhost.log
/usr/local/rabbitmq/var/log/rabbitmq/rabbit@localhost_upgrade.log
<stdout>
Config file(s): (none)
Starting broker... completed with 0 plugins.
日志路径:/usr/local/rabbitmq/var/log/rabbitmq/rabbit@localhost.log
6.查看启动的 RabbitMQ : netstat -nap | grep 5672
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 1495/beam.smp
tcp6 0 0 :::5672 :::* LISTEN 1495/beam.smp
7.关闭 RabbitMQ : ./rabbitmqctl stop
提示如下:
Stopping and halting node rabbit@localhost ...
8.永久修改环境变量:
打开文件 vi /etc/profile
在该文件中最后位置添加:
# add erlang path
export PATH=$PATH:/usr/local/erlang25/bin
# add rabbitmq path
export PATH=$PATH:/usr/local/rabbitmq/sbin
执行如下命令,使环境变量立即生效,重启服务器也可以使环境变量生效:source /etc/profile
添加环境变量后,可以通过命令 rabbitmq-server
和 erl
,来直接启动 RabbitMQ 和 erlang
9.后台启动 RabbitMQ : rabbitmq-server -detached
10.查看后台是否启动成功:ps -ef | grep rabbitmq
root 19737 1 0 6月05 ? 00:00:31 /usr/local/erlang25/lib/erlang/erts-13.0/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none -sbwtdcpu none -sbwtdio none -B i -- -root /usr/local/erlang25/lib/erlang -bindir /usr/local/erlang25/lib/erlang/erts-13.0/bin -progname erl -- -home /root -- -pa -noshell -noinput -s rabbit boot -boot start_sasl -syslog logger [] -syslog syslog_error_logger false -kernel prevent_overlapping_partitions false -noshell -noinput
root 28686 19426 0 00:07 pts/0 00:00:00 grep --color=auto rabbit
11.RabbitMQ 默认用户 guest 不支持远程访问,新增配置文件:vi /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.config
,添加如下内容即可支持默认用户guest 远程访问:
[{rabbit, [{loopback_users, []}]}].