소프트웨어를 소스 코드로부터 컴파일하여 설치한 후에, 우리는 종종 이를 시스템이 시작할 때 자동으로 시작되도록 설정하고 싶어합니다. 이를 위해 시스템의 서비스 관리자인 systemctl을 사용하여 소프트웨어를 '서비스'로 등록할 수 있습니다. 그렇게 하면 간단한 명령으로 서비스를 시작, 중지, 재시작할 수 있습니다.
Contents
- 서비스 파일 생성 : /usr/lib/systemd/system/서비스이름.service
- 서비스 파일만 생성해도 systemctl 사용 가능하다.
- 심볼릭 링크 생성 : /etc/systemd/system/multi-user.target.wants/서비스이름.service
- systemctl enable 명령어를 실행하여도 심볼릭 링크가 생성된다
Example - Haproxy 등록
서비스 파일 생성
서비스 파일 이름: haproxy.service
위치: /usr/lib/systemd/system/haproxy.service
이 파일을 생성하면 systemctl을 통해 서비스를 관리할 수 있습니다.
설정 파일 내용 분석:
[Unit] 섹션: 서비스에 대한 설명, 언제 서비스를 시작할 것인지에 대한 종속성을 설정합니다.
[Service] 섹션: 실제 서비스가 시작될 때 실행되는 명령어나 스크립트를 정의합니다.
[Install] 섹션: 서비스를 어느 대상에 의해 원하는 지 (즉, 언제 시작되어야 하는지) 정의합니다.
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
EnvironmentFile=/etc/sysconfig/haproxy
ExecStart=/usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid $OPTIONS
ExecReload=/bin/kill -USR2 $MAINPID
KillMode=mixed
[Install]
WantedBy=multi-user.target
[Unit]
Description : 서비스에 대한 설명 작성
Before : 시작되기 전에 실행할 것
After : 시작된 이후 실행할 것
Requires : 필요조건, 정상적일 경우, 서비스를 시작
Wants : "Requires" 보다 다소 완화된 옵션이다.
충분 조건으로서, 상위 의존성 목록에 포함된 유닛이 시작되지 않았더라도 전체 수행 과정에 영향을 끼치지 않는다.
이 옵션은 하나의 유닛을 다른 유닛과 연계할 경우 사용하게 된다.
[Service]
EnvironmentFile : 해당 유닛에서 사용할 환경 변수 파일을 정의한다. 반드시 Exec* 명령어 보다 상단에 위치
ExecStart : 시작 명령 정의
ExecReload : Reload 명령 정의
[Install]
WantedBy, RequiredBy
"systemctl enable" 로 유닛을 등록할 때 등록에 필요한 유닛을 지정한다.
해당 유닛을 등록하기 위한 종속성 검사 단계로 볼 수 있다.
따라서 해당 설정은 [Unit] 섹션의 "Wants=" 와 "Requires=" 옵션과 관계 있다.
심볼릭 링크 생성
systemctl enable 명령어를 실행하면 /etc/systemd/system/multi-user.target.wants/ 디렉토리에 서비스 파일에 대한 심볼릭 링크(단축 경로)가 생성됩니다. 이것은 시스템 부팅 시 자동으로 해당 서비스가 시작되도록 합니다.
root@jv0535 [/etc/haproxy]systemctl enable haproxy
Created symlink from /etc/systemd/system/multi-user.target.wants/haproxy.service to /usr/lib/systemd/system/haproxy.service.
service 시작, 중지, 재시작 방법
## 시작
systemctl start haproxy
## 중지
systemctl stop haproxy
## 스크립트 인식하기
systemctl daemon-reload
## 재시작
systemctl restart haproxy
## 부팅시 자동 시작
systemctl enable haproxy
'OS > Linux' 카테고리의 다른 글
[Linux]Install Keepalived from yum in centos 7 (0) | 2022.06.12 |
---|---|
[Linux]Install HAProxy from source centos 7 (0) | 2022.06.11 |
[Linux]경로 상관없이 명령어 실행하기 (0) | 2022.06.08 |
[Linux]How to use ln command - make links between files (0) | 2022.05.05 |
[Linux]How to use basename command in CentOS - strip directory and suffix from filenames (0) | 2022.05.02 |