2015년 3월 26일 목요일

[CentOS 6.5] APM 소스설치 - Mysql 5.6 + httpd 2.4.7 + php 5.5.8 + Tomcat 8.0

서버 관리를 하다보니 리눅스(CentOS)에서 YUM으로 설치되는 버전이 낮아 웹 취약점들에 노출되는 경우가 발생되었다.

관공서 쪽 관리하는 경우가 많다보니 이래저래 구글링을하다가 입맛에 맞는 것을 득템!!

내 나름대로 수정을 하여 설치 성공한 이력을 남겨 놓자~

※ 설치 환경
  - OS : CentOS 6.5 32bit 및 64bit

--------------------------------------------------------------------------------


Ⅰ. 설치 전 준비

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel  ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel libtool  libtool-libs openldap openldap-devel nss_ldap openldap-clients openldap-servers libtool-ltdl libtool-ltdl-devel bison

yum groupinstall "Development Tools"
yum -y install gd gd2 gd-devel gd2-devel wget pcre openssl* perl libaio


- 설치소스 Download

http://dev.mysql.com/downloads/mysql/#downloads

Generic Linux (Architecture Independent), Compressed TAR Archive download

# wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz
# wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15-linux-glibc2.5-i686.tar.gz

Gernerally Available (GA) Releases, Source Code : Compressed TAR Archive download
# wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16.tar.gz

# wget http://mirror.apache-kr.org/httpd/httpd-2.4.7.tar.gz

# wget http://mirror.apache-kr.org/apr/apr-1.5.0.tar.gz
# wget http://mirror.apache-kr.org/apr/apr-iconv-1.2.1.tar.gz
# wget http://mirror.apache-kr.org/apr/apr-util-1.5.3.tar.gz

php : http://www.php.net/downloads.php#v5
# wget http://kr1.php.net/get/php-5.5.8.tar.gz/from/this/mirror

libiconv : http://www.gnu.org/software/libiconv/#downloading
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

libmcrypt : http://sourceforge.net/projects/mcrypt/files/Libmcrypt/
# wget ftp://ftp.superuser.co.kr/etc/libmcrypt-2.5.7.tar.gz
# wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download

mhash : http://mhash.sourceforge.net/
# wget http://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz/download

mcrypt : http://sourceforge.net/projects/mcrypt/
# wget http://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz/download

ImageMagick: http://www.imagemagick.org/script/download.php
# wget ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.8.8-4.tar.gz

imagick: http://pecl.php.net/package/imagick
# wget http://pecl.php.net/get/imagick-3.1.2.tgz


Tomcat 8.0 : http://tomcat.apache.org/download-80.cgi
# wget http://mirror.apache-kr.org/tomcat/tomcat-8/v8.0.0-RC10/bin/apache-tomcat-8.0.0-RC10.tar.gz

Tomcat Native: http://tomcat.apache.org/download-native.cgi
# wget http://mirror.apache-kr.org/tomcat/tomcat-connectors/native/1.1.29/source/tomcat-native-1.1.29-src.tar.gz

Tomcat Connector : http://tomcat.apache.org/download-connectors.cgi
# wget http://mirror.apache-kr.org//tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.37-src.tar.gz

jdk : http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
# wget http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-x64.tar.gz

pcre: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz


* 위의 모든 소스를 모아 압축해둔 것을 첨부하여 놓는다.





Ⅱ. MySQL

1. 기존 mysql 제거
yum erase mysql-libs


2. 의존성 패키지 설치
yum install cmake.x86_64
yum install ncurses-devel.x86_64
--------------- or ---------------
yum install cmake.i686
yum install ncurses-devel.i686



3. 컴파일

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=all

# make
# make install


4. 환경 설정
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
vi /etc/my.cnf
다음 항목을 [mysqld] 영역에 추가 
########################
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
server_id = 1
socket = /tmp/mysql.sock
explicit_defaults_for_timestamp=true
########################


5. 사용자 추가 및 DB 설치
groupadd mysql
useradd -r -g mysql mysql
cd /usr/local
chown -R mysql:mysql mysql
cd mysql
scripts/mysql_install_db \
--user=mysql \
--datadir=/usr/local/mysql/data \
--basedir=/usr/local/mysql


6. MySQL 시동파일 구성 및 시작
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
/etc/init.d/mysqld start


7. root 패스워드 및 보안 설정
/usr/local/mysql/bin/mysql_secure_installation

Enter current password for root (enter for none): 엔터

