如何在 8080 端口上启动 keycloak 2.0?

Posted

技术标签:

【中文标题】如何在 8080 端口上启动 keycloak 2.0?【英文标题】:How to start keycloak 2.0 on 8080 port? 【发布时间】:2018-05-10 12:29:51 【问题描述】:

Keycloak 的默认端口曾经是 8080。现在当我使用

开始 keycloak

./bin/standalone.sh

然后它开始在 9990 端口。 // 所以我猜现在keycloak默认端口是9990。

但有趣的部分是每当我给出明确的 keycloak 端口时,如下所示:

 ./bin/standalone.sh  -Djboss.socket.binding.port-offset=8080

在此密钥斗篷在端口 17101 上启动之后。好诡异。

我正在努力在 8080 端口上启动 keycloak。我该怎么做?

还有一件事:

令人惊讶的是,被称为 undertow 的东西正在 8080 端口上运行。当我尝试启动 keycloak 时,我可以在 stacktrace 中跟踪它:

YUT0006: Undertow HTTP listener default listening on 127.0.0.1:8080

【问题讨论】:

keycloak.org/docs/latest/getting_started/#before-you-start-2 【参考方案1】:

默认端口还是8080,在Keycloak安装目录下签入standalone/configuration/standalone.xml,寻找jboss.http.port。如果要强制端口,请使用-Djboss.http.port=8080。您正在使用 offset 配置。在您的情况下,因为 standalone.xml 似乎已更改,您将 8080 添加到基本端口。

【讨论】:

令人惊讶的是,被称为 undertow 的东西正在 8080 端口上运行。当我尝试启动密钥斗篷时。 YUT0006:Undertow HTTP 侦听器默认侦听 127.0.0.1:8080 - 谢谢,我试过 -Djboss.http.port=8080 但它仍然从 9990 端口开始。 undertow 正在 8080 上监听【参考方案2】:

如果您在不更改任何配置的情况下运行基本的bin/standalone.sh,您的keycloak 服务器将在端口8080 上启动。

我相信让您感到困惑的是您在服务器启动时获得的日志,更具体地说是这部分:

12:25:25,688 INFO [org.jboss.as](控制器引导线程) WFLYSRV0051:管理控制台正在监听http://127.0.0.1:9990

端口9990 不是您的keycloak 服务器,它是WildFly 之一。

您也使用了错误的偏移量。基本上,偏移量是您增加原始端口 (8080) 的数字。

如果您将 offset 设置为 15,您的 keycloak 服务器将在端口 8095 上运行。

另外,在启动keycloak之前,请检查是否有其他进程使用端口8080

lsof -i :8080 

【讨论】:

【参考方案3】:
 ./bin/standalone.sh  -Djboss.socket.binding.port-offset=8080

通过为jboss.socket.binding.port-offset 提供值8080,您将“8080”添加到服务器上的所有端口绑定,这是错误

您可以执行以下操作来解决您的问题。

./standalone.sh -b 0.0.0.0 -Djboss.socket.binding.port-offset=1000

这会将“1000”添加到服务器上的所有portbindings,这避免了端口冲突

【讨论】:

【参考方案4】:

您也可以通过 docker 运行它而不是安装它。更容易将此命令粘贴到项目中的 docker-compose 文件中,如果您想更改端口,您可以轻松完成:


version: ‘3’
volumes:
  Postgres_data:
      driver: local
services:
   postgres:
      image: postgres
      volumes:
           - postgres_data:/var/lib/postgresql/data
      ports:
           - 5432:5432
      environment:
           POSTGRES_DB: keycloak
           POSTGRES_USER: keycloak
           POSTGRES_PASSWORD: password
   keycloak:
       image: jboss/keycloak
       environment:
            DB_VENDOR: POSTGRES
            DB_ADDR: postgres
            DB_DATABASE: keycloak
            DB_USER: keycloak
            DB_SCHEMA: public
            DB_PASSWORD: password
            KEYCLOAK_USER: admin
            KEYCLOAK_PASSWORD: admin
            # Uncomment the line below if you want to specify JDBC             parameters. The parameter below is just an example, and it shouldn’t be used in production without knowledge. It is highly recommended that you read the PostgreSQL JDBC driver documentation in order to use it.
            #JDBC_PARAMS: “ssl=true”
       ports:
            - 8080:8080
       depends_on:
            - postgres

【讨论】:

以上是关于如何在 8080 端口上启动 keycloak 2.0?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 keycloak 上查看登录页面

如何在 Windows 中使用命令提示符在不同的端口而不是 8080 上启动 jenkins?

配置为侦听端口 8080 的 Tomcat 连接器无法启动 - 端口 8080 上没有运行

Docker如何在特定端口(8080)上建立到容器的TCP连接?

当配置设置为另一个时,Idea + Spring Boot + Tomcat 在端口 8080 上启动

应用程序“appname”无法在打开的班次节点应用程序上启动(端口 8080 不可用)