IaaS/기타

Systemctl 에 등록해서 서비스 관리하기

armyost 2022. 10. 5. 14:39
728x90

서비스를 중지/기동 많이할 것 같다면 애초에 systemctl 등록하는것이 두고두고 편의를 제공한다.

 

사전 확인 사항

  • Systemctl 등록을 위해서 Startup할 수 있는 Command Line 혹은 Script가 필요하다. Shutdown은 프로세스를 킬하는 방법도 있으므로 Shutdown Command Line 혹은 Script는 없어도 무관하다.
  • Gitlab이나 JEUS 같은 Main Process가 다수의 Process(자식 프로세스 아님)를 생성 후 종료되는 방식은 Systemctl 로 완벽한 관리가 잘안되더라..(이건 내능력 부족일수도 있음)
  • User를 설정하고 실행하더라고 해당 User의 환경변수를 불러오지는 못한다. 이때 Unit 스크립트에 Environment 로 환경변수를 정의하거나 Environment File 을 호출하는 파라미터를 추가하는것이 좋다. 또는 Startup 스크립트를 작성하고 스크립트에서 export로 변수를 처음부터 정의하도록 하는 것도 좋은 방법이다.

 

유형 1. 서비스 Startup을 Script로 실행하는 경우

1) Jenkins를 systemctl에 등록하기 위해 service 파일을 만듭니다.
# vi /usr/lib/systemd/system/jenkins.service

 
2) jenkins.service에 Unit 스크립트를 작성합니다.
-----------------------------------------------
[Unit]
Description=Systemd Jenkins-Server Daemon

[Service]
User=cicd
Group=cicd
Type=forking

ExecStart=/bin/bash /home/cicd/startup.sh

ExecStop=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
-----------------------------------------------


3) 심볼릭 링크를 생성합니다.
#ln -s /usr/lib/systemd/system/jenkins.service /etc/systemd/system/multi-user.target.wants/jenkins.service

4. systemctl reload 및 테스트
#systemctl daemon-reload
#systemctl enable jenkins
#systemctl start jenkins
#systemctl status jenkins

 

 

유형 2. 서비스 Startup을 Command Line으로 실행하는 경우

 

1. mongodb을 systemctl에 등록하기 위해 service 파일을 만듭니다.
#vi /usr/lib/systemd/system/mongodb.service

 
2. mongodb.service에 Unit 스크립트를 작성합니다.
--------------
[Unit]
Description=Systemd MongoDB-Server Daemon
After=network.target

[Service]
User=mongodb
Group=dba

Type=forking

ExecStart=/home/mongodb/bin/mongod --config /home/mongodb/config/mongod.conf
ExecStop=/bin/kill -HUP $MAINPID

# Other directives omitted
# (file size)
LimitFSIZE=infinity
# (cpu time)
LimitCPU=infinity
# (virtual memory size)
LimitAS=infinity
# (locked-in-memory size)
LimitMEMLOCK=infinity
# (open files)
LimitNOFILE=64000
# (processes/threads)
LimitNPROC=64000


[Install]
WantedBy=multi-user.target
--------------


3. 심볼릭 링크를 생성합니다.
#ln -s /usr/lib/systemd/system/mongodb.service /etc/systemd/system/multi-user.target.wants/mongodb.service


4. systemctl reload 및 테스트
#systemctl daemon-reload
#systemctl start mongodb
#systemctl status mongodb
#systemctl enable mongodb