Set root password? [Y/n] Y
New password: 패스워드입력
Re-enter new password: 패스워드입력
Password updated successfully!
Reloading privilege tables..
 ... Success!



8. 리눅스 시작시 mysql 구동되도록 설정
chkconfig --add mysqld
chkconfig mysqld on
chkconfig --list mysqld



Ⅲ. Tomcat 8 설치

1. apr 1.4.8 설치
tar zxvf apr-1.5.0.tar.gz
cd apr-1.5.0
./configure --prefix=/usr/local/apr
make
make install


2. apr-iconv 설치
tar zxvf apr-iconv-1.2.1.tar.gz
cd apr-iconv-1.2.1
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make
make install


3. apr-util 설치
tar zxvf apr-util-1.5.3.tar.gz
cd apr-util-1.5.3
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
make
make install

4. jdk 설치
rpm -ivh jdk-7u45-linux-x64.rpm


5. Tomcat 8.0 설치
tar zxvf apache-tomcat-8.0.0-RC10.tar.gz
mv apache-tomcat-8.0.0-RC10 /usr/local/

cd /usr/local/
mv ./apache-tomcat-8.0.0-RC10 ./tomcat-8.0.0-RC10


tar xvzf tomcat-native-1.1.29-src.tar.gz
cd tomcat-native-1.1.29-src/jni/native/
./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.7.0_51/ --libdir=/usr/local/lib64
./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.7.0_51/ --libdir=/usr/local/lib

make
make install



a. 환경구성

vi /etc/profile 파일의 마지막에 다음 행 추가

export LD_LIBRARAY_PATH=/usr/local/apr/lib
export JAVA_HOME=/usr/java/jdk1.7.0_51
export TOMCAT_HOME=/usr/local/tomcat-8.0.0-RC10
export PATH=$JAVA_HOME/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib

b. 설정 확인을 위해 다음 명령 실행

# source /etc/profile
# java -version

************* 다음 내용이 출력되면 성공 ***************************
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode, sharing)
*****************************************************************

### 그냥 두고 jdk 버전의 순서를 변경하는 경우

우선 현재 java config를 살펴보자

# update-alternatives --config java
3 개의 프로그램이 'java'를 제공합니다.
  선택    명령
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk/bin/java
   2           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java

자동적으로 설치된 openjdk가 자리잡고 있다.

그러므로, 위에 설치한 버전을 config에 추가하고 선택해주어야 한다.

우선 config에 추가
-- 사용법: update-alternatives --install <링크> <이름> <경로> <우선순위>
# update-alternatives --install /usr/bin/java java /usr/local/jdk1.7.0_45/bin/java 3

그럼 추가가 됐는지 볼까요?

# update-alternatives --config java
3 개의 프로그램이 'java'를 제공합니다.
  선택    명령
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk/bin/java
   2           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
   3           /usr/java/jdk1.7.0_51/bin/java


 현재 선택[+]을 유지하려면 엔터키를 누르고, 아니면 선택 번호를 입력하십시오 :

3)에 추가가됐네요! 그럼 3을 입력하고 엔터키...

# update-alternatives --config java

3 개의 프로그램이 'java'를 제공합니다.
  선택    명령
-----------------------------------------------
*  1           /usr/lib/jvm/jre-1.7.0-openjdk/bin/java
   2           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
 + 3           /usr/java/jdk1.7.0_51/bin/java


3이 선택된 것을 알 수 있습니다.

그리고 버전을 출력하면,

#java -version

Java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)

위와 같이 위에서 설치한 sun Java가 잡혀있는 것을 볼 수 있다.



c. 방화벽 포트를 오픈

iptables -A INPUT -m state -state NEW -m tcp -p tcp -dport 8080 -j ACCEPT
service iptables save
service iptables restart

d. tomcat 시작/정지

/usr/local/tomcat-8.0.0-RC10/bin/startup.sh
# tomcat 시작

/usr/local/tomcat-8.0.0-RC10/bin/shutdown.sh
# Tomcat 정지

e. 테스트

http://server-ip:8080/

f. 구동파일 생성
vi /etc/init.d/tomcat

다음 내용을 추가
#################################################
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80

export JAVA_HOME=/usr/java/jdk1.7.0_51
export PATH=$JAVA_HOME/bin:$PATH
export CATALINA_HOME=/usr/local/tomcat-8.0.0-RC10

case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0
#################################################

chmod 755 /etc/init.d/tomcat
chkconfig --add tomcat
chkconfig tomcat on

chkconfig --list tomcat



Ⅳ. apache 설치


