- 获取erlang(RabbitMQ依赖erlang)
- 获取RabbitMQ
- 安装OpenSSL
- 安装erlang
- 安装RabbitMQ
erlang网站主页:https://www.erlang.org/
下载地址:https://erlang.org/download/otp_src_25.0.tar.gz
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,后续安装完成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即可。
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.logConfig 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, []}]}].



