Apache-2.2

訪問管理面板時 ActiveMQ 返回 503

  • June 4, 2013

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

問題是我正在使用帶有 Apache 伺服器模組的代理。它應該向代理髮送消息,以便另一個程序可以使用它。我有一個測試所有這些的腳本,並且我登錄了我的模組,告訴我消息是否發送成功。當 Apache 以 root 身份正常啟動並且 ActiveMQ 以 root 身份啟動時,我的腳本卡住了。回溯說它仍在等待響應。我在日誌中註意到該模組在與代理創建預設會話時卡住了。當我在相同的情況下單步執行 GDB 中的模組時,消息已成功發送,並且管理面闆說我的隊列中有一條消息。當模組執行時,它以 apache 使用者的身份執行所有操作,所以我認為這就是問題所在。所以我正常啟動伺服器並將ActiveMQ作為apache執行。

來自 503 的 activemq.log 輸出:

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

好吧,我設法找出問題所在,以防偶然發現此問題的任何人感到好奇。

我再次啟用了 selinux,並將埠 61616(用於 openwire 連接的埠)、61613(用於 stomp 連接的埠)和 8161(用於管理控制台的埠)添加到 http_port_t 的允許列表中。

我使用了命令:

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

引用自:https://serverfault.com/questions/511978