rc.local 을 이용해 서버 부팅시 Jenkins, SVN, Sonarqube 자동 실행하기
서버는 영원히 부팅된채로 동작할 수 없다. 패치에 따라 혹은 새로 반영해야할 무언가가 있으면 재부팅을 해줘야 한다. 그럼 재부팅을 할때마다 서비스를 수동으로 다 동작시켜야하는가? 물론 아니다. 다 방법이 있다. 윈도우 서버 같은 경우는 '서비스' 에 들어가서 우클릭으로 해당 서비스가 재기동이 될때 자동으로 실행시킬것인지 수동으로 실행시킬것인지 결정을 할 수 있고 리눅스의 경우는 rc.local 파일에서 이와 유사한 행동을 할 수 있다. 이 rc.local을 이용해서 서버 재기동시 자동으로 서비스를 올리는 방법에 대해 알아보겠다.
rc.local 은 부팅시 서비스를 자동으로 실행해주게끔 해주는 역할을 한다. 부팅시 다른것을 다 하고 이 rc.local이 동작한다고 생각하면 된다. 보통의 경우는 /etc/rc.d/rc.local 이곳에 위치를 하고 있다.
그럼 일단 rc.local에서 동작을 시킬 Jenkins 기동 스크립트를 하나 만들어보자.
jenkinsRestart.sh
#!/bin/bash
cd /젠킨스설치경로/bin
./jenkins.sh stop
./jenkins.sh start
이런식으로 jenkins를 재기동 해주는 스크립트를 작성한다.
Jenkins같은 경우는 갑자기 종료가 되면 pid 파일이 삭제되지 않기때문에 stop을 한 후 start를 해야 정상실행이 된다.
그런 다음 vi /etc/rc.d/rc.local 로 들어가서 맨 뒤에 다음을 추가해준다.
rc.local
su -testuser -c '/젠킨스설치경로/bin/jenkinsRestart.sh'
su - testuser는 해당 user 계정으로 톰캣을 실행하겠다는 의미이다. 실행시킬 계정에 맞게 변경한다. 끝이다.
이와 같은 방식으로 SVN이나 Sonarqube도 서버 부팅시 자동으로 서비스를 올릴수 있다.
rc.local
su -testuser -c 'svnserve -d -r /SVN설치경로'
su -testuser -c '/Sonarqube설치경로/sonar.sh start'
SVN과 Sonarqube도 등록. 일반적으로 우리가 어떤 계정으로 어떤 어플리케이션을 실행을 시키는지만 알면 이와 같은 방식으로 쉽게 등록할 수 있다.
재기동을 해보면 서비스가 정상적으로 올라가는지 확인할 수 있고 만약 올라가지 않는다면 rc.local 파일의 권한이 755로 되어 있는지 확인해보자.
끝!