반응형

 


 안녕하세요. 이번에는 최근에 읽은 '아파치 톰캣 7 따라잡기' 책에 대해 정리를 해보도록 하겠습니다. 처음에 회사에 왔을 때 아파치, 톰캣에 대한 지식이 많이 부족해 어려움들을 많이 겪었는데요. 서점에서 우연히 책을 보다가 해당 책의 제목을 발견하고 여전히 부족한 지식을 채우는데 도움이 될 것같아 일치의 망설임 없이 사서 읽게 되었습니다. 읽은지는 한 달정도 됬는데 한 번 읽고 넘기니 내용이 금방 가물가물 해지더라구요. 이참에 정리도 해놓고 틈틈히 보도록 해야겠다는 마음에 정리를 하게 되었습니다.


# 제가 몰랐던 내용이나 좀 더 확고히 하고 싶은 내용들에 대해서만 정리하기에 일목요연하지 못한점 양해 부탁드립니다.


ˇ 톰캣 bin 디렉터리에는 version.sh라는 스크립트가 있는데, 이 스크립트를 이용해 톰캣 버전과 시스템 정보를 확인할 수 있다. 

 


˚ 스크립트 설정 변경을 확인할 수 있도록 아주 유용한 스크립트 configtest.sh도 제공(톰캣 bin 디렉터리) 한다. configtest.sh 스크립트는 시스템 설정을 검토하고 에러를 찾아낸다. 


˚ 톰캣 설정파일인 conf 내부의 파일들에 대해 알아보자

  - catalina.policy : 톰캣 7의 보안 정책 권한을 설정하는 파일. JVM이 웹 애플리케이션에 어떤 보안 정책 권한을 적용할지를 결정한다.

  - catalina.properties : 이 파일은 서버를 시작할 때 검색하는 서버, 공유로더, JAR 등의 공유 정의를 포함한다.

  - server.xml : 톰캣의 중요 설정 파일 중 하나로 IP 주소, 포트, 가상 호스트, 컨텍스트 경로 등과 같은 중요 정보를 포함한다.

  - tomcat-users.xml : 역할에 기반한 정의에 따라 인증, 승인에 사용하는 파일이다. 이 파일은 데이터베이스의 사용자/암호/역할을 이용한 인증과 컨테이너로 관리되는 보안 구현에 사용된다. 이 파일을 고쳐서 사용자를 추가/삭제하거나 기존 사용자에 역할을 할당/비할당할 수 있다.

  - logging.properties : 톰캣 인스턴스의 로깅 프로퍼티(스타트업 로그 같은)를 정의한다.

  - web.xml : 톰캣 인스턴스가 시작될 때 모든 애플리케이션(톰캣 인스턴스로 로딩되는)의 기본 값을 정의한다. 웹 애플리케이션의 자신만의 배포 디스크립터를 포함하면 기본 디스크립터의 설정을 애플리케이션의 디스크립터의 설정으로 바꾼다.

  - context.xml : 애플리케이션을 실행할 때 이 파일의 내용을 로드한다. context.xml에는 세션 저장, 코밋 연결 추적 등과 같은 설정 파라미터가 있다.


˚ JDBC : 자바 데이터베이스 연결 JDBC, Java Database Connectivity은 자바 기반 데이터베이스 접근 기술로 클라이언트가 서버 데이터베이스에 접근하는데 필요한 API를 제공한다. JDBC는 관계형 데이터베이스에 맞게 만들어졌으며 데이터베이스 질의, 갱신 기능을 제공한다.


˚ JNDI : 자바 네이밍과 디렉터리 인터페이스 JNDI, Java Naming and Directory Interface 서비스는 자바 프로그래밍 언어를 사용해 만들어진 애플리케이션에 네이밍, 디렉터리 기능을 제공하는 자바 플랫폼 API다.


˚ DataSource : JDBC API를 이용해 관계형 데이터베이스에 접근할 때 사용하는 자바 객체다. 


