새소식

반응형
250x250
My Study/Java

신입 개발자의 기록 [12/06] Apache와 Tomcat을 사용해 war 배포

  • -
728x90
반응형

Apache와 Tomcat을 이용해서 war를 배포해보기

 

먼저 배포를 하기 전 Tomcat에 대해 알아보았다.

 

Tomcat이란 아파치 소프트웨어 재단의 웹 어플리케이션 서버(WAS)로 자바 서블릿을 실행시키고 JSP 코드가 포함되어 있는 웹 페이지를 만든다. 

자바 서블릿과 JSP 규격의 참조용 구현으로 평가되고 있는 Tomcat은 웹 서버에서 넘어온 동적인 페이지를 읽어들여 프로그램을 실행하고 그 결과를 다시 html로 재구성하여 Apache에게 되돌려주는 역할이다.

 

Apache는 HTTP 웹 서버이고 구축이 쉽기 때문에 많이 사용한다.

 

 

여기서 Apache와 Tomcat의 차이점

 

Apache는 HTTP 요청을 처리하는 웹 서버이고 Tomcat은 WAS 서버이다.

 

WAS(Web Application Server) : 웹 서버와 컨테이너의 결합으로 다양한 역할을 수행하는 서버이다.

클라이언트 요청을 받아 요청을 처리하고 다시 클라이언트에게 응답해주는 역할을 하는 것이 서블릿 컨테이너이다. 

Apache와 WAS 차이의 핵심은 컨테이너 기능(웹 서버 + 서블릿)이 가능한가 불가능한가 이다.

 

웹 서버 : 정적인 데이터 처리를 하는 서버

WAS : 동적인 데이터를 처리하는 서버

 

 

Step 1 -- Tomcat에 먼저 배포해보기

 

먼저 Tomcat을 다운받아준다.

 

https://tomcat.apache.org/download-90.cgi

 

Apache Tomcat® - Apache Tomcat 9 Software Downloads

Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification version

tomcat.apache.org

 

 

여기서 제일 밑에 있는 Installer를 받아준다.

 

 

모든 옵션을 체크해주고

 

 

포트 설정을 해준 뒤 설치를 하면 Tomcat 설치와 동시에 실행이 된다.

 

이제 원하는 프로젝트에서 war 파일을 추출해야 한다. 나는 Intellij를 사용하기에 Intellij로 추출할 것이다.

 

먼저 원하는 프로젝트를 킨 다음 File > Project Structure를 클릭하면 

 

이런 화면이 나오는데 Artifacts > '+' 버튼 > Web Application: Archive > For '프로젝트 명:war exploded' 클릭

 

그 후 상단의 Name과 프로젝트명.war 의 프로젝트 명을 원하는 이름으로 바꾼다.

 

그 후 OK 누르고 다시 File > Build > Build Artifacts 클릭하면 프로젝트의 폴더 내 out > artifacts > 설정한 이름의 폴더 > war파일이 있을 것이다. 이 파일을 Tomcat이 설치된 경로로 가 Tomcat이 설치된 폴더 안 webapps에 넣어준다.

Tomcat을 실행하면 그 war 파일의 압축을 해제한 폴더가 생성된다. (필자는 ROOT 폴더를 지우고 이름을 ROOT로 설정해 톰캣 실행하자마자 프로젝트가 켜지게 만들었다)

그럼 Tomcat 실행하면 프로젝트가 실행되는 걸 볼 수 있다.

 

 

이제 Apache 연결을 해보자..

 

먼저 Apache를 다운로드 받는다. 

https://www.apachelounge.com/download/

 

Apache VS17 binaries and modules download

 

www.apachelounge.com

 

압축을 푼 다음 Apache24 폴더를 잘라내어 C드라이브에 붙여넣는다.

 

그 후 Apache24 폴더 내 conf > httpd.conf 파일을 메모장으로 연다.

 

ServerRoot : 아파치 서버 경로이다. C:/Apache24로 폴더를 옮긴 이유는 기본값이기 때문이다.

 

