서버 재기동시 keycloak 자동 실행

1. Service 생성

  • 경로 : /usr/lib/systemd/system
  • 명령어 : vi keycloak.service

keycloak.service 코드

[Unit]
Description=Keycloak Server
After=syslog.target network.target postgresql.service

[Service]
Type=simple
User=keycloak
Group=keycloak
WorkingDirectory=/apps/keycloak-7.0.1/bin
ExecStart=/apps/keycloak-7.0.1/bin/standalone.sh -b 0.0.0.0
Environment=KEYCLOAK_HOME=/apps/keycloak-7.0.1
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64

[Install]
WantedBy=multi-user.target

 

코드 설명

  1. [Unit]
    1. Description : 해당 서비스에 대한 설명
    2. After : 서비스가 언제 실행될지에 대해 정할 수 있는 부분
      1. syslog.target : 시스템 로그에 관련된 것이 설정된 후
      2. network.target : 네트워크가 연결된 후
      3. postgresql.service : keycloak 실행시 DB가 실행되어있어야 해서 postgresql을 실행하는 service를 만들고, DB가 실행되면 keycloak이 실행되도록 구성
  2. [Service]
    1. Type : keycloak의 `standalone.sh` 스크립트는 자체적으로 백그라운드로 전환되므로 simple 사용
    2. User : keycloak을 실행하는 유저
    3. Group : keycloak을 실행할 그룹
    4. WorkingDirectory : keycloak 실행에 필요한 디렉토리 명시
    5. ExecStart : keycloak을 실행하는 명령어
    6. Environment : Keycloak 실행에 필요한 환경 변수 설정
      ( 기존에는 `nohup ./standalone.sh -b 0.0.0.0 &`로 실행 했는데 `nohup`과 `&`를 사용하는 방식은 `systemd`와 잘 맞지 않는다고 해서 실행 명령어가 다름)
  3. [Install]
    1. WantedBy : 서비스 run level을 설정하는 부분 (`multi-user.target`은 다중 사용자)

 

 

2. 서비스 활성화

sudo systemctl enable keycloak.service

 

 

3. 서버 재시작

sudo systemctl reboot

 

 

4. 기타 명령어

서비스 상태 확인

sudo service keycloak status

 

 

서비스 확인

systemctl