˚ 톰캣의 배포, 설정 과정에서 흔히 발생하는 문제

  1. 

  [ 문 제 ] 


 ˚  사용자가 애플리케이션을 배포한 다음에도 여전히 예전 코드가 보인다고 불평


  [ 해결과정 ] 


 ˚  doc 베이스의 파일이 최근 파일인지 확인한다.


 ˚  톰캣 7의 logs 디렉터리에 있는 catalina.out을 통해 특정 WAR 파일명이 배포되었는지 확인한다


 ˚  이전 두 가지 모두 확인했는데도 문제가 해결되지 않으면 톰캣 서비스를 중지하고 다음 명령어를 이용해 work/Catalina/localhost 디렉터리에 있는 temp 디렉터리의 컨텐츠를 삭제한다. work/Catalina/localhost 디렉터리에 는 temp 디렉터리의 컨텐츠를 삭제한다.


cd /opt/tomcat/temp

rm -rf ../temp/*


cd /opt/tomcat/work/Catalina/localhost/

rm -rf ../localhost/*
 

 ˚ 톰캣 서비스를 재시작하고 사용자에게 다시 애플리케이션을 확인하도록 한다.



  2.

  [ 문 제 ] 


 ˚ 사용자가 한 노드에서는 현재 배포된 코드를 볼 수 있지만 다른 노드에서는 여전히 예전 코드가 표시된다고 불평


 [ 해결과정 ]


 ˚ doc 베이스의 파일이 최근 파일인지 확인한다.


 ˚ 톰캣 7의 logs 디렉터리에 있는 catalina.cout을 통해 특정 WAR 파일명이 배포되었는지 확인한다.


 ˚ 이전 두 가지 모두 확인했는데도 문제가 해결되지 않으면 node2의 톰캣 서비스를 중지한다. node1의 코드를 복제하도록 설정하고 다음 명령어를 이용해 work/Catalina/localhost 아래의 temp 디렉터리의 컨텐츠를 삭제한다. 


cd /opt/tomcat/temp

rm -rf ../temp/*


cd /opt/tomcat/work/Catalina/localhost/

rm -rf ../localhost/*


 ˚ 톰캣 서비스를 재시작하고 사용자에게 애플리케이션을 확인하도록 한다. 또한 node1과 node2가 복제 모드로 동작하는지 데이터베이스 상태를 확인한다.

 ˚ 양쪽 노드에서 데이터베이스에 연결한다.


  3.

  [ 문 제 ]

 ˚ server.xml을 고친 이후로 톰캣 인스턴스가 실행되지 않는 현상이 발생했다.


  [ 해결 과정 ]


 ˚ 톰캣 bin 디렉토리로 이동한다.


 ˚ configtest.sh를 실행한다.


 ˚ 출력된 내용들 중에 에러 메시지를 보면 톰캣이 이미 실행 중임을 알 수 있다. 따라서 웹 서버를 중지하고 temp 디렉터리를 비운다.


 ˚ 서비스를 다시 시작한다.




˚ 톰캣 7의 커넥터 종류 


 : 커넥터란 요청을 수락하고 응답을 리턴하는 교차점을 가리킨다. 톰캣에는 자바 HTTP 커넥터, 자바 AJP 커넥터, ARP(HTTP/AJP) 커넥터 세 가지 종류의 커넥터가 있다. 애플리케이션은 자신의 요구사항에 맞는 커넥터를 사용한다.


 1. 자바 HTTP 커넥터 


 : HTTP 프로토콜을 기반으로 하는 자바 HTTP 커넥터는 HTTP/1.1 프로토콜만 지원한다. 톰캣은 자바 HTTP 커넥터를 이용해 독립형standalone 웹 서버로 동작 할 수 있으며, jsp/서블릿 호스트 기능도 제공할 수 있다.



 2. 자바 AJP 커넥터


 : 자바 AJP 커넥터는 AJP(아파치 JServ 프로토콜)와 AJP를 통한 웹 서버 통신을 기반으로 한다. 자바 서블릿 컨테이너를 인터넷에 노출하고 싶지 않을 때 AJP 커넥터를 사용(다른 프론트엔트 서버를 이용)하며 톰캣 7에서 SSL 터미네이션을 처리하지 않는 상황이라면 AJP 커넥터를 매우 유용하게 활용할 수 있다. AJP 구현 예제로 mod_jk, mod_proxy 등이 있다.



 3. APR(AJP/HTP) 커넥터


 : ARP(Apache Portable Runtime)은 확장성, 성능, 다른 웹 서버와의 협력 작업 상황에서 능력을 발휘한다. 



 

오늘 정리는 여기서 마치도록 하고 정리 하지 못한 내용은 part.2로 포스팅하도록 하겠다.



반응형

+ Recent posts