Last Updated on 1월 20, 2024 by Jade(정현호)
안녕하세요
이번 포스팅에서는 apache 와 tomcat 9 버전 그리고 jdk 를 yum(패키지 시스템) 으로 설치하는 내용에 대해서 확인해보도록 하겠습니다.
내용 업데이트 : 2020/11/06
설치 진행 환경
- OS: Centos 7.8
- APACHE2.4.6 + TOMCAT9 + OpenJDK1.8
Tomcat은 바이너리 파일을 이용하며 그 외에는 yum 으로 패키지 설치를 진행하도록 하겠습니다
[참고] Ubuntu18.04 환경에 Nginx + Tomcat 9 설치 연동은 아래 포스팅을 참조하시면 됩니다.
Contents
Tomcat 연동 Connect 종류
Apache 와 Tomcat의 연동시 사용되는 connector 에는 mod_jserv, JK, JK2, mod_webapp, mod_proxy, mod_proxy_ajp 등이 있습니다.
자세한 내막은 알 수 없지만 jserv 와 mod_webapp 는 오래전부터 외면 받아온 것 같고 JK2 는 개발자들의 흥미 부족을 이유로 개발이 중단되었습니다.
그래서 지금 사용 가능한 방법은 3가지입니다.
mod_jk , mod_proxy , mod_proxy_ajp
보통 예전부터 많이 사용해온 방식은 mod_jk 이고 다른 방법은 mod_proxy를 사용하여 reverse proxy 로 사용하는 방법이 있으며,
그리고 mod_proxy_ajp 를 통해 ajp Protocol 을 reverse proxy 로 사용하는 방법 이렇게 3가지를 사용할 수 있습니다.
mod_jk는 별도의 모듈을 apache 에 추가하여 사용해야 하지만 mod_proxy 와 mod_proxy_ajp는 Apache의 기본 모듈인 mod_proxy.so, mod_proxy_http.so, mod_proxy_ajp.so 을 사용하게 됩니다.
mod_proxy 와 mod_proxy_ajp 는 reverse proxy 로써 ProxyPassMatch, ProxyPassReverse, ProxyPass 를 사용하여 Backend 와 통신하게 됩니다.
ajp 프로토콜 사용시
ProxyPassMatch ^/(.*\.jsp)$ ajp://localhost:8009/$1
* proxy 를 사용하더라도 ajp 를 사용함으로 tomcat 에서 ajp 포트를 오픈 해야 합니다.
mod_proxy - http사용시
ProxyPassMatch ^/(.*\.jsp)$ http://localhost:15359/$1
* tomcat 에서 ajp 포트를 오픈 하지 않아도 됩니다.
mod_jk , mod_proxy, mod_proxy_ajp 3가지 연동 방식 모두 설명하도록 하겠습니다.
* 모든 작업은 root 로 진행하였습니다.
Apache 설치
[root]# yum -y install epel-release
[root]# yum clean all
[root]# yum -y install httpd httpd-devel \
apr apr-util apr-devel apr-util-devel \
gcc gcc-c++ pcre-devel apr-util-openssl \
apr-util libnghttp2 libnghttp2-devel \
expat-devel libxml2-devel
Tomcat Connect 설치(Mod_JK)
[참고] mod_proxy /mod_proxy_ajp 사용하여 Tomcat 과 연결 내용은 아래쪽에 있습니다
mod_proxy /mod_proxy_ajp 사용하시려면 Mod_JK 설치는 생략하여도 됩니다.
Tomcat Connect 는 바이너리 된 버전은 최신 버전은 없어서 Compile 해서 사용할 것입니다.
[root]# wget http://mirror.navercorp.com/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz [root]# tar zxvf tomcat-connectors-1.2.48-src.tar.gz [root]# cd tomcat-connectors-1.2.48-src/native
압축을 푼 폴더 아래 native 폴더로 이동해서 ./buildconf.sh 를 실행합니다.
[root]# cd tomcat-connectors-1.2.48-src/native [root]# ./buildconf.sh
설치를 계속 진행합니다.
[root]# ./configure --with-apxs=/usr/bin/apxs [root]# make && make install
build가 완료되었다면 apache의 module 디렉토리에 mod_jk.so 파일이 있는지 확인합니다.
[root]# ls -al /usr/lib64/httpd/modules/mod_jk.so -rwxr-xr-x. 1 root root 1565872 Oct 5 03:08 /usr/lib64/httpd/modules/mod_jk.so
Tomcat Native 설치
Tomcat Native 는 패키지 설치 방법(yum or rpm, deb) 과 Source Code 를 이용하여 컴파일 하는 방식, 2가지가 있습니다.
포스팅에서는 yum(패키지) 으로 설치를 진행하도록 하겠습니다.
[root]# yum -y install tomcat-native
yum 으로 설치시 경로는 /usr/lib64/ 디렉토리에 라이브러리가 위치하게 됩니다.
[root]# rpm -ql tomcat-native-1.2.23-1.el7.x86_64
/usr/lib64/libtcnative-1.so
/usr/lib64/libtcnative-1.so.0
/usr/lib64/libtcnative-1.so.0.2.23
< ... 중략 ... >
* 패키지명(버전)은 다를 수 있습니다.
Java JDK 설치
JDK는 개발된 어플리케이션이나 Tomcat 버전에 따라서 사용하면 됩니다.
Tomcat9 버전을 설치할 것임으로 저는 1.8 을 설치하도록 하겠습니다.
Tomcat 버전 별 Java 버전은 아래 링크를 확인 해보시면 됩니다.
# Apache Tomcat Versions Match Java Version
subset of the Jakarta EE (formally Java EE) technologies. Different versions of
Apache Tomcat are available for different versions of the specifications. The
mapping between
the
specifications and the respective Apache Tomcat versions is:
# 1.6
[root]# yum -y install java-1.6.0-openjdk java-1.6.0-openjdk-devel
# 1.7
[root]# yum -y install java-1.7.0-openjdk java-1.7.0-openjdk-devel
# 1.8
[root]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
# 11
[root]# yum -y install java-11-openjdk java-11-openjdk-devel
[root]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
환경변수 추가
[root]# vi .bash_profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
export JDK_HOME=$JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin
환경변수 적용
[root]# source .bash_profile
Tomcat 설치
유저 생성
[root]# groupadd tomcat
[root]# useradd -g tomcat -s /sbin/nologin tomcat
Tomcat 버전은 사용하고자 하는 버전을 선택하시면 됩니다.
Tomcat 9 버전 다운로드(JDK 1.8이상 )
https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.38/bin/apache-tomcat-9.0.38.zip
Tomcat 8 버전 다운로드
https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.58/bin/apache-tomcat-8.5.58.zip
포스팅에서는 9버전을 설치하였습니다.
[root]# cd /usr/local [root]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.38/bin/apache-tomcat-9.0.38.zip [root]# unzip apache-tomcat-9.0.38.zip
심볼릭 링크 설정
[root]# cd /usr/local/
[root]# ln -s apache-tomcat-9.0.38 tomcat
-> 심볼릭 링크는 경로의 단일화를 위해 한 것으로 필수는 아닙니다
-> 심볼릭 링크 대신 mv 로 직접 디렉토리 명을 변경하여도 됩니다.
Ownership 변경과 파일의 실행 권한 부여
[root]# cd /usr/local/
[root]# chown -R tomcat:tomcat apache-tomcat-9.0.38
[root]# cd /usr/local/tomcat/bin
[root]# chmod 755 *.sh
Mod_JK 설정
[참고] mod_proxy /mod_proxy_ajp 사용하여 Tomcat 과 연결하여 사용하시려면 mod_jk 설정 과정은 생략하여도 됩니다.
mod_proxy /mod_proxy_ajp 연결은 아래쪽에 내용이 있습니다
먼저 기본 설정 파일인 httpd.conf 파일내에 Include 문이 있는지 확인합니다.
[root]# grep -i "Include" httpd.conf | grep -v "#"
Include conf.modules.d/*.conf
IncludeOptional conf.d/*.conf
없다면 없는 문장을 httpd.conf 에 추가해 줍니다.
1. mod_jk.conf 파일 생성 및 내용 입력
[root]# vi /etc/httpd/conf.d/mod_jk.conf
-> mod_jk.conf 을 생성하면서 내용 추가
LoadModule jk_module modules/mod_jk.so
<IfModule mod_jk.c>
JkWorkersFile conf.d/workers.properties
JkMountFile conf.d/jkmount.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
# The mod_jk log level, can be debug, info, warn error or trace.
# The default value is info.
JkShmFile run/mod_jk.shm
JkLogLevel error
JkLogStampFormat "[%y %m %d %H:%M:%S]"
# <== 로그 포맷에 사용할 시간 형식을 지정
</IfModule>
2. workers.properties 파일 생성
[root]# vi /etc/httpd/conf.d/workers.properties
--> 파일이 없다면 workers.properties 파일을 생성하면서 내용 입력
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=127.0.0.1
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.worker1.connect_timeout=10000
worker.worker1.retries=2
worker.worker1.retry_interval=1
3. jkmount.properties 파일 생성
[root]# vi /etc/httpd/conf.d/jkmount.properties
--> jkmount.properties 파일을 생성하면서 내용 입력
JkMount /*.jsp worker1
JkMount /*.do worker1
JkMount /*.json worker1
JkMount /*.xml worker1
JkMount /servlet/* worker1
JkMount /manager/* worker1
JkMount /ROOT/* worker1
JkMount /host-manager/* worker1
[참고]workers.properties안의 worker1 은 식별자입니다.
다른 식별자, worker2, ajp-worker 등 아이피 와 포트를 달리하여 더 추가할 수 있습니다.
Tomcat 을 여러 대 사용하거나 웹 호스팅 과 같은 환경에서 사용할 수 있습니다.
호스팅 과 같은 환경에서 유저별로 Tomcat을 사용 하는 등 여러가지 목적으로 사용할 수 있습니다
이렇게 파일을 생성하면 Incude 문에 의해 생성한 mod_jk.conf 파일은 apache 가 기동 되거나 reload 되면서 적용되게 됩니다.
--> IncludeOptional conf.d/*.conf
Apache 설정 변경
MPM 방식으로 변경
[root]# vi /etc/httpd/conf.modules.d/00-mpm.conf
# LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
-> 주석으로 변경
LoadModule mpm_event_module modules/mod_mpm_event.so
-> 주석해제
httpd.conf 파일 수정
[root]# vi /etc/httpd/conf/httpd.conf
ServerName www.example.com:80
-> 주석 해제
<IfModule dir_module>
DirectoryIndex index.jsp index.html
</IfModule>
---> index.jsp 추가
[참고]Virtual Host 를 사용 할 경우
아래와 같이 virtuahost 내에 jkmount.properties 파일을 include 해서 사용하면 됩니다.
<VirtualHost *:80>
ServerAdmin admin@h2code.cf
DocumentRoot "/var/www/html/webapps/ROOT"
ServerName wp.h2code.cf
ServerAlias wp.h2code.cf
ErrorLog "logs/wp.h2code.cf-error_log"
CustomLog "logs/wp.h2code.cf-access_log" combined
loglevel notice
<Directory "/var/www/html/webapps/ROOT">
AllowOverride ALL
Options MultiViews FollowSymLinks
DirectoryIndex index.jsp index.html index.htm
<RequireAll>
Require all granted
</RequireAll>
</Directory>
IncludeOptional conf.d/jkmount.properties
</VirtualHost>
Virtualhost 에 대한 추가 내용은 아래 포스팅을 참조하시면 됩니다.
예를 들어 sub1.abc.com 과 sub2.abc.com 을 하나의 서버에서 다른 웹 서비스를 처리 하거나 a1.com a2.com 과 같이 다른 도메인을 같은 하나의 서버에서 처리 하는 경우에 사용 합니다.
Tomcat 설정
server.xml 수정
[root]# vi /usr/local/tomcat/conf/server.xml
* 아래 8080 포트의 주석처리는 선택 사항입니다.
* ajp 를 사용하여 8009를 사용할 때에는 8080 포트는 disable 로 설정하기도 합니다.
* 주석 처리는 선택 사항이며 mod_proxy 테스트를 위해 일단은 주석처리는 하지 않겠습니다.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
AJP 수정
- 아래는 Default 로 설정된 내역이며 주석으로 되어 있습니다.
- 이 부분은 그대로 두시고 아래쪽에 별도로 다시 내용을 추가하도록 하겠습니다.
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
-->
아래와 내용으로 AJP 내용을 추가 하도록 하겠습니다.
<Connector address="0.0.0.0" port="8009" maxHttpHeaderSize="8192" tomcatAuthentication="false" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" secretRequired="false" enableLookups="false" acceptCount="100" redirectPort="8443" connectionTimeout="20000" disableUploadTimeout="true" protocol="AJP/1.3" />
address 절은 "(쌍따옴표) 가 필요하며 apache와 서버를 분리하여 별도로 사용하려고 할 때는 외부에서 접속이 가능하도록 address 절에 ip 나 0.0.0.0 으로 입력하면 됩니다.
Tomcat 서비스 설정
1. 파일생성
[root]# vi /usr/lib/systemd/system/tomcat.service
2. 내용 입력
[Unit]
Description=tomcat
After=network.target syslog.target
[Service]
Type=forking
Environment="CATALINA_HOME=/usr/local/tomcat"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
[참고] tomcat.service 에서 User 와 Group 은 지정한 일반 OS 유저로 Tomcat 을 구동 하기 위해서의 설정입니다.
3. 서비스 활성화
[root]# systemctl daemon-reload
[root]# systemctl enable tomcat
## htdocs 경로 변경
[root]# mv /var/www/html /var/www/html.ori
[root]# ln -s /usr/local/tomcat/webapps/ROOT /var/www/html
4. Tomcat 기동
톰켓을 기동하기 전에 apache를 재기동 혹은 reload 합니다.
[root]# systemctl stop httpd
[root]# systemctl start httpd
Tomcat 기동
[root]# systemctl start tomcat
5. 방화벽 오픈
# 80 포트 추가
firewall-cmd --permanent --add-port=80/tcp
# 80 포트 삭제
firewall-cmd --permanent --remove-port=80/tcp
# 정책 재반영 및 확인
firewall-cmd --reload;firewall-cmd --list-all
접속 후 웹페이지가 정상적으로 표시되는지 확인합니다.
Tomcat Library 및 Connector 확인
위에서 설치를 진행하는 과정에서 yum 으로 Tomcat Natitve 를 설치하였습니다.
설치를 한 이유는 Java Connector 종류가 아래처럼 있고 미 설치시 APR Warning이 발생하기 때문에 위에서 설치를 진행했었습니다.
Tomcat 사용할 수 있는 HTTP Connector는 9.0, 10.0 기준 3개로 기재되어 있습니다.
Tomcat 사용할 수 있는 AJP Connector 도 9.0, 10.0 기준 3개로 사이트 에서는 확인됩니다.
HTTP/AJP 둘 다 Library 미설치시 BIO 가 기본으로 동작하는 걸 로그상에서 확인할 수 있습니다.
8.0 까지의 문서에서는 아래와 같이 4개로 표기되었습니다.
정리하면 Native Library를 이용한 APR 방식이 성능에 더 좋다고 알려져 있습니다
그리고 Native Library 미설치시 아래와 같은 warning 메세지도 Tomcat 기동시 마다 확인되게 됩니다
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:
warning 메세지를 정리하고 추가적인 개선을 위해 Tomcat Native 를 설치 및 catalina.sh 에 설정이 완료된 상태입니다.
Tomcat 이 기동된 후 catalina.out 로그를 통해서 현재 Tomcat이 기동 된 Connector Library 를 확인해봐야 합니다
[root]# cd /usr/local/tomcat/logs
[root]# grep -ai Native catalina.out
Loaded Apache Tomcat Native library [1.2.23] using APR version [1.7.0]
-> 설치한 1.2.23 버전이 정상적으로 load 됨이 확인됩니다.
Tomcat Library 가 정상적으로 load 되었음에도 아래처럼 NIO Connector로 구동 되는 경우가 있을 수 있습니다.
Tomcat Library 인식되었으면 보통 자동적으로 APR Connector 로 동작을 하게 되지만 그렇지 않을 경우도 있긴 합니다
[root]# cd /usr/local/tomcat/logs
[root]# grep -ai http catalina.out
Starting ProtocolHandler ["http-nio-8080"]
[root]# grep -ai ajp catalina.out
Starting ProtocolHandler ["ajp-nio-0:0:0:0:0:0:0:1-8009"]
이럴 때는 server.xml 에 명시적으로 apr를 기록해주면 사용할 수 있습니다.
위에서 설정한 8008 / 8009 ajp 포트에 대해서 아래 처럼 protocol 을 수정하면 됩니다.
[root]# cd /usr/local/tomcat/conf
[root]# vi server.xml
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
redirectPort="8443" />
<Connector address="0.0.0.0" port="8009" maxHttpHeaderSize="8192" tomcatAuthentication="false"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75" secretRequired="false"
enableLookups="false" acceptCount="100" redirectPort="8443"
connectionTimeout="20000" disableUploadTimeout="true"
protocol="org.apache.coyote.ajp.AjpAprProtocol" />
http 와 ajp 를 모두 수정하였다면 tomcat 을 재시작 합니다.
[root]# systemctl restart tomcat
로그 확인
[root]# cd /usr/local/tomcat/logs
[root]# grep -ai http catalina.out
Starting ProtocolHandler ["http-apr-8080"]
[root]# grep -ai ajp catalina.out
Starting ProtocolHandler ["ajp-apr-0:0:0:0:0:0:0:1-8009"]
--> 2개 모두 apr 로 동작 되는 것을 확인할 수 있습니다.
mod_proxy / mod_proxy_ajp 사용
위에서 Apache 와 Tomcat이 정상적으로 연결된 환경에서 proxy 사용을 설명하겠습니다.
virtualhost 에 대한 추가 내용은 아래 포스팅을 참조해보시면 됩니다.
mod_proxy 와 mod_proxy_ajp 차이는
- 접속을 http(8080) 포트로 할 것인지
- 톰켓의 ajp(8009) 프로토콜 포트로 접속할 지의
차이 입니다.
설정 파일 2개를 만들겠습니다.
[root]# cd /etc/httpd/conf.d
[root]# vi mod_proxy_tomcat.properties
# 내용을 아래와 같이 생성하겠습니다.
RewriteEngine on
ProxyErrorOverride on
Timeout 600
ProxyTimeout 600
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /article/ http://localhost:8080/article/
ProxyPass /servlet/ http://localhost:8080/servlet/
ProxyPass /alice-upload/ http://localhost:8080/alice-upload/
ProxyPass /uploadManager/ http://localhost:8080/uploadManager/
ProxyPass /downManager/ http://localhost:8080/downManager/
ProxyPassMatch ^/.*\.(jsp|do)$ http://localhost:8080
[root]# vi mod_proxy_ajp.properties
# 내용을 아래와 같이 생성 하겠습니다.
RewriteEngine on
ProxyErrorOverride on
Timeout 600
ProxyTimeout 600
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /article/ ajp://localhost:8009/article/
ProxyPass /servlet/ ajp://localhost:8009/servlet/
ProxyPass /alice-upload/ ajp://localhost:8009/alice-upload/
ProxyPass /uploadManager/ ajp://localhost:8009/uploadManager/
ProxyPass /downManager/ ajp://localhost:8009/downManager/
ProxyPassMatch ^/.*\.(jsp|do)$ ajp://localhost:8009/
# virtualhost 내에서 include 하여 사용
<VirtualHost *:80>
ServerAdmin admin@h2code.cf
DocumentRoot "/var/www/html/webapps/ROOT"
ServerName wp.h2code.cf
ServerAlias wp.h2code.cf
ErrorLog "logs/wp.h2code.cf-error_log"
CustomLog "logs/wp.h2code.cf-access_log" combined
loglevel notice
<Directory "/var/www/html/webapps/ROOT">
AllowOverride ALL
Options MultiViews FollowSymLinks
DirectoryIndex index.jsp index.html index.htm
<RequireAll>
Require all granted
</RequireAll>
</Directory>
#IncludeOptional conf.d/jkmount.properties
#IncludeOptional conf.d/mod_proxy_ajp.properties
IncludeOptional conf.d/mod_proxy_tomcat.properties
</VirtualHost>
IncludeOptional 을 통해 별도로 생성해둔 properties 파일을 교체하면서 사용하시면 됩니다.
mod_proxy(http) 로 tomcat 과 연결하기 위해서는 8080 포트가 오픈이 되어있어야 합니다.
[참조] virtualhost 를 사용하지 않을 경우
<Directory "/var/www/html"> <-- 위에 ajp/proxy 의 properties 파일을 include 하면 됩니다.
예시)
IncludeOptional conf.d/mod_proxy_ajp.properties <====
# Further relax access to the default document root:
<Directory "/var/www/html">
or
IncludeOptional conf.d/mod_proxy_tomcat.properties <====
# Further relax access to the default document root:
<Directory "/var/www/html">
연관된 다른 글
Apache 에 무료 SSL 발급 설정 및 HTTP/2 적용
MySQL 5.7 설치
무료 도메인 발급 사용하기 - freenom.com
CentOS 에 Yum으로 Apache+PHP-FPM+MySQL 설치 및 연동 설정
CentOS 8 지원 종료 및 정책 변경 안내 새로운 Rocky Linux 안내
Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io
글 잘 읽었습니다.
양질의 글 정말 감사드립니다.
공부에 많은 도움이 되었습니다.
혹시 질문사항이 있는데
Java 환경변수를 /etc/profile 에 두지 않고 ./ bash_profile로 저장하신 이유를 알 수 있을까요?
두개의 디렉토리에 환경변수를 저장하는데 있어 어떤 차이점이 있나요?
안녕하세요
사실 상관이 없습니다.
다만 /etc/profile 파일에 이미 많은 내용이 있는 이유도 있기도 하고 호스팅하는 다중 톰켓을 사용하는 환경이 아니라면
root 유저로 tomcat 을 실행하기 때문에 root 유저에 이런 저런 설정 내용을 .bash_profile 에 설정할 내용이 있다보니
같이 설정을 하여 사용하였습니다.
다만 차이라면 호스팅하는 환경(다중 톰켓) 이라면 유저별로 .bash_profile 을 설정해야 하는 어려움이 있을 수 있으므로 /etc/profile 에 설정할 수 있을 것 같습니다.
그게 아닌 root 유저를 통한 tomcat 상황에서는 /etc/profile 과 .bash_profile 에 설정은 차이가 없으며 작업하시는 분께서 편하신 편으로 사용 하시면 될 것 같습니다
코멘트 감사합니다.
좋은 하루 되세요
답변 감사드립니다.
혹시 WEB/WAS가 서로 분리되어 있을때 CATALINA.OPTS 변수지정을 어떻게 할까요?
한 서버에 아파치/톰캣이 설치되어 있다면 catalina.sh 에
CATALINA_OPTS="-Djava.library.path=/usr/local/src/apr-1.7.0/lib" '
로 경로 지정하면 되겠지만 WEB/WAS가 서로 분리되어 있을 때 톰캣쪽에서 APR/native 라이브러리를 어떻게 WEB 서버로부터 APR/Native를 불러들어 올 수 있을지 궁금합니다.
입력 명령:
[root] # grep -ai Native catalina.out
받는 에러:
org.apache.catalina.core.
AprLifecycleListener.lifecycleEvent
The Apache Tomcat Native library which allows using OpenSSL
was not found on the java.library.path: [/usr/local/src/apr-1.7.0/lib]
arg.apache.catalina.LifecycleException:
The configured protocol [org.apache.coyote.http11.Http11AprProtocol]
requires the APR/native library which is not available
at sun.....invoke0(Native Method)
at sun.....java:62
)
org.apache.catalina.LifecycleException:
The configured protocol [org.apache.coyote.ajp.AjpAprProtocol]
requires the APR/native library which is not available
at sun....(Native Method)
안녕하세요
Tomcat 과 tomcat-native 을 yum 으로 설치하게 되면 tomcat native 가 설치시 library 가 /usr/lib64/libtcnative-1.so 으로 되기 때문에 별도로 설정하지 않아도 인식이 되어서 상세 PATH 를 기재 하지 않았습니다.
tomcat native 를 yum 으로 설치 하였다면 /usr/lib64/ 아래에 라이브러리 파일이 존재하고
컴파일 빌드 시에는 ./configure --prefix 에서 지정한 경로에 설치되게 됩니다.
정리하면 apache 와 tomcat 이 분리 되었을 경우에도 큰 차이 없이 패키지(rpm or yum) 나 소스 컴파일로 tomcat native 를 설치해주시면 되고 패키지의 경우 RHEL/CentOS 기준 /usr/lib64 에 파일이 위치 하게 되며
컴파일 빌드이 경우 --prefix 로 지정한 경로에 파일이 생성되게 됨으로 경로를 지정해야 합니다.
감사합니다.
정성스러운 답변 진심으로 감사드립니다.
기존 WEB-WAS (Apache httpd ↔ Tomcat)을 연동할 Apache 폴더에 APR, APR-util를 설치하여 연동을 했었는데
그렇다면 WEB(httpd) / WAS(Tomcat) 를 별도로 분리시,
WEB Server (httpd) : Tomcat Connector 설치 (mod_jk 모듈 Configuration 작업)
WAS Server (Tomcat) Tomcat Native 설치 && APR, APR-util 설치
이렇게 연동을 진행을 하면 될까요?
안녕하세요
Tomcat 를 다른 서버에서 설치 시 Tomcat Native 와 APR 을 별도로 컴파일로 설치 한다고 하였을 때
Source 파일을 다운로드 받아서 컴파일로 진행하시면 됩니다.
· Tomcat7 - Apache 2.4 연동
위의 링크 글에서 "Tomcat Native 설치" 항목을 참조하시면 조금 더 자세하게 확인 할 수 있습니다.
Mod_JK 는 Apache 설치하는 서버에서 진행함으로 그대로 진행하시면 됩니다.
저 개인적으로는 최근에는 mod_jk 보다 mod_proxy 를 쓰고 있습니다.
진행하시면서 궁금한점 있으시면 또 코멘트 주세요
감사합니다.
도움 감사드립니다.
성공적으로 연동하였습니다.
설치 방식: 소스 컴파일 방식
WEB: httpd (with Tomcat Connector)
WAS: Tomcat (with Tomcat Native, with APR, APR-util 설치)
감사합니다 🙂