主要参考-activemq-on-ubuntu/,略有补充
1. 下载安装包,建立activemq用户,安装
下载最新的activemq,写此文时为5.7。cd /opt/tar xvzf xxxx/apache-activemq-5.7.0.tar.gzln -s apache-activemq-5.7.0 activemqadduser activemqchown -R activemq.activemq apache-activemq-5.7.0ln -sf /opt/activemq/bin/activemq /etc/init.d/update-rc.d activemq defaults2. 生成并编辑配置文件
/etc/init.d/activemq setup /etc/default/activemq这里面主要有3项需要定制配置: ACTIVEMQ_USER,运行activemq的用户,配置为刚才建立的activemq用户 ACTIVEMQ_DATA,activemq的data路径,存放真正的队列数据等,可以直接加在配置文件开头,目录权限需要为ACTIVEMQ_USER可写 JMX配置,这一项比较麻烦一点,主要是管理activemq的jmx连接配置,不配也能用,但是停activemq就只能是残酷的kill,好像不太安全,所以还是建议配置。可以按照以下内容:
ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099 "ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_CONF}/jmx.password"ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_CONF}/jmx.access"ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.ssl=false"ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote"上面几行配置里都有,只需要把注释去掉就行了。下面另有两行,需要把配置里的注释和未注释对调一下:
ACTIVEMQ_SUNJMX_CONTROL="--jmxurl service:jmx:rmi:///jndi/rmi://127.0.0.1:11099/jmxrmi --jmxuser admin --jmxpassword activemq"#ACTIVEMQ_SUNJMX_CONTROL=""
注意,我上面的配置里把jmxuser和jmxpassword改了,主要是改成了和安装包里的jmx默认用户名密码一致,安全起见,这里最好改成你自己定制的用户名密码,起码把密码改了。这个admin用户的权限在/opt/activemq/conf/jmx.access里,密码配置在/opt/activemq/conf/jmx.password里。这两个文件里的配置要和上面那行JMX URL里配置一致。另外还有重要的一点:
chmod 600 /opt/activemq/conf/jmx.*如果权限不改成只有启动用户能读写的话,activemq直接起不来,而且没有任何地方报错。这样似乎差不多了,但还发现悲剧的一点,尽管上面的URL里配置的是127.0.0.1,activemq停止的时候却还是会去连`hostname`上的JMX,不知道为啥,报个错误类似如下:
Connecting to pid: 8515INFO: failed to resolve jmxUrl for pid:8515, using default JMX url然后就去连接 `hostname`上的JMX了,连不上就等30s然后暴力kill。所以一定要保证hostname是可以连接的,例如在/etc/hosts里配成127.0.0.1,不然activemq停止的时候发现JMX连接不上,还是一样kill。这样就大功告成了,可以启动和停止activemq了:
service activemq startservice activemq stop
打开浏览器可以访问http://[your host]:8161/上的activemq管理界面。
3. LOG的配置 log的配置在/opt/activemq/conf/log4j.properties,自己看一下就知道了,这里就不详述了。