Назад | Перейти на главную страницу

ActiveMQ возвращает 503 при доступе к панели администратора

Я использую fusemq, оболочку C для ActiveMQ-CPP.

Проблема в том, что я использую брокера с серверным модулем Apache. Предполагается, что он отправляет сообщение брокеру, чтобы другая программа могла его использовать. У меня есть сценарий, который проверяет все это, и у меня есть журнал в моем модуле, который сообщает мне, было ли сообщение отправлено успешно. Когда Apache запускается как root, а ActiveMQ запускается как root, мой скрипт зависает. В трассировке говорится, что он все еще ждал ответа. Я заметил в своих журналах, что модуль застревает при создании сеанса по умолчанию с брокером. Когда я прохожу через модуль в GDB при тех же обстоятельствах, сообщение отправляется успешно, и панель администратора сообщает, что в моей очереди есть сообщение. Когда модуль запускается, он делает все как пользователь apache, поэтому я подумал, что это проблема. Поэтому я запускаю сервер как обычно и запускаю ActiveMQ как apache. Когда я это делаю, мои журналы говорят мне, что сообщение отправлено успешно, скрипт завершается, но я не могу получить доступ к панели администратора.

Вывод 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 30.05.2013, и это был результат -

time-> Вт 4 июн 08:47:40 2013

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]