서버 구성할때마다 매번 검색하면서 하게되니 기록을 해놔야겠다는 생각이 드네요.
설치 환경은 EC2 Amazon Linux 입니다.
1. Apache 설치
1-1. 설치 아파치 버전 확인(2.4.52)
yum list | grep httpd
1-2. 아파치 설치
sudo yum install httpd
2. Tomcat 설치
2-1. 사이트 접속 후 아래 압축 파일 링크 주소를 복사합니다.
2-2. 톰캣 설치
wget http://ftp.tsukuba.wide.ad.jp/software/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz
2-3. 압축해제
tar xvfz apache-tomcat-9.0.58.tar.gz
2-4. 폴더 이동
mv apache-tomcat-9.0.58 /home/tomcat9
2-5. 환경변수 등록
vi /etc/profile
문서 맨 아래에 추가해줍니다.
export CATALINA_HOME=/home/tomcat9
그리고 등록된 변수를 확인해봅니다.
source /etc/profile
echo $CATALINA_HOME
2-6. 톰캣 서비스 등록(순서대로 입력)
vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat9
After=network.target syslog.target
[Service]
Type=forking
User=root
Group=root
ExecStart=/home/tomcat9/bin/startup.sh
ExecStop=/home/tomcat9/bin/shutdown.sh
UMask=0007
[Install]
WantedBy=multi-user.target
2-7. 서비스 설정 반영
systemctl daemon-reload
2-8. 서비스 활성화
systemctl enable /usr/lib/systemd/system/tomcat.service
2-9. 서비스 시작
systemctl start tomcat
systemctl status tomcat
*자바가 없는 경우
자바 설치
설치 가능 jdk 리스트
sudo yum list | grep jdk
설치
sudo yum install java-1.8.0-openjdk
3. 톰캣 연동
3-1. mod_jk 설치(Apache + Tomcat 연동시 필요한 모듈)
wget -c https://dlcdn.apache.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz
3-2. 압축해제
tar xvf tomcat-connectors-1.2.48-src.tar.gz
3-3. 파일 이동
mv tomcat-connectors-1.2.48-src /usr/local/src
3-4. 빌드 유틸 설치
yum install autoconf
yum install libtool
yum -y install gcc gcc-c++ httpd-devel
*유틸 미설치 발생할 수 있는 에러
빌드 실행
cd /usr/local/src/tomcat-connectors-1.2.48-src/native
./buildconf.sh
아래 명령어를 순서대로 입력합니다.
./configure --with-apxs=/usr/bin/apxs
make
make install
3-5. 설치된 mod_jk 확인
cd /etc/httpd/modules
ls
3-6. Apache + Tomcat 연동을 위한 Apache 설정파일 생성
*참고로 AWS에서 아파치 기본 경로는 etc/httpd로 잡힙니다.
cd /etc/httpd/conf
vim workers.properties
worker.list=was1
worker.was1.port=8009
worker.was1.host=localhost
worker.was1.type=ajp13
3-7. httpd.conf 파일 수정(아래 쯤에 내용 추가)
vim httpd.conf
LoadModule jk_module modules/mod_jk.so
<IfModule mod_jk.c>
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogStampFormat "[%y %m %d %H:%M:%S]"
JkMount /* was1
</IfModule>
* 만약에 도메인별로 다른 was를 연결하고 싶다면 참고해주세요. (원하지 않는 분은 3-8로 넘어가서 진행하시면 됩니다)
더보기
먼저 3-6에서 생성한 workers.properties를 수정합니다. 두 대의 was가 같은 서버에 있다고 했을때, ajp 포트를 다르게 설정해줍니다. was1 : 8109 / was2 : 8209
만약 was가 다른 곳에 위치한다면 host 주소를 다르게 입력해줍니다. 그리고 3-8에서 Tomcat server.xml 설정시 해당 포트를 알맞게 입력합니다.
worker.list=was1,was2
worker.was1.port=8109
worker.was1.host=localhost
worker.was1.type=ajp13
worker.was2.port=8209
worker.was2.host=localhost
worker.was2.type=ajp13
conf.d 경로에 vhost.conf 라고 별도의 파일을 만들고 아래와 같이 작성합니다.
LoadModule rewrite_module modules/mod_rewrite.so
# a 블로그
<VirtualHost *:80>
ServerName a.myblog.co.kr
JkMount /* was1
</VirtualHost>
# b 블로그
<VirtualHost *:80>
ServerName b.myblog.co.kr
JkMount /* was2
</VirtualHost>
그리고 3-7의 JkMount /* was1 부분을 주석처리해줍니다. httpd.conf 안에 있는 IncludeOptional conf.d/*.conf 를 통해 새로 작성한 vhost.conf가 적용됩니다.
3-8. Tomcat server.xml 파일 수정
Apache + Tomcat connector 포트가 있는 부분의 주석을 풀어주고 address="0.0.0.0"로 수정합니다.
<Connector protocol="AJP/1.3"
address="0.0.0.0"
port="8009"
redirectPort="8443"
secretRequired="false"
/>
3-9. Apache, Tomcat 재실행 후 테스트
systemctl stop tomcat
systemctl start tomcat
sudo service httpd stop
sudo service httpd start
80포트 접속 시 아래와 같이 톰캣 화면이 뜬다면 성공입니다.
*아래 에러 발생시 참고
Initializing shm:/etc/httpd/logs/jk-runtime-status.24484 errno=13. Unable to start due to shared memory failure.
setenforce 0
service httpd restart
참고자료