最近部署ActiveMQ的时候,发现有的服务器可以打开后台管理网址,有的服务器无法打开,Jetty报503 Service Unavailable。
搞了很久终于发现了问题,现将部署和解决过程做笔记如下:
安装部署步骤:
# 查看是否自带了Java rpm -qa | grep java # 卸载Linux自带的OpenJava yum remove -y java # 或者 rpm -e java # 上传或联网下载JDK 7 rz jdk-7u79-linux-x64.rpm # 或者 wget Oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm rpm -ivh jdk-7u79-linux-x64.rpm java -version vi ~/.bash_profile --------------------------------------------- export JAVA_HOME=/usr/java/jdk1.7.0_79 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar --------------------------------------------- source ~/.bash_profile echo $JAVA_HOME # 上传或联网下载JDK rz apache-activemq-5.12.1-bin.tar.gz # 或者 wget bin.tar.gz tar zxvf apache-activemq-5.12.1-bin.tar.gz mv apache-activemq-5.12.1 /usr/local/activemq # 直接改造activemq原生启动脚本来做服务引导脚本 ln -s /usr/local/activemq/bin/activemq /etc/init.d/ vi /etc/init.d/activemq --------------------------------------------- # 第二行插入 # chkconfig: 345 63 37 # description: Auto start ActiveMQ --------------------------------------------- # 可以设置开机启动了 chkconfig activemq on chkconfig --list activemq # 启动服务看看 service activemq start # 设置防火墙 service iptables status iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 61616 -j ACCEPT iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8161 -j ACCEPT service iptables save service iptables restart
如上部署好以后,就可以正常使用了,默认消息端口是61616,后台管理网址端口8161,直接用浏览器打开后台管理网址,界面如下:
但是在线上服务器部署时就出了问题,无法访问后台管理网站,界面如下:
度娘了很久,没有找到相关的解决办法,后来第N编翻看ActiveMQ官方文档的时候,看到还可以activemq console参数进行前台启动,可能会暴露出错误原因,于是命令如下:
# 先停用activemq service activemq stop # 手动控制台方式启动 /usr/local/activemq/bin/activemq console
于是看到一堆又一堆的输出,向上翻了N屏后最终趴到如下一句错误:
猛然想起我曾经将这个服务器hostname改为dubbo,却没有修改hosts文件!!!
如上所示在hosts中添加主机名dubbo后,正常启动activemq服务,后台管理网址终于正常了。
如此低级到剁手的错误,实属不该!!!
在此将完整修改服务器hostname的步骤记录如下,以此为戒:
# 修改主机名为server1 vi /etc/sysconfig/network --------------------------------- HOSTNAME=server1 --------------------------------- # 修改hosts文件,让服务器认得这个名字 vi /etc/hosts --------------------------------- 127.0.0.1 server1 --------------------------------- # 重启后生效 reboot # 如果暂时不能重启,可以使用如下命令临时生效 hostname server1 # 退出 exit # 重新登陆(SSH重连)就可以看到主机名生效了 [root@server1 ~]#
推荐阅读:
Spring+Log4j+ActiveMQ实现远程记录日志——实战+分析
Ubuntu下的ACTIVEMQ服务器
CentOS 6.5启动ActiveMQ报错解决