[Linux] Linux에서 SpringBoot jar 파일 서비스 등록해 자동실행 되게 하기(+ 서비스 관련 기본 명령어들)

    [Linux] Linux에서 SpringBoot jar 파일 서비스 등록해 자동실행 되게 하기(+ 서비스 관련 기본 명령어들)

    서비스 등록을 위한 설정 파일 작성하기

    1. 서비스 만들기

    vi /etc/systemd/system/${service name}.service
    [Unit]
    Description=Service Description
    After=syslog.target network.target postgresql.service
    
    [Service]
    ExecStart=/bin/bash -c "exec java -jar /usr/local/server/test.jar"
    Restart=on-failure
    RestartSec=10
    
    User=root
    Group=root
    
    [Install]
    WantedBy=multi-user.target

     

    1. [Unit]

    1.1 Description

    Description=Service Description
    이건 말 그대로 해당 서비스에 대한 설명이다. 추후 서비스를 실행하고 서비스의 status를 확인했을 때 표시되는 등 해당 서비스가 어떤 서비스인지에 대해 설명을 작성하면 된다.

    1.2 After


    After=syslog.target network.target postgresql.service
    서비스가 언제 실행될지에 대해 정할 수 있는 부분이다. 서비스가 실행되기 전에 먼저 설정되어야하는 것들이나 실행되어야 하는 것들이 있을 경우 설정한다.

    - syslog.target: 시스템 로그 관련된 것이 잘 설정된 후를 의미한다.

    - network.target: 네트워크가 연결된 후를 의미한다.

    - postgresql.service: 이 부분은 커스텀으로 넣은 부분으로 백엔드 서버가 postgresql DB와 연결해서 사용하는지라 postgresql 서비스가 시작된 후를 위해서 넣어봤다.

    2. [Service]

    2.1 ExecStart

    ExecStart=/bin/bash -c "exec java -jar /usr/local/server/test.jar"
    이 부분이 바로 jar 파일을 실행시키는 부분이다. '/bin/bash -c'를 입력하고 "exec "(쌍따옴표) 뒤에 해당 jar 파일을 실행시키는 명령어를 입력하면 된다. 참고로 현재까지 jar 파일을 수동으로 실행시킬 때는 백그라운드에서 실행시키기 위해서 nohup과 &를 사용했었는데 여기서는 그럴 필요 없이 그냥 입력해주면 된다.

    2.2 Restart

    Restart=on-failure
    서비스가 언제 다시 시작할지에 대한 것을 설정할 수 있는 부분이다.

    'on-failure'는 서비스를 실행시키는데 실패하면 다시 시작시키겠다는 의미의 설정이다.

    그 밖에 'always'와 같은 다른 설정도 있다. 참고로 'always'의 경우는 서비스가 정상 종료되었다 해도 'on-failure'와 다르게 다시 시작하겠다는 뜻이다.

    기본 값은 no로 서비스를 재시작하지 않겠다고 설정되어 있다.

    2.3 RestartSec

    RestartSec=10
    서비스를 다시 시작하기 전에 몇 초동안 잠시 기다릴지에 대한 설정이다. 나는 10초로 조금 텀을 뒀지만 1초로 설정해놔도 무방하다.

    기본 값은 100ms이다.


    2.4 User, Group

    User=root
    Group=root
    이건 해당 서비스를 실행하기 위한 권한이다.

    3. [Install]

    3.1 WantedBy


    WantedBy=multi-user.target
    서비스 run level을 설정하는 부분이다. 'multi-user.target'로 설정하면 다중 사용자로 설정된다.

     

    서비스 등록하기

    daemon-reload

     

    서비스 재시작

    systemctl restart ${서비스명}

     

    현재 구동되는 서비스들 목록 조회

    systemctl -t service list-unit-files

     

    서비스 시작

    systemctl start ${서비스명}

     

    서비스 종료

    systemctl stop ${서비스명}

     

    서비스 상태확인

    systemctl status ${서비스명}

    댓글

    Designed by JB FACTORY