Listen : 사용하는 port 번호를 입력한다.

 

ServerName : 서버 ip를 입력한다. 로컬로 테스트를 하기 때문에 ServerName localhost를 적어줬다.

 

DocumentRoot : 웹페이지 소스가 들어갈 폴더 위치이다. 기본값으로 두었다.

 

이제 저장하고 나간다.

 

이제 Apache Web Server 설치를 위해 관리자 권한으로 cmd를 실행시켜준다.

 

cd C:\Apache24\bin을 입력 후 httpd -k install을 입력하고 설치해준다.

 

설치된 Apache 서버를 실행하기 위해 윈도우 검색창에 서비스를 입력 후 서비스를 켜준다.

 

Apache2.4 클릭 후 시작을 누르면 Apache 서비스가 실행된다.

 

그 뒤 주소창에 localhost를 입력하면 It works! 라는 화면이 뜨면 서비스가 실행된 것이다.

 

그 뒤 mod_jk를 설치해야 한다.

여기서 mod_jk는 Apache와 Tomcat을 연동하기 위한 모듈로 AJP 프로토콜을 이용하여 Apache에 들어온 요청 중 Tomcat이 처리할 요청을 AJP 포트(일반적으로 8009)를 통해 Tomcat에 전달하고 그에 대한 응답을 받는 역할을 한다.

 

https://www.apachelounge.com/download/#google_vignette

 

Apache VS17 binaries and modules download

 

www.apachelounge.com

Apache 2.4 버전이므로 mod_jk도 2.4 버전을 다운받고 압축을 해제한 뒤 mod_jk.so파일을 Apache의 modules 폴더로 복사 또는 이동시킨다.

 

Apache24 > conf > httpd.config를 메모장으로 실행시킨다.

 

다시 LoadModule 라인을 찾아 mod_jk.so를 추가해준다.

 

그리고 맨 아래에 아래 코드를 추가해준다.

<IfModule jk_module>
    Include conf/mod_jk.conf
</IfModule>

 

모든 요청에 대해 승인해준다는 코드도 추가해야 한다. ServerName 및 쪽에 Directory 태그를 수정한다.

<Directory />
    AllowOverride none
   Require all granted
</Directory>

 

그리고 mod_jk.conf 파일을 conf 폴더 내에 생성 후 다음 내용을 추가한다.

 


JkLogFile "|bin/rotatelogs.exe -l logs/mod_jk_%Y%m%d.log 86400"
JkLogLevel Info
JkLogStampFormat "[%a %b %d %H: %M: %S %Y]"
JkRequestLogFormat "%w %V %T"
JkWorkersFile conf/workers.properties
JkMount /* workers1

 

workers.properties 파일을 생성 후 다음 내용을 추가한다.

worker.list=workers1
worker.workers1.port=8009
worker.workers1.host=192.168.1.220 (자신의 ip주소나 localhost로 적어준다.)
worker.workers1.type=ajp13
worker.workers1.connection_pool_timeout=600

 

이제 Tomcat에 설정을 해줘야한다.

Tomcat 설치 경로의 conf > server.xml 파일을 열어 Host 태그를 수정하고 Context 태그를 추가한다.

 

<Host name="localhost" appBase="C:\Apache24\htdocs" unpackWARs="true" autoDeploy="true" mlValidation="false" xmlNamespaceAware="false">
<Context path="/" docBase="실행할 war파일이 압축 해제된 폴더의 경로" unpackWARs="true" debug="g" reloadable="true" xmlValidation="false" xmlNamespaceAware="false" crossContext="true"> </Context>

 

<Connector protocol="AJP/1.3"
                    address="0.0.0.0"
                    port="8009"
                    redirectPort="8443"
                    maxParameterCount="1000"
                    secretRequired="false"
                    />

 

저장 후 주소창에 localhost 입력만 하면 내가 만든 프로젝트가 뜨는 걸 볼 수 있다!!

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.