시스템 서비스 세트를 다시 로드하는 방법은 무엇입니까?

시스템 서비스 세트를 다시 로드하는 방법은 무엇입니까?

나는 원해요새로고침(다시 시작하는 것이 아닙니다!) 이벤트가 발생했을 때 서비스 집합입니다.

nginx예를 들어 SSL 인증서를 업데이트하면 이를 사용하는 모든 서비스가 다시 로드 되기를 원합니다 postfix. 또한 특정 서버의 어떤 서비스가 SSL 인증서를 사용하는지 기억하고 싶지 않습니다. 구성할 때 그룹화하면 충분합니다.

.service반면에 패키지에서 제공하는 파일을 변경하는 것은 피하고 싶습니다 . 업데이트하는 동안 수동 개입이 필요하기 때문입니다.

어떻게 해야 하나요?

다음과 같은 옵션이 있습니다.요청 시 일련의 서비스를 중지합니다., 그러나 이로 인해 1~2초 동안 액세스할 수 없게 되거나 더 악화될 수 있습니다. 문제가 해결될 때까지 그대로 유지될 수 있습니다. 나는 그것을 감당할 수 없습니다.

답변1

/etc/systemd/system/ssl-reload.target다음 콘텐츠를 사용하여 만듭니다.

[Unit]
Description=Services which need reloaded with SSL certs are updated.
PropagatesReloadTo=nginx postfix

그런 다음 다른 파일을 만듭니다./etc/systemd/system/ssl-reload.path

[Unit]
Description=Restart services which use SSL when the cert directory changes

[Path]
PathChanged=/path/to/your/ssl/certs/dir

[Install]
WantedBy=multi-user.target

그 다음에:

systemctl enable ssl-reload.path
systemctl start ssl-reload.path

하지만 SSL 디렉토리에서 무언가를 변경한 후에는 필요한 서비스가 자동으로 다시 로드되어야 합니다.

자동 동작을 원하지 않으면 이 .path파일을 사용하지 말고 systemctl reload ssl-reload.targetSSL 파일을 변경한 후 수동으로 실행하십시오.

관련 정보