* 2009.09.22 추가 - 자바 jdk1.6.0_16 업그레이드, 오타 수정,
예전에 MS-window 에서 autoset 으로 amp 을 설치한 글을 참고해서 작성합니다.
[관련들]AutoSetAPM-Tomcat 연동
Red Hat Enterprise Server 5 설치 시 java, tomcat5를 선택하게 되면 설치되는 rpm 목록중 일부입니다.
java1.6.0-openjdk-1.6.0.0-0.30.b09.el5.x86_64
java1.6.0-openjdk-devel-1.6.0.0-0.30.b09.el5.x86_64
tomcat5-5.5.23
tomcat5-admin-webapps
tomcat5-common-lib
tomcat5-jsp-2.0
tomcat5-server-lib
tomcat5-servlet
tomcat5-webapps
레드햇 5 버전에서 설치되는 자바는 openjdk가 설치됩니다. 이를 제거하고 sun 사의 java를 설치합니다.
apache, MySQL 은 설치 CD에 있는 rpm 을 설치합니다. 이 패키지는 rpm을 설치해도 무방합니다.
설치 확인은 '프로그램>소프트웨어 추가/삭제' 에서
'검색' 탭에서 '개발용 '도구-java 개발용 도구' 로 확인하거나
'찾기' 탭에서 설치된 개별 패키지를 찾을수 있습니다.
1. Java 설치
Java sdk 를 다운(Java SDK 1.6.0)
중간 부위에 Java SE Development Kint(JDK) 아래 다운로드 버튼 클릭, 플랫폼 linux 64 선택
Available Files 아래에 jdk-64u15-linux-x64rpm.bin 클릭해서 다운
Java 설치
# cd <-- 홈디렉토리로 이동
# cd Desktop <-- linux 에서 다운로드 받은 파일의 기본 위치
# chmod u+x jdk-6u15-linux-x64-rpm.bin
# ./jdk-6u15-linux-x64-rpm.bin
라이센스 동의 yes 입력, rpm 만들어 내고 /usr/java/jdk1.6.0_16 에 자동 설치
Java path 설정(톰캣 설치 후 한번에 해도 됩니다)
# vi /etc/profile
다음 부분 추가(아래 톰캣 환경변수 부분에 다시 추가해야 함)
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME
# source /etc/profile <-- 설정 적용
# java -version <-- 자바 테스트
2. Tomcat 설치
Tomcat6 다운로드
위치 http://tomcat.apache.org/download-60.cgi
왼편 'Download' 클릭, 중앙 'Qucik Navigation' 메뉴의 '6.0.20'을 클릭, 'Binary Distributions' 아래의 Core 밑 tar.gz 클릭해서 'apache-tomcat-6.0.20.tar.gz' 파일을 다운 받습니다.
# tar xvzf apache-tomcat-6.0.20.tar.gz -C /var/tmp
# mv /var/tmp/apache-tomcat-6.0.20 /usr/local
# cd apache-tomcat-6.0.20
톰캣은 바이너리 파일이기 때문에 압축만 풀면 되며, 컴파일하는 과정이 없습니다.
Tomcat path 설정
# vi /etc/profile
java 설정 부분에 추가
CATALINA_HOME=/usr/local/tomcat6
PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH
export JAVA_HOME CATALINA_HOME
# source /etc/profile <-- 환경 설정 적용
# /usr/local/apache-tomcat-6.0.20/startup.sh <-- tomcat 실행
# /usr/local/apache-tomcat-6.0.20/shutdown.sh <-- tomcat 종료
또는
# service tomcat start
웹 브라우저에서 http://localhost:8080 입력시 고양이 로고가 나오면 Tomcat 설치 성공입니다.
화면이 나오지 않는다면 포트 문제이거나 SELinux 설정 때문일 수 있으니 둘다 비활성화 해서 테스트합니다.
포트번호는 80 포트, 8009 포트, 8080 포트가 필요합니다.
3. 아파치 웹서버와 톰캣 서버와 연동
톰캣 자체 웹 기능이 미약해서 펄, php 등 과 같은 프로그램 이용하는 경우 아파치 웹 서버와 연동해서 사용합니다. 웹 서버에서 톰캣으로 요청을 보내도록 시스템을 구성해야 합니다. 아파치 웹 서버와 톰캣과 연결하기 위해 mod_jk 를 사용합니다. mod_jk는 웹 서버 플로그인입니다. mod_jk 모듈은 클라이언트 측의 서블릿 혹은 JSP에 대한 요청은 아파치 웹서버가 mod_jk에게 전송하고, mod_jk는 전달받은 메시지를 톰캣으로 전송을 하게 됩니다.
http://tomcat.apache.org/connectors-doc/ 에서 소스를 다운로드 받을 수 있지만 여기서는 컴파일이 된 걸 바로 받아서 설치합니다.
mod_jk.so(jk-1.2.28 버젼) 다운로드
위치 http://apache.tt.co.kr/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.28/
mod_jk 파일을 이용하면 html, php 파일은 모두 apache 서버에서 동작하고 확장자가 jsp 파일만 Tomcat 에서 처리되어 웹 서버 부담이 줄어들고 80 포트 만으로 서비스가 가능해 집니다.
최종 위치는 http://apache.tt.co.kr/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.28/x86_64/mod-jk-1.2.28-httpd-2.2.x.so 입니다.
* 참고로 Red Hat Ent 5 에서는 apache 가 httpd 란 이름으로 사용됩니다.
# cp mod_jk-1.2.28-httpd-2.2.X.so mod_jk.so
이름을 바꾼 mod_jk.so 파일을 modules(/usr/lib64/httpd/modules/) 안에 넣어줍니다.
# mv mod_jk.so /usr/lib64/httpd/modules/
# chmod 755 mod_jk.so <-- 744 인걸 755 로 실행권한을 추가해 줍니다.
설치된 아파치 서버가 동적으로 모듈 관리함으로 conf/httpd.conf 가 아닌 conf.d 디렉토리에 conf 파일을 만들어 모듈 환경을 설정합니다. 따라서 conf.d 디렉토리 아래에 jk.conf 파일에 설정을 만듭니다.
# vi /etc/httpd/conf.d/jk.conf <-- 파일을 만듭니다.
LoadModule jk_module modules/mod_jk.so
DirectoryIndex index.jsp
<IfModule mod_jk.c>
JkWorkersFile conf/workers.properties
</IfModule>
#Configure mod_jk
JkLogFile /var/log/httpd/mod_jk.log # log/ httpd/ 철자 주의
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkRequestLogFormat "%w %V %T"
#Root context
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
JkMount /jsp-examples ajp13
JkMount /jsp-examples/* ajp13
JkMount /url ajp13
jk.conf 파일을 동적으로 로딩하고 mod_jk의 conf 설정은 workers.properties 에서 가지고 옵니다.
jk의 log 파일은 /var/log/httpd/mod_jk.log로 남깁니다.
# vi /etc/httpd/conf/workers.properties <-- 파일을 만듭니다.
workers.tomcat_home=/usr/local/tomcat6
workers.java_home=/usr/java/jdk1.6.0_16
ps=/
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
톰캣 설정 수정
/usr/local/apache-tomcat-6.0.20/conf/server.xml 파일을 수정합니다.
/usr/local/tomcat6/conf/server.xml 파일을 수정합니다.
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /-->
# 윗줄을 아래줄처럼 고칩니다.
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" debug="0" URIEncoding="euc-kr" />
.......
<!--Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"-->
# 윗줄을 아래줄처럼 고칩니다.
<Host name="localhost" appBase="/var/www/html"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/var/www/html" crossContext="false" debug="0" reloadable="true">
</Context>
한글 코드를 위해 euc-kr 을 추가해 주었습니다. 웹 기본 디렉토리를 아파치 서버의 기본 디렉토리로 바꾸었습니다. php와 jsp 파일들을 같은 디렉토리 내에서 처리할 수 있습니다. 주석 처리시 <!-- 와 --> 를 제대로 하지 않으면 톰캠이 제대로 동작하지 않을수 있습니다.
<Host name> 로 시작해서 </Host>이 있어야 합니다. 아래쪽에 </Host> 가 없으면 만들어줘야 합니다.
다 마쳤으면 톰캣을 재기동합니다. 웹 기본 디렉토리를 바꾸었기 때문에 웹 브라우저에서 http://localhost:8080 입력시 고양이 로고가 나오지 않습니다.
SELinux 실행시에는 httpd 가 실행이 되지 않습니다. 이때는 restorecon -v 'mod_jk.so' 라고 입력해 줍니다.
톰캣 구동을 확인하는 방법은 톰캣 초기 설치시 webapps 디렉토리 아래의 examples/index.html 파일로 확인하거나(examples 디렉토리를 웹 루트 디렉토리에 복사), 위에서 설정한 server.xml 파일의 appBase, Context path 를 원래대로 바꾸거나, 확인용 샘플 파일을 바꾸는 방법으로 확인할 수 있습니다.
톰캣 작동 확인 파일
# vi /var/www/html/hello.jsp
<%@ page contentType="text/html"%>
<%
out.print("Hello Java !!!");
%>
아파치 서버 작동 확인 파일
# vi /var/www/html/hello.jsp
phpinfo();
?>
톰캣이나 아파치가 제대로 동작을 하지 않거나 화면이 표시가 되지 않는다면,
아파치가 제대로 동작을 하는지 확인하고 별 문제가 없으면 톰캣 서버만 구동해서 확인을 해야 합니다.
웹 브라우저에서 http://localhost:8009 나 http://localhost:8009/examples/ 주소로 톰캣이 제대로 동작하는지 확인해야 합니다. 각각의 서버가 동작을 하는지 확인한 후, 연동 하는 부분을 확인하는 순서입니다.
톰캣 MySQL(jdbc) 연결 확인
위치 http://dev.mysql.com/downloads/connector/j/5.1.html
아래쪽의 다운로드 부분 클릭
아래에 No thanks, just take me to the downloads! 를 클릭한다. 태극기 옆 http 클릭
JDBC는 java 환경에서 Oracle, MySQL, DB2와 같은 데이터베이스를 사용하기 위한 드라이버입니다. 압축을 풀고 mysql-connector-java-5.1.8-bin.jar 파일을 /usr/java/jdk1.6.0_15/jre/lib/ext/ 디렉토리에 복사합니다.
# cd Desktop
# tar xvzf mysql-connector-java-5.1.8.tar.gz
# cd mysql-connector-java-5.1.8.tar.gz
# cp mysql-connector-java-5.1.8-bin.jar /usr/java/jdk1.6.0_15/jre/lib/ext/
jdbc 작동 확인 파일
# vi /var/www/html/jdbc.jsp
<%@ page import="java.sql.*" contentType="text/html;charset=euc-kr"%>
<%
String DB_URL = "jdbc:mysql://localhost/mysql";
String DB_USER = "MySQL-userName";
String DB_PASSWORD= "MySQL-password";
Connection conn;
Statement stmt;
try {
Class.forName("org.gjt.mm.mysql.Driver");
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
stmt = conn.createStatement();
conn.close();
out.println("mysql jdbc test: connect ok!!");
} catch(Exception e) {
out.println(e);
}
%>
DB_USER 와 DB_PASSWORD는 각자 MySQL 설정에 맞게 바꿔줘야 합니다.
톰캣 디렉토리 명 변경
이 경우 이제까지 사용한 설정들의 'apache-tomcat-6.0.20'을 'tomcat6' 로 바꿔야 합니다.
# mv /usr/local/apache-tomcat-6.0.20 /usr/local/tomcat6
# vi /etc/profile
# source /etc/profile <-- 환경 설정 적용
# vi /etc/httpd/conf/workers.properties
# /usr/java/jdk1.6.0_15/shtdown.sh <-- tomcat 정지
# /usr/java/jdk1.6.0_15/startup.sh <-- tomcat 실행
4. 서버 자동 실행
apache, MySQL, tomcat 이 자동실행 되게 설정합니다.
텍스트 환경이라면 /etc/rc.d/rc3.d/
x윈도우 환경이라면 /etc/rc.d/rc5.d/
의 파일들의 이름을 바꿔줍니다. 파일명 첫글자의 'S'는 start 이고, 'K'는 kill 입니다. 부팅시 필요한 데몬들을 실행되게 합니다.
제 경우 rc3.d/ 와 rc5/d/ 모두를 같이 기동하게 설정합니다.
# mv K15httdp S15httpd
# mv K36mysqld S36mysqld
그 외에 설치된 프로그램에 따라 이름을 바꿔줍니다.
# mv S08ip6tables K08ip6tables <-- ip6 는 아직 국내에서는 잘 사용하지 않습니다.
# mv K35vncserver S35vncserver
# mv K50vsftpd S50vsftpd
tomcat 의 경우 'startup.sh'로 실행 되므로, /etc/rc.d/rc.local 파일의 맨 아래에 추가하면 됩니다.
# vi /etc/rc.d/rc.local
rc3.d와 rc5.d 에 직접 만들어 주는 방법도 있습니다.
/etc/rc.d/init.d/tomcat 이란 파일로 아래 내용 작성
# Source function library.
. /etc/rc.d/init.d/functions
source /etc/profile
export tomcat_HOME=/usr/local/tomcat6 # 톰캣 경로 지정
# See how we were called.
case "$1" in
start)
echo -n "Starting tomcat EXPERIMENTAL: "
daemon $tomcat_HOME/bin/startup.sh
echo
;;
stop)
echo -n "Shutting down tomcat EXPERIMENTAL: "
daemon $tomcat_HOME/bin/shutdown.sh
echo
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
권한 설정
# chmod 755 tomcat
링크 걸기
# cd /etc/rc.d
# ln -s init.d/tomcat ./rc3.d/S80tomcat
# ln -s init.d/tomcat ./rc5.d/S80tomcat
# ln -s init.d/tomcat ./rc6.d/K80tomcat
rpm 설치시 tomcat 은 80으로 만들어져서 80으로 처리, 90을 사용하기도 합니다.
rpm 설치시 rc3.d/ rc5.d/ rc6.d/ 디렉토리에 K80tomcat 또는 S80tomcat 파일이 있을시 삭제합니다.
Red Hat Ent 5 + APM + tomcat 연동 (작업 후기 링크)