访问管理面板时 ActiveMQ 返回 503

访问管理面板时 ActiveMQ 返回 503

我正在使用 fusemq,ActiveMQ-CPP 的 C 包装器。

问题是我正在使用带有 Apache 服务器模块的代理。它应该向代理发送一条消息,以便另一个程序可以使用它。我有一个测试所有这些的脚本,并且我的模块中有日志记录,告诉我消息是否已成功发送。当 Apache 以 root 身份正常启动并且 ActiveMQ 以 root 身份启动时,我的脚本会卡住。回溯表明它仍在等待响应。我在日志中注意到模块卡在与代理创建默认会话时。当我在相同情况下在 GDB 中逐步执行模块时,消息已成功发送,并且管理面板显示我的队列中有一条消息。当模块运行时,它会以 apache 用户的身份执行所有操作,所以我认为这就是问题所在。因此,我正常启动服务器并以 apache 身份运行 ActiveMQ。当我这样做时,我的日志告诉我消息已成功发送,脚本已完成,但我无法访问管理面板。

activemq.log输出的503:

2013-05-28 13:47:51,823 | WARN  | Committed before 503 null | org.eclipse.jetty.server.Response | qtp1146944158-23
2013-05-28 13:47:51,824 | WARN  | /admin/ | org.eclipse.jetty.server.AbstractHttpConnection | qtp1146944158-23
java.lang.IllegalStateException: Committed
     at org.eclipse.jetty.server.Response.resetBuffer(Response.java:1126)
     at org.eclipse.jetty.server.Response.sendError(Response.java:313)
     at org.eclipse.jetty.server.Response.sendError(Response.java:415)
     at org.eclipse.jetty.server.handler.ContextHandler.checkContext(ContextHandler.java:820)
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:916)
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
     at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:521)
     at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
     at org.eclipse.jetty.server.Server.handle(Server.java:363)
     at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:483)
     at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:920)
     at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:982)
     at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
     at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
     at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
     at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:627)
     at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:51)
     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
     at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
     at java.lang.Thread.run(Thread.java:722)

编辑:我现在正在服务器上重新运行我的脚本,此时 ActiveMQ 以 apache 身份运行,服务器为 root,并且脚本挂起。它卡在创建默认会话上。当我在 GDB 中逐步执行时,它仍然有效...

编辑:我运行了 setenforce 0,一切正常。不知道为什么会这样。有什么想法吗?

编辑:我运行了 ausearch -m avc -ts 05/30/2013,输出结果如下 -

时间->2013 年 6 月 4 日星期二 08:47:40

type=SYSCALL msg=audit(1370357260.183:29896): arch=c000003e syscall=21 success=no exit=-13 a0=c050b0 a1=7 a2=20 a3=a0 items=0 ppid=2618 pid=2633 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=2 comm="gdm-session-wor" exe="/usr/libexec/gdm-session-worker" subj=system_u:system_r:xdm_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1370357260.183:29896): avc:  denied  { read } for  pid=2633 comm="gdm-session-wor" name="root" dev=dm-0 ino=1835009 scontext=system_u:system_r:xdm_t:s0-s0:c0.c1023 tcontext=system_u:object_r:admin_home_t:s0 tclass=dir

答案1

好吧,我设法弄清楚了这个问题,以防有人偶然发现这个问题并感到好奇。

我再次启用 selinux,并将端口 61616(用于 openwire 连接的端口)、61613(用于 stomp 连接的端口)和 8161(用于管理控制台的端口)添加到 http_port_t 的允许列表中。

我使用以下命令:

semanage port -a -t http_port_t -p tcp [port number]

相关内容