nginx CI/CD 구현
하고자 하는 기능
기존의 config를 수정할 때마다, 따로 기록을 남기기는게 귀찮아서 github repo를 private으로 만들어서 사용했다.
즉, 업무 프로세스는 다음과 같다.
- github repo에서 설정 변경.
- git push
- server 접속
- git pull
- nginx -t
- 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 폴더에 넣었다.