아래 작성한 내용은 Windows에 Tomcat을 서비스로 등록하여 구동하는 것을 전제로 구성된 내용입니다.

1.Apache Tomcat 내려받기

우선 아래 그림 처럼 아파치 톰캣 홈 페이지에서 Binary 형태(.zip)의 Tomcat을 내려받습니다.


Windows 환경에서는 '32-bit Windows zip'(또는 64-bit Windows zip)항목을 클릭해서 내려받기 합니다.
(그 외의 항목에서는 Windows Service에 등록하는 배치파일이 없을 수 있습니다.)

2.Apache Tomcat 설치

거창하게 설치라고 했습니다만 ... Binary 형태(.zip)로 내려 받았기 때문에 설치라는 행위를 할 필요는 없습니다. 내려받은 파일을 적절한 위치(원하는 위치)에 압축을 푼 뒤, 압축을 풀어 나온 파일(폴더)를 복사하고, 이름을 변경하여 붙여넣기 합니다.

폴더 명은 용도에 따라서 적절하게 변경하면 되나 가급적 한글은 사용하지 않는 것이 좋습니다. 글에서는 'tomcat1', 'tomcat2'로 구분해서 사용합니다.

3.설정 변경

3.1.tomcat2항목의 conf디렉터리 파일 중 server.xml파일을 열어 port항목이 존재하는 부분의 내용을 다르게 분리해 줍니다.

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
 
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"  redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>
 
      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
 
    </Engine>
  </Service>
</Server>

위 코드에 기본적으로 설정 된 prot, redirectPort 부분은 tomcat1을 구동하면 사용되는 포트이므로 수정 없이 tomcat2를 실행하면 포트 충돌이 발생하거나 tomcat2 종료 시 tomcat1까지 함께 종료되는 등의 문제가 발생할 수 있습니다. 때문에 강조된 부분을 모두 변경해 주어야 합니다. 예를 들어 port="8005"port="8100"와 같이 변경 해 주어야 하며, 'Connector' 항목에 설정 된 포트의 경우 방화벽을 사용하고 있다면 방화벽 예외 항목에 포함되어야 합니다. (필요하다면 tomcat1, tomcat2모두 변경해서 사용해도 상관없습니다.)


추가로 위 내용 중 protocol="AJP/1.3" 항목의 redirectPort="8443" 항목의 포트는 바로 윗 줄의 redirectPort="8443" 항목의 포트 번호와 같아야 합니다.
(통상적으로 tomcat만 사용하여 웹서버를 구성하는 것이라면 주석으로 처리해 두어도 무방합니다.)

3.2.tomcat2폴더의 bin디렉터리의 파일 중 service.bat파일을 찾아 메모장 등 에디터로 열러 수정합니다.

...
rem Set Default Service name
set SERVICE_NAME=TOMCAT ...
set PR_DISPLAYNAME=Apache Tomcat ...
...

파일의 내용 중에 SERVICE_NAME, PR_DISPLAYNAME항목을 적절하게 변경합니다. 변경 시 주의할 부분은 SERVICE_NAME항목에 띄어쓰기나 '_'(언더바)가 들어가면 서비스 등록 시 오류가 발생할 수도 있고, 서비스 명이 정상적으로 표시되지 않을 수도 있습니다.

4.서비스 등록 및 확인

4.1.서비스 등록

3번 항목까지 모두 완료되면 커멘드(CMD)창을 열어 tomcat2bin디렉터리로 이동합니다. 해당 디렉터리에서 아래와 같이 명령을 실행하여 서비스에 등록합니다.

$prompt tomcat2\bin>service.bat install


4.2.서비스 등록 확인

Windows의 관리도구 > 서비스창을 띄워서 3.2에서 설정한 SERVICE_NAME에 맞는 항목이 등록되었는지 확인하고, 등록되었다면 상황에 맞게 설정 및 시작을 진행합니다.


5.실행 확인

브라우저를 띄워 3.1항목에서 설정한 포트에 맞게 호출하여 정상적으로 실행되고 있는지 확인합니다. 정상적으로 실행되고 있다면 아래와 같은 화면을 확인할 수 있습니다.



+ Recent posts