1. pcre 설치

pcre-8.33.tar.gz

# tar zxvf pcre-8.33.tar.gz
# cd pcre-8.33/
# ./configure --libdir=/usr/local/lib64
# ./configure --libdir=/usr/local/lib
# make && make install

ln -s /usr/local/lib64/libpcre.so.1 /lib    (64bit 일때만)

2. apache 설치

tar -xvzf httpd-2.4.7.tar.gz
cd httpd-2.4.7

groupadd apache
useradd -g apache apache

./configure --prefix=/usr/local/apache-2.4.7 \
--enable-authn-alias \
--enable-cache \
--enable-file-cache \
--enable-mem-cache \
--enable-disk-cache \
--enable-mods-shared=most \
--enable-proxy=shared \
--enable-proxy-ajp=shared \
--enable-proxy-ajp=shared \
--enable-dav=shared \
--with-apr=/usr/local/apr/ \
--with-apr-util=/usr/local/apr-util/ \
--enable-ssl \
--enable-dav \
--enable-cgi \
--with-mpm=event \
--enable-cgid \
--enable-vhost-alias \
--enable-rewrite \
--enable-forward=shared \
--enable-proxy-connect=shared \
--enable-proxy-http=shared \
--enable-deflate=shared \
--enable-so \
--enable-headers=shared \
--enable-include=shared \
--enable-rewrite=shared


make&&make install



3. Apache 사용자 지정을 위해 /usr/local/apache-2.4.7/conf/httpd.conf 파일 수정

User apache

Group apache



4. Apache 시작

/usr/local/apache-2.4.7/bin/apachectl start



테스트



http://server-ip



It Works!가 보이면 정상


5. 구동 파일 설정
cp /usr/local/apache-2.4.7/bin/apachectl /etc/rc.d/init.d/httpd
vi /etc/rc.d/init.d/httpd

다음 5줄을 #을 포함하여 위 파일의 상단부에 복사
# chkconfig: 2345 90 90
# description: init file for Apache server daemon
# processname: /usr/local/apache-2.4.7/bin/apachectl
# config: /usr/local/apache-2.4.7/conf/httpd.conf
# pidfile: /usr/local/apache-2.4.7/logs/httpd.pid

chkconfig --add httpd
chkconfig httpd on
chkconfig --list httpd

아파치 재시작
/etc/rc.d/init.d/httpd restart




Ⅴ. php-5.5.8 설치

1. PHP 5 지원 라이브러리 설치

a. libiconv(문자 인코딩 라이브러리)

tar xvzf libiconv-1.14.tar.gz
cd libiconv-1.14/
./configure --prefix=/usr/local --libdir=/usr/local/lib64
./configure --prefix=/usr/local --libdir=/usr/local/lib
make && make install
cd ..

b. libmcrypt(PHP에서 암호화 해독 알고리즘인 mcryp를 사용하기 위해서 설치해야 한다)

tar xvzf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local --libdir=/usr/local/lib64
./configure --prefix=/usr/local --libdir=/usr/local/lib
make && make install

/sbin/ldconfig

cd libltdl/
./configure --enable-ltdl-install --libdir=/usr/local/lib64
./configure --enable-ltdl-install --libdir=/usr/local/lib
make && make install
cd ../../

c. mhash(hash암호화 알고리즘)

tar xvzf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure --prefix=/usr/local --libdir=/usr/local/lib64
./configure --prefix=/usr/local --libdir=/usr/local/lib
make && make install
cd ..


d. mcrypt 설치

tar xvzf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
/sbin/ldconfig
./configure --prefix=/usr/local --libdir=/usr/local/lib64
./configure --prefix=/usr/local --libdir=/usr/local/lib
make && make install
cd ..

-- 오류 해결 방법 : configure: error: *** libmcrypt was not found
# vi .bash_profile (root 계정을 사용할 수 있을 경우 /etc/ld.so.conf 파일에 추가, 이 때 디렉토리들만 추가할 것)
---------------------------- 라이브러리 환경변수 추가 ------------------------
...
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
...
# source .bash_profile
* 또는 root 권한이 있을 경우, /etc/ld.so.conf 파일 수정
# vi /etc/ld.so.conf
...
include ld.so.conf.d/*.conf
/lib
/usr/lib
/usr/local/lib
...
# ldconfig


2. php-5.5.8 설치

yum install libxml2-devel bzip2-devel libcurl-devel openldap-devel 

tar xvzf php-5.5.8.tar.gz

mysql lib를 64비트로 인식되도록 변경
ln -s /usr/local/mysql/lib /usr/local/mysql/lib64

./configure --prefix=/usr/local/php-5.5.8 \
--with-libdir=lib64 \
--with-config-file-path=/usr/local/php-5.5.8/etc \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-apxs2=/usr/local/apache-2.4.7/bin/apxs \
--with-pear=/usr/share/php \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-maintainer-zts \
--enable-opcache \
--with-curl \
--with-iconv-dir=/usr/local \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-ldap \
--with-ldap-sasl \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-bz2 \
--enable-static \
--enable-intl \
--enable-exif \
--with-pdo-mysql=/usr/local/mysql \
--with-gettext

configure 오류시 : configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.
# yum -y install icu libicu-devel
# ldconfig

configure 오류시 : configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no
해결방법 : 심볼릭 링크 생성
# ln -s /usr/local/mysql/lib/libmysqlclient.so /usr/lib
# ln -s /usr/local/mysql/lib/libmysqlclient.so /usr/lib64/
# ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib
# ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/

make

iconv관련 링크에러가 날  경우 vi 로 Makefile 을 열어서 EXTRA_LIBS 를 찾아 -liconv 를 추가
# cd /usr/local/php-5.5.8
# vi ./Makefile
    /EXTRA_LIBS 명령어로 검색
    -liconv 추가

make 오류시 : error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
# vi /etc/ld.so.conf
    아래 내용 추가
    ###################################
    /usr/local/mysql/lib
    /usr/local/mysql/lib64
    ###################################

make install


3. php구성 파일 생성
cp -f php.ini-production /usr/local/php-5.5.8/etc/php.ini


4. opcache 활성화
/usr/local/php-5.5.8/etc/php.ini 의 opcache 부분을 아래와 같이 변경

 [opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000

;opcache.max_wasted_percentage=5
;opcache.use_cwd=1
;opcache.validate_timestamps=1

opcache.revalidate_freq=60

;opcache.revalidate_path=0
;opcache.save_comments=1
;opcache.load_comments=1

opcache.fast_shutdown=1

;opcache.enable_file_override=0
;opcache.optimization_level=0xffffffff
;opcache.inherited_hack=1
;opcache.dups_fix=0
;opcache.blacklist_filename=
;opcache.max_file_size=0
;opcache.consistency_checks=0
;opcache.force_restart_timeout=180
;opcache.error_log=
;opcache.log_verbosity_level=1
;opcache.preferred_memory_model=
;opcache.protect_memory=0

맨 끝에 다음 내용 추가
zend_extension=/usr/local/php-5.5.8/lib/php/extensions/no-debug-zts-20121212/opcache.so




Ⅵ. PHP5확장모듈 컴파일 및 설치


1. ImageMagick-6.8.8-3.tar.xz 설치

ImageMagick은 TIFF, JPEG, GIF, PNG, PDF 및 기타 포토 CD 등 89가지 이상의 이미지의 읽기, 쓰기 및 처리하는 데 사용할 수 있는 안정적인 도구 및 개발 키트 세트입니다

tar xvzf ImageMagick-6.8.8-3.tar.gz
cd ImageMagick-6.8.8-3
./configure --libdir=/usr/local/lib64
./configure --libdir=/usr/local/lib
make && make install
cd ..


2. imagick-3.1.2.tgz 설치

yum -y install gtk2-devel* gtk+extra

tar -zxvf imagick-3.1.2.tgz
cd imagick-3.1.2

/usr/local/php-5.5.8/bin/phpize
./configure --with-php-config=/usr/local/php-5.5.8/bin/php-config
make && make install

vi /usr/local/php-5.5.8/etc/php.ini
"Dynamic Extensions" 부분 마지막 라인에 추가
extension=/usr/local/php-5.5.8/lib/php/extensions/no-debug-zts-20121212/imagick.so
cd ..

3. php
# echo "/usr/local/php-5.5.8/lib" >> /etc/ld.so.conf
# ldconfig

4. php-cgi 프로세스 시작
cd /usr/local/php-5.5.8/etc
cp php-fpm.conf.default php-fpm.conf

올바른 구분을 시작하기 전에 다음 php-fpm.conf 를 테스트 할 수 있습니다.

/usr/local/php-5.5.8/sbin/php-fpm -t
NOTICE: configuration file /usr/local/php-5.5.8/etc/php-fpm.conf test is successful
위 메세지가 나오면 성공

/usr/local/php-5.5.8/sbin/php-fpm 실행


5. apache 에서 PHP5 지원

vi /usr/local/apache-2.4.7/conf/httpd.conf
#아래 LoadModule 추가
LoadModule php5_module modules/libphp5.so

#AddType 추가
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    바로 아래 아래 스크립트 추가
    
    AddType application/x-httpd-php .php .php3 .inc
    AddType application/x-httpd-php-source .phps

아파치 재시작
/usr/local/apache-2.4.7/bin/apachectl restart

libconv 에러 발생시 /usr/local/apache-2.4.7/bin/apachectl 와 /etc/rc.d/init.d/httpd 의 맨 위에 다음 라인 추가
export LD_PRELOAD=/usr/local/lib64/libiconv.so
-------------------- or --------------------
export LD_PRELOAD=/usr/local/lib/libiconv.so

6. php지원 여부 테스트

cd /usr/local/apache-2.4.7/htdocs
echo "<?php phpinfo(); ?>" > phpinfo.php

http://server-ip/phpinfo.php,정상적으로 출력되는 지 확인



Ⅶ. apache와 tomcat 통합

 1. mod_jk 생성

tomcat-connectors-1.2.37-src.tar.gz
tar xvzf  tomcat-connectors-1.2.37-src.tar.gz
cd tomcat-connectors-1.2.37-src/

cd native
./configure --with-apxs=/usr/local/apache-2.4.7/bin/apxs
make
cp ./apache-2.0/mod_jk.so /usr/local/apache-2.4.7/modules/

2. 설정파일 복사
cd ../conf
cp httpd-jk.conf /usr/local/apache-2.4.7/conf/mod_jk.conf
cp workers.properties /usr/local/apache-2.4.7/conf/

a. mod_jk.conf 설정

vi /usr/local/apache-2.4.7/conf/mod_jk.conf

다음 내용 추가: 

JkWorkersFile /usr/local/apache-2.4.7/conf/workers.properties
JkLogFile /usr/local/apache-2.4.7/logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"

JkMount /servlet/* worker1
JkMount /*.jsp         worker1
JkMount /application/* worker1
JkMount /*.do          worker1
JkMount /*.class       worker1
JkMount /*.jar         worker1

########해석#############

1. JkMount 위치는 Tomcat이 해석을 담당, JkUnMount는 반대임
2.  JkMount /test/* worker1 의 의미는 test 디렉토리 아래는 Tomcat이 처리를 담당
3. jsp와servlet은 tomcat이 처리, 그 외 그림이나 정적 파일은 Apache가 처리
###################

b. vi /usr/local/apache-2.4.7/conf/workers.properties

마지막줄에 다음 내용 추가: 

worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=192.168.1.185
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300

c. apache 설정파일 수정

vi /usr/local/apache-2.4.7/conf/httpd.conf
다음 내용 추가 --------------------------
Include /usr/local/apache-2.4.7/conf/mod_jk.conf

# 위 mod_jk.conf 파일의 맨 위에 아래 라인이 있는 지 확인
LoadModule jk_module modules/mod_jk.so

d. TOMCAT 설정 변경

cd /usr/local/tomcat-8.0.0-RC10/conf
vi server.xml

<Host 를 찾음
(다음과 같음:  <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">)

다음 줄에 다음 내용을 추가: 
<Context path="" docBase="/usr/local/tomcat-8.0.0-RC10/webapps"
 debug="0" reloadable="true" crossContext="true"/>

########dobase 경로는 /usr/local/apahce/htdocs 로 변경 가능#####

e. apache와 tomcat을 다시 시작

apache 재시작

/usr/local/apache-2.4.7/bin/apachectl stop
/usr/local/apache-2.4.7/bin/apachectl start

tomcat 재시작

/usr/local/tomcat-8.0.0-RC10/bin/shutdown.sh
/usr/local/tomcat-8.0.0-RC10/bin/startup.sh


이 시점에서,tomcat과 apache 통합 완료!


성공여부 확인 :

/usr/local/apache-2.4.7/logs/mod_jk.log 확인
다음과 같은 라인이 나오면 성공!
[Sun Sep 22 23:21:18 2013][15053:3078219984] [info] init_jk::mod_jk.c (3365): mod_jk/1.2.37 initialized

테스트:

vi /usr/local/tomcat-8.0.0-RC10/webapps/test.jsp

다음 내용 추가:

<html>
<h1>JSP test<hr>

<%out.println("Hello World!");%>

</html>



http://server-ip/test.jsp

출력결과: HELLO WORLD