配置 keycloak.service 以在 rhel 中将 keycloak 18.0.2 作为守护进程运行

问题描述 投票:0回答:4

我尝试在 systemd 中配置 keycloak.service 以将 keycloak 18.0.2 作为守护进程运行。当前文件夹符号链接到 kk 文件夹。我尝试在端口 8180 上以开发模式启动 kk

[Unit]
Description=Keycloak
After=network.target
 
[Service]
Type=idle
User=keycloak
Group=keycloak
ExecStart=/opt/keycloak/current/bin/kc.sh start-dev --http-port=8180 
TimeoutStartSec=600
TimeoutStopSec=600
 
[Install]
WantedBy=multi-user.target

但是没用。 如果我只是跑

bin/kc.sh start-dev --http-port=8180 

它工作正常,但不是作为守护进程

keycloak daemon rhel
4个回答
1
投票

解决问题。正确的配置是:

[Unit]
Description=Keycloak
After=network.target
 
[Service]
User=keycloak
Group=keycloak
ExecStart=/opt/keycloak/current/bin/kc.sh start-dev --http-port=8180 

 
[Install]
WantedBy=multi-user.target

确保正确的用户拥有所有需要的权限

chown keycloak: -R /opt/keycloak

0
投票

您缺少运行 keycloak 的配置文件,另一种解决方案是直接将文件复制到:

~/keycloak/docs/contrib/scripts/systemd/wildfly.service
到您的
/etc/systemd/system/
目录,无论哪种方式,您的 deamon 文件都应如下所示:

[Unit]
Description=The Keycloak Server
After=network.target


[Service]
EnvironmentFile=/etc/keycloak/keycloak.conf
User=keycloak
Group=keycloak
PIDFile=/var/run/keycloak/keycloak.pid
ExecStart=/opt/keycloak/bin/launch.sh $WILDFLY_MODE $WILDFLY_CONFIG $WILDFLY_BIND
StandardOutput=null


[Install]
WantedBy=multi-user.target

0
投票

你应该在commnd之前添加,它会像这样工作:

ExecStart=!/opt/keycloak/current/bin/kc.sh start-dev --http-port=8180

0
投票

最好将 systemd 服务配置为使用

Type=notify
而不是默认的
Type=simple
.

使用

Type=simple
,服务管理器(systemd)将认为服务在服务进程被fork掉后立即启动,即使它未能正确启动。在使用
Type=notify
时,服务管理器将等待服务进程的信号通知以将其视为已启动。

你可以通过使用这个 quarkiverse 扩展来实现:


配置Keycloak systemd服务的步骤:

假设Keycloak分布位于

/opt/keycloak

  1. 将以下jar文件添加到
    /opt/keycloak/providers
    目录:
  1. /etc/systemd/system/keycloak.service
    :
  2. 创建单元配置文件
[Unit]
Description=Keycloak Server
After=network.target
Wants=network.target

[Service]
Type=notify
NotifyAccess=all
Environment=JAVA_HOME=/opt/jre
ExecStart=/opt/keycloak/bin/kc.sh start-dev --http-port=8080 --log=console,file --log-file=/var/log/keycloak/keycloak.log
SuccessExitStatus=0 143

[Install]
WantedBy=multi-user.target
  1. 启用服务(这也将使其在系统启动时运行):
sudo systemctl enable keycloak
  1. 启动/停止/重启服务:
sudo systemctl start keycloak
sudo systemctl stop keycloak
sudo systemctl restart keycloak
  1. 检查服务状态:
sudo systemctl status keycloak
© www.soinside.com 2019 - 2024. All rights reserved.