如何在8080端口启动keycloak 2.0?

How to start keycloak 2.0 on 8080 port?

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

启动 keycloak 时

./bin/standalone.sh

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

但有趣的是,每当我给出如下所示的显式密钥斗篷端口时:

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

此密钥斗篷在端口 17101 上启动后。太奇怪了。

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

还有一件事:

令人惊讶的是,在 8080 端口上 运行 有一个叫做 undertow 的东西。当我尝试启动 keycloak 时,我可以在堆栈跟踪中进行跟踪:

YUT0006: Undertow HTTP listener default listening on 127.0.0.1:8080

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

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

上启动

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

12:25:25,688 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990

端口 9990 不是你的 keycloak 服务器,它是 WildFly 的一个。

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

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

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

lsof -i :8080 
 ./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,从而避免端口冲突

您也可以通过 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