MINGKYME 블로그

nginx CI/CD 구현

하고자 하는 기능

기존의 config를 수정할 때마다, 따로 기록을 남기기는게 귀찮아서 github repo를 private으로 만들어서 사용했다.

즉, 업무 프로세스는 다음과 같다.

  1. github repo에서 설정 변경.
  2. git push
  3. server 접속
  4. git pull
  5. nginx -t
  6. nginx -s reload

해당 업무 프로세스는 기존에 개발을 할때 사용하던 방식에서는 너무 비효율적이었다.

CI / CD 중에서 CD 에 해당 될 것으로 보인다.

이를 해결하기 위해서 github action을 사용해서 git pull과 nginx -s reload 를 자동으로 설정되게 한다.

기존에는 github action을 이용해서, git pull까지만 자동으로 하는 기능을 만들었다.

nginx -s reload는 권한 문제로 사용하기가 어려웠다.

root 권한을 만들어서 쓰기엔 너무 리스크가 컸다.

그래서 진행하지 못하다가, 최근에 방법을 찾았다.

설정 방법

echo "nginx	ALL=(ALL:ALL) NOPASSWD: /usr/sbin/nginx *" >> /etc/sudoers

nginx에 대해서는 sudo nginx -t 같은 커맨드를 password를 묻지 않는 설정을 발견했다.

이 설정을 이용해서, git repo에 있는 파일을 ln 하여, nginx conf 폴더에 넣었다.