가상머신에서 아파치+톰캣 연동 (VMware, CentOS7)

sua_ahn·2023년 11월 13일
0

Server

목록 보기
3/4

가상머신 설치

VMware 설치
VirtualBox보다 설정이 편하고, 드래그 앤 드롭으로 파일 전송 가능!

리눅스 설치

CentOS7 설치

  • CentOS-7-x86_64-DVD-숫자.iso 로 다운로드
    (DVD 파일 : 일반적인 패키지가 포함되어 있고 설치 과정 중에 원하는 패키지를 선택해서 함께 설치할 수 있음)

  • VMware 실행 후 'Create a new virtual machine'
    -> 리눅스 설치 파일 선택해서 설치 진행


서버 세팅

1. 타임존 설정

#타임존 확인
ls -l /etc/localtime
date
timedatectl

#타임존 서울로 변경 
timedatectl set-timezone Asia/Seoul

2. 방화벽 설정

#방화벽 구동 확인
firewall-cmd --state

#열린 포트 확인
firewall-cmd --zone=public --list-all

#포트 개방 (80, 8080, 443, 22)
firewall-cmd --permanent --zone=public --add-port=8080/tcp

#적용
firewall-cmd --reload

3. puTTY 접속

#ip 주소 확인
ifconfig

아파치, 톰캣 설치

아파치: httpd-2.4.37
톰캣: apache-tomcat-8.0.33

*JDK 설치 및 환경변수 설정 후 설치할 것!
*설치 파일들은 따로 구글링

Httpd : 아파치 웹 서버의 프로세스 이름

yum update -y

#1. gcc, gcc 컴파일러 설치
yum install -y gcc gcc-c++

#2. apr 설치
cd /usr/local/src/apr-1.6.5/
./configure --prefix=/usr/local/apache/apr
make
make install

#3. expat-devel 설치
yum install -y expat-devel

#4. aprutil 설치
cd /usr/local/src/apr-util-1.6.1/
./configure --prefix=/usr/local/apache/aprutil --with-apr=/usr/local/apache/apr/
make
make install

#5. pcre 설치
 cd /usr/local/src/pcre-8.42/
 ./configure --prefix=/usr/local/apache/pcre-8.42 --enable-utf
 make
 make install

#7. apache 설치
cd /usr/local/src/httpd-2.4.37/
./configure --prefix=/usr/local/apache --enable-module=so --enable-so --enable-mods-shared=ssl --with-ssl=/usr/local/openssl --enable-ssl=shared --with-apr=/usr/local/apache/apr --with-apr-util=/usr/local/apache/aprutil --with-pcre=/usr/local/apache/pcre-8.42
make
make install

#8. mod_jk 설치
cd /usr/local/src/tomcat-connectors-1.2.40-src/native/
./configure --with-apxs=/usr/local/apache/bin/apxs
make
make install

#9. mod_deflate 모듈 추가  
yum install -y zlib zlib-devel
cd /usr/local/apache/bin/
./apxs -i -a -c /usr/local/src/httpd-2.4.37/modules/filters/mod_deflate.c

#10. libxml2-devel 설치
yum install -y libxml2-devel

#11. security2 설치
cd /usr/local/src/modsecurity-2.9.1/
./configure --with-apxs=/usr/local/apache/bin/apxs --with-pcre=/usr/local/apache/pcre-8.42 --with-apr=/usr/local/apache/apr --with-apu=/usr/local/apache/aprutil
make
make install

#12. apache-tomcat 폴더 생성
cd /usr/local/
mkdir apache-tomcat
cd /usr/local/src/
mv apache-tomcat-8.0.33 ../apache-tomcat/프로젝트-8.0.33

구동 테스트

#아파치 구동 -> 80포트로 접속
#apache/bin 경로에서
./httpd -k start
./httpd -k stop

#톰캣 구동 -> 8080포트로 접속
#apache-tomcat의 bin 디렉토리에서
./startup.sh
./shutdown.sh

*service나 systemctl 명령어로 구동하려면 yum install httpd -y 로 아파치 설치해야 함 (설치 시 명령어 자동 등록됨)

소유권 수정

su -
chown -R 본인id /usr/local/apache-tomcat

*오류로 아파치 재설치 시
재컴파일 전 make clean
yum list installed | grep 으로 설치한거 확인


연동 설정

연동 이유

1) 여러 Tomcat 서버 간의 로드 밸런싱페일오버 기능 사용 (고부하 환경의 성능을 향상시키기 위해)
2) 정적 콘텐츠의 빠른 처리 및 전달 (서블릿 컨테이너와 웹서버의 역할 분리)
3) Apache에서 사용할 수 있는 몇 가지 추가 기능 사용 (Ex. Virtual Host)

아파치 설정

conf/httpd.conf

##추가
LoadModule jk_module modules/mod_jk.so

#해당 모듈이 존재한다면 실행하는 if 구문
<IfModule mod_jk.c>
    JkWorkersFile           conf/workers.properties
    JkLogFile               logs/mod_jk.log
    JkLogLevel              info
    JkLogStampFormat        "[%a %b %d %H:%M:%S %Y] "
    JkRequestLogFormat      "%w %V %T"
</IfModule>

##수정
ServerName localhost

<Directory />
    #해당 디렉터리 내에서 심볼릭 링크를 가능하게 함
    Options FollowSymLinks
    AllowOverride none
    #Require all denied
    #웹 서버의 최상위 경로부터 모든 하위 경로까지 클라이언트의 액세스 허용
    Require all granted
</Directory>

# Virtual hosts 하나의 서버에서 여러 웹서비스를 구동할때 사용
Include conf/extra/httpd-vhosts.conf

conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/apache-tomcat/프로젝트이름/webapps"
    ServerName localhost

    JkMount /* worker1

</VirtualHost>

conf/workers.properties 생성

#웹서버로부터의 서블릿 요청을 처리하기 위해 동작하는 tomcat 인스턴스
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009

톰캣 설정

conf/server.xml

#특정 port로 들어오는 내용을 수신 -> 톰캣 포트 변경 가능 
#but, 1024 이하의 Well known 포트는 아무 사용자나 수정할 수 없음
#AJP 프로토콜(Apache Jserv Protocol)
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" address="0.0.0.0" />


#Engine에 관련된 가상호스트를 정의
#appBase의 상대경로는 tomcat의 설치 위치
#unpackWARs 속성은 WAR 파일을 풀어서 사용할지 여부를 설정
#autoDeploy 속성은 tomcat 가동중 어플리케이션을 배치한 경우 자동으로 배포할지 설정
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
  
	#웹 어플리케이션을 의미. docBase에서 webapps 폴더 혹은 war 파일을 지정하여 사용.
	#Context 태그가 Host 안에 없을 경우 기본적으로 webapps 하위의 Root 디렉터리를 기본 path로 설정(path="/"  war파일명은 ROOT.war)
	#reloadable 속성은 WEB-INF/classes 및 WEB-INF/lib 디렉토리에 변경이 발생할 때 자동 반영 여부를 결정
	<Context path="" docBase="프로젝트.war" reloadable="true"/>

결과

  • 톰캣 접속 주소
    localhost:80
    IP주소:80

  • 배포한 프로젝트 접속 주소
    localhost/프로젝트
    IP주소/프로젝트

profile
해보자구

0개의 댓글