개발/Backend

Apache start, stop 시 별도 스크립트 실행

HuiYa 2019. 6. 21. 10:13

2019-04-30 17:05 최초 작성

 

아파치 시작/종료 시점에 스크립트를 실행해야할 필요성이 생겼다.
시작/종료 시 추가적인 작업이 필요했다.

 

그러던 중 리눅스 서비스에 추가적인 옵션 등록으로 해결 가능하다는 사실을 발견했다.
리눅스 서비스 옵션이기 때문에 해당 파일만 잘 선택한다면 아파치가 아닌 Nginx도 같은 방법으로 설정 가능하다.

 

참고 링크
https://unix.stackexchange.com/questions/368271/how-can-i-run-a-command-upon-a-systemd-service-unit-being-disabled
https://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStopPost=

 

  1. 옵션
    여러가지 옵션이 있다.
    ExecStartPre, ExecStartPost
    Pre가 붙은건 start 하기 전에, Post가 붙은건 start 한 후에 실행된다.
    필요에 따라 적절하게 사용하면 될 듯.

    Pre, Post 없이 단순하게 ExecStart 옵션도 있는데, 해당 설정 파일을 열어보면 미리 사용되고 있다.
    이 부분을 조작하면 시작시 제어가 가능해보인다.

  2. 설정 파일에 추가
    위에서 말하는 옵션은 /etc/systemd/system/multi-user.target.wants/httpd.service 이 경로에 넣으면 된다.
    이 파일은 심볼릭 링크인데,

     sed -i 's,\(\[Install\].*\),ExecStartPost=/bin/bash /var/www/html/bash/httpd_start.sh\nExecStopPost=/bin/bash /var/www/html/bash/httpd_stop.sh\n\n\1,g' /etc/systemd/system/multi-user.target.wants/httpd.service

    같은 명령을 통해서 자동으로 추가하려고 할 경우 심볼릭 링크가 깨지더라.

  3. 원본 설정 파일에 추가
    심볼릭 링크의 원본은 이 파일이다. 이 파일을 건드리면 심볼릭 링크 깨지는 일 없이 반영 가능하다.
    /usr/lib/systemd/system/httpd.service
    하지만 어지간하면 직접 건드는 일은 없었으면 좋겠다. 불안...

  4. 설정 반영
    설정 파일에 옵션 추가 후

     systemctl daemon-reload

    명령을 통해 설정을 적용해주면 된다.