사소한 그룹웨어를 봐주고 있는 회사가 있는데 언젠가 접속을 해볼 수 없는 상황에서 서버가 다운되었다는 연락을 받았다.

강제로 전원을 내렸다 올려도 수동으로 톰켓을 실행 시켜주어야 한다.

언제나 서버가 재부팅이 필요 할 때에는 엔지니어가 콘솔에 붙어 있는 상황에서만 가능하다는 나의 고집 때문인 듯...

다행이 업무 시간이 지난 때여서 양해를 구하고 저녁에 집에 가서 접속해서 확인해 주고 서버를 살려 놓은 적이 있는데

여전히 불안하다...

한번 시간 내서 작업을 해봤는데 CentOS 7 로 오면서 자잘한 것들이 많이 바뀐 듯... 예전에 

예전에 하던 service 등록 하는 방식으로 잘 되지 않는다.

구글링을 좀 해보니 systemctl 등록 하는 방법이 나와서 작업하고 내용을 정리해본다.


0. 사전 준비
당연히 톰켓이 설치되어 있고 정상적으로 동작해야 한다.
나의 경우 /usr/local/tomcat7 경로에 설치를 했다.
Tomcat 실행 유저는 webservice 계정 이다
평소에 톰켓을 가동 할 때는
  /usr/local/tomcat7/bin/startup.sh
종료할 때는
  /usr/local/tomcat7/bin/shutdown.sh
문제 없이 잘 동작 해야 한다.

위 상황에 문제가 없다면 아래 내용에서 유저나 경로는 자신의 환경에 맞게 바꿔주면 됩니다.


1. tomcat.service  파일 생성
모든 작업은 root 권한으로 진행한다.
/usr/lib/systemd/system 디렉토리에 아래와 같은 내용으로 tomcat.service 파일을 생성한다.

[Unit]
Description=Apache Tomcat 7
After=network.target syslog.target

[Service]
Type=forking
User=webservice
Group=webservice

ExecStart=/usr/local/tomcat7/bin/startup.sh
ExecStop=/usr/local/tomcat7/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

2. 데몬 재로드

$ systemctl daemon-reload


3. 시작서비스 등록

systemctl enable /usr/lib/systemd/system/tomcat.service


4. 테스트

$ systemctl start tomcat

Job for tomcat.service failed because the control process exited with error code. See "systemctl status tomcat.service" and "journalctl -xe" for details.

$

에러가 나면서 잘 되지 않는다.

내용을 읽어 보니 "$systemctl status tomcat.service" 으로 자세한 내용을 확인 할 수 있는 듯 하다

$ systemctl status tomcat.service

● tomcat.service - Apache Ttomcat 7

   Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; vendor preset: disabled)

   Active: failed (Result: exit-code) since 목 2018-11-15 00:22:12 KST; 44s ago

  Process: 2017 ExecStart=/usr/local/tomcat7/bin/startup.sh (code=exited, status=1/FAILURE)


11월 15 00:22:12 localhost.localdomain systemd[1]: Starting Apache Ttomcat 7...

11월 15 00:22:12 localhost.localdomain startup.sh[2017]: touch: cannot touch `/usr/local/tomcat7/logs/catalina.out': 허가 거부

11월 15 00:22:12 localhost.localdomain systemd[1]: tomcat.service: control process exited, code=exited status=1

11월 15 00:22:12 localhost.localdomain systemd[1]: Failed to start Apache Ttomcat 7.

11월 15 00:22:12 localhost.localdomain systemd[1]: Unit tomcat.service entered failed state.

11월 15 00:22:12 localhost.localdomain systemd[1]: tomcat.service failed.

아까 테스트 하느라 logs 디렉토리를 비우고 실수로 tomcat을 root 권한으로 실행하면서 catalina.out 파일이 root 소유로 생성된 듯...

/usr/local/tomcat7 아래 모든 파일의 오너쉽을 webservice:webservice로 변경
$ chown webservice:webservice /usr/local/tomcat7 -R
$ ls -alR /usr/local/tomcat7

다시 실행하니 에러 없이 잘 된다.

4. 재부팅 후 서비스 확인
재부팅

$ sync

$ sync

$ sync

$ reboot

부팅이 완료 된 후 서비스가 정상으로 올라왔는지 확인

$ ps -ef | grep tomcat

webserv+  1327     1 31 00:34 ?        00:00:18 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat7/conf/logging.properties -..

.... 생략 ... org.apache.catalina.startup.Bootstrap start

webserv+  1600  1569  0 00:35 pts/0    00:00:00 grep --color=auto tomcat

$

webservice 계정으로 잘 실행 되어 있다.

브라우저로 접속 역시 문제 없음


끝~


+ Recent posts