시스템 서비스 그룹을 어떻게 다시로드합니까?


12

이벤트가 발생하면 서비스 그룹 을 다시로드 (다시 시작하지 마십시오!) 하고 싶습니다 .

내 SSL 인증서를 업데이트 할 경우 예를 들어, 내가 사용하는 그들을 다시로드하는 모든 서비스를 원하는 ( nginx그리고 postfix마음에 와서). 주어진 서버의 어떤 서비스가 SSL 인증서를 사용하는지 기억하고 싶지 않습니다. 구성 할 때 그룹화하면 충분합니다.

반면, .service패키지와 함께 제공된 파일을 변경하지 않으려 고 합니다. 업데이트 중에 수동 개입이 필요하기 때문입니다.

어떻게하면 되나요?

요청에 따라 서비스 그룹중지 할 수 있는 옵션 이 있지만 이로 인해 1-2 초 동안 액세스 할 수 없거나 더 나빠질 수 있습니다. 수정 될 때까지 다운 될 수 있습니다. 나는 그것을 감당할 수 없다.


난 당신이 인증서 표시를 배포하지만, 여기에 대부분의 자동으로 자료 갱신에 대한 사전 후크 및 사후 후크 얼마나 확실하지 않다 /opt/letsencrypt/letsencrypt-auto renew --pre-hook "service nginx stop; service postfix stop; service squid stop" --post-hook "service nginx start; service postfix start; service squid start" 도 : certmonger는 postsave와 프리 세이브 명령이 있습니다
야곱 에반스

@JacobEvans 그것이 내가 사용하는 것입니다! 이전에 certbot의 구성 파일 구문 분석기에 문제가있었습니다. 세미콜론을 허용하지 않았습니다. 따라서 명령 행 인수를 사용하거나 한 번에 수행해야합니다. 지금은이 모든 것이 불필요합니다.
sanmai

당신이 할 경우 .service로 파일 편집을 무시 하면 업데이트 문제를 방지 할 수 있습니다. 설치된 파일을 변경하지 않고 sudo systemctl edit foo.service변경 사항을 저장합니다 . /etc/systemd/system/foo.service.d/override.conffoo.service
quixotic

답변:


21

/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 파일을 변경 한 후 수동으로 발행 하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.