ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CentOS7에 service로 등록하기
    linux/script 2024. 1. 10. 11:46

    필자는 다른 백엔드 서비스나 배치 파이프라인 파일을 리눅스의 Systemd를 이용하여 관리하곤 한다.

    (Systemd는 Linux OS 시스템을 제어하는 서비스의 매니저이다. 가장 좋은 점은 서버가 다운되거나, 다시 시작할 때 자동으로 서비스가 시작되는 점! )

     

    이번에도 CentOS7 에서 서비스로 등록했는데, 한번 기록해보겠다!

     

    먼저, 서비스를 등록하기 위해서는 etc/systemd/system에서 진행해야 한다.

     

    <등록 순서>

    1.  cd /systemd/system 으로 이동한다.

     

    2.  등록하고자 하는 service 파일을 만든다. 

    ( cd /systemd/system) 장소에서 cat > test.service  -> ctrl+d 클릭하여 서비스 등록 내용 복사 

     

    2-1. 서비스 파일(systemd unit 파일) 작성법 -> 여러 블로그 참조 할 것! 

    [Unit]
    Description=test Backend Service
    After=network.target
    
    [Service]
    Type=simple
    WorkingDirectory=/home/user/test3/test-backend
    Environment=VIRTUAL_ENV=/home/user/test3/test-backend/.venv
    ExecStart=/bin/bash -c '. $VIRTUAL_ENV/bin/activate && /home/user/test3/test-backend/.venv/bin/python /home/user/test3/test-backend/main.py'
    Restart=on-failure
    RestartSec=3s
    StandardOutput= >> /home/user/test3/test-backend/log/backend-service.log
    StandardError= >> /home/user/test3/test-backend/log/backend-service-error.log
    
    [Install]
    WantedBy=multi-user.target

    위의 서비스 내용 부분 설명 ( - > 필자의 경우) 

    1.  unit 섹션에서는 description(설명) 과 after (시작할 서비스) 를 기록했다.
    2.  service 섹션에서는 type, working directory(실행할 파일이 있는 위치), environment(실행 환경), execstart(서비스 시작하기 위한 전체 경로 및 실행 인자 설정) , restart(on-failure 경우, 중지될 경우 서비스 다시 시작), 그 외 로그 설정을 기록했다.
    3.  install 섹션에서는 부팅시 unit이 활성화 하는 명령어로 multi-user.target일 경우 링크 파일 생성 및 지정해준다.

     

    3. 위처럼 내용을 기록하고 저장한 뒤, sudo systemctl daemon-reload를 통해 업데이트 해준다

     

    4. sudo systemctl enable test 를 통해 서비스를 등록해준다.

    5. sudo systemctl restart test 를 통해 시작해준다.

    6. systemctl status test를 통해 동작하고 있는지 확인한다.

     

    위 처럼 active일 경우 성공적으로 등록되어 실행되고 있다는 것을 알 수 있다.

    만약 inactive 일 경우, 제대로 등록 혹은 실행이 되지 않고 있기 때문에, service 파일 내용의 경로 확인 및 실행 방법에 대해 수정한 후, 다시 진행해야 한다.

    'linux > script' 카테고리의 다른 글

    shell script 사용해서 ubuntu에 docker 설치하기  (1) 2023.10.19
    #!/usr/bin/env bash 이란?  (0) 2023.10.19
Designed by Tistory.