05.JSP2008. 8. 25. 17:14
반응형

JSP 웹서버 셋팅 정리 문서

 

Ver.2007.09.11 (deprecated)

 

 

 

 

- 작성자: 화랑천(정광선)

- 이메일: gsun2@nate.com (nate)

 

- 구축환경: Apache2.2 + Tomcat6.0 + JK1.2 + MySql5 on Linux

 

- 차례

1.    Apache 2.2 Install

2.    Tomcat 6.0 Install

3.    JK 1.2 Install

4.    Apache Configuration

5.    Tomcat Configuration

6.    MySql 5 Install and Configuration

7.    Environment variable Configuration And TIP

8.    PHP5 And ZendOptimizer Install

 

- 참고사항

l  Linux SULinux(Redhat EL4) 버전에서 테스트 되었다.

l  문서는 최신(작성일기준) 버전들의 연동 셋팅방법을 자세히 설명한다.

l  기초적인 것부터 자세히 기술하여 초보자에게 확실한 도움을 주고자 한다.

l  단계를 벗어난 로드밸런싱, 클러스터링등은 다루지 않는다

l  다운로드 받거나 보관될 소스 원본 위치: /usr/local/src

l  원칙적으로 RPM 버전은 사용하지 않는다.

l  다운로드 주소는 마우스 오른 클릭 팝메뉴의 [바로가기 복사] 얻을 있다.

l  관리의 편의성을 위하여 프로그램 설치 디렉토리명에 버전까지 명시한다.

Ex) apache1.3 apache2.0 둘중 실제 사용하는 것을 apache 심볼릭링크


 

 

1. Apache 2.2 Install

 

Apache ? – 정적 파일의 서비스를 담당하는 웹서버

 

Tomcat 자체적으로도 정적 파일 서비스 기능이 있으나 속도가 느리기 때문에 정적 파일만을 전문으로 서비스하는 Apache 연동하여 역할을 분담하는 방식으로 주로 사용한다.

 

문서 작성 기준 버전: 2.2.6  (lastUpdate 2007.09.07)

 

" 버전이 아파치 최선이라고 생각하며, 모든 사용자가 업그레이드하기를 권장한다. 아파치 2.2 2.0 코드베이스와 비교할 수많은 개선점과 성능 향상을 이뤘다" // 아파치 재단 성명서

 

l  Apache2 Reference Doc: http://httpd.apache.org/docs-2.2/

l  Apache2 Download from httpd.apache.org (wget)

l  ]# tar xzvf httpd-2.2.6.tar.gz

l  ]# cd httpd-2.2.6

l  ]# ./configure --prefix=/usr/local/apache-2.2.6 --enable-so --with-mpm=worker

l  ]# make

l  ]# make install

l  ]# cd /usr/local/

l  ]# ln -s apache-2.2.6 apache

l  ]# ln -s /usr/local/apache/htdocs /home/webRoot

l  ]# ln -s /usr/local/apache/logs /logs

 

인터넷에서 접할 있는 여러 apache 설치 문서에서 -–bindir, --sbindir, --enable-layout 등을 사용하여 리눅스 공용 bin, sbin dir 옮기는 경우가 있는데, 관리상 불편을 초래하므로 절대 권장하지 않는다. --prefix 설치경로에 몰아 넣는 디폴트 설정에 따르도록 하자.

 

--enable-so 옵션은 동적공유객체(DSO) 사용 옵션으로 설치 당시의 공유객체들을 정적으로 사용하고 나중에 추가될 공유객체들의 httpd.conf 에서 추가할 있게 한다. (httpd –l 확인)

 

--with-mpm=worker 옵션은 다중처리모듈을 worker 설정한다. worker 방식은 쓰레드를 사용하여 많은 사용자수에 유연하게 대응할 있는 높은 확장성(scalability) 특징이다. 리눅스에서 설치시 기본값은 prepork 인데, 쓰레드를 사용하지 않으며 MaxClient 256 제한이라는 단점이 있다. worker 옵션을 적용하면 적은 메모리를 사용하여 빠른 속도를 있다.

 

$APACHE_HOME/htdocs 디렉토리를 /home/webRoot 심볼릭링크 이유는 이후 가상호스트로 여러 사이트를 운영시 모든 사이트들의 DocumentRoot /home/SITE_ID 처럼 만들어서 관리의 편의성을 통일하고 권한설정의 편의를 위해서 설정한다.


 

l  기타 유용한 Apache configure option

Apache configure 설정은 언제든지 재컴파일을 쉽게 할수 있다.(httpd.conf설정유지됨)

   ]# ./configure --prefix=/usr/local/apache-2.2.4 --enable-so --with-mpm=worker --enable-rewrite --enable-headers

 

--enable-rewrite 정규표현식을 사용하여 URI 포워딩 해주는 유용한 모듈로써 파라미터를 숨겨서 깔끔한 URI 처리가 가능하다.

 

사용되는 사이트의 DocumentRoot(./htaccess 있는 Dir) 설정

<Directory "/home/DOCUMENT_ROOT">

    AllowOverride all

</Directory>

 

 ex) http://domain.com/USER_ID/1234 -> http://domain.com/index.jsp?id=$1&no=$2

        ]# vi DOCUMENT_ROOT/.htaccess

        RewriteEngine On

        RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+)$ ./index.jsp?id=$1&no=$2

 

--enable-headers IE6 버전에서 각각의 프레임에서 쿠키를 구울 없는것을 헤더를 직접 컨트롤함으로써 사용가능하게 하는 목적으로 쓰인다.

 

 ex) Header set P3P "CP=\"ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC\""

 

--enable-cache 튜닝관련하여 민감한 부분으로 확실한 정보가 부족하기 때문에 Reference Doc 링크를 참조하여 사용할 있다면 성능향상을 기대할 있다.

http://httpd.apache.org/docs/2.2/mod/mod_cache.html


 

 

2. Tomcat 6.0 Install

 

Tomcat 이란? – 가장 유명한 JSP, Servlet Container

 

문서 작성 기준 버전: 6.0.14 (lastUpdate 2007.08.09)

 

Tomcat 설치하기 전에 반드시 먼저 JDK 설치되어 있어야 한다.

 

l  JDK Download from java.sun.com (wget) *Linux self-extracting version (not RPM)

l  wget으로 그냥 받을 경우 파일명이 너무 길기 때문에 -O 옵션을 써준다.

l  ]# wget http://192.18.108.208/~~~/jdk-6u2-linux-i586.bin -O jdk-6u2-linux-i586.bin

l  ]# chmod +x jdk-6u2-linux-i586.bin

l  ]# ./ jdk-6u2-linux-i586.bin

l  q (--more-- ,skip)

l  yes (agree)

l  ]# mv jdk1.6.0_02 /usr/local/

l  ]# cd /usr/local/

l  ]# ln –s jdk1.6.0_02 jdk

 

Tomcat 설치는 압축을 푸는 만으로 완료된다.

 

l  Tomcat5.5 Reference Doc: http://jakarta.apache.org/tomcat/tomcat-6.0-doc/

l  Tomcat5.5 Download from tomcat.apache.org (wget)

l  ]# tar xzvf apache-tomcat-6.0.14.tar.gz –C /usr/local/

l  ]# cd /usr/local

l  ]# mv apache-tomcat-6.0.14 tomcat-6.0.14

l  ]# ln -s apache-tomcat-6.0.14 tomcat

l  ]# ln -s /usr/local/tomcat/logs/catalina.out /logs/catalina.out

 


 

3. JK 1.2 Install

 

JK Connector ? - Apache + Tomcat 연동 프로그램

 

[참고1] JK2 Connector 2004.11. 이후 개발 지원 중단되어 더이상 사용되지 않으므로 JK2 최신버전인 것으로 오해하지 않도록 주의. (deprecated)

 

[참고2] JK1.2.21 버전과 JK1.2.23 버전에서 중요한 보안 업데이트가 이루어 졌으므로 반드시 1.2.24이상의 최신버전을 사용해야 한다. 최신버전을 사용하고 있지 않다면 반드시 업데이트 해야한다.

 

문서 작성기준 버전: 1.2.25 (lastUpdate 2007.08.07)

 

JK 설치에는 가지 방법이 있는데, 하나는 일반적인 컴파일로 jk_mod.so 생성 아파치 모듈 디렉토리에 복사하고 설정파일에도 추가하는 동적모듈방식이고, 다른 하나는 아파치를 설치하기 이전에 아파치 소스에 포함하여 아파치 설치 자동으로 설치되는 정적모듈방식이다. 이중 두번째 방식이 성능이 좋으나 Apache2.2 에서 아직 지원되지 않고 있기 때문에 동적모듈방식만 설명한다.

 

l  JK Connector Reference Doc: http://tomcat.apache.org/connectors-doc/

l  JK Connector Download from http://tomcat.apache.org/connectors-doc/ (wget)

l  ]# tar xzvf tomcat-connectors-1.2.25-src.tar.gz

l  ]# cd tomcat-connectors-1.2.25-src/native

l  ]# ./configure --with-apxs=/usr/local/apache/bin/apxs

l  ]# make

l  ]# cp ./apache-2.0/mod_jk.so /usr/local/apache/modules/

 


 

4. Apache Configuration

 

l  ]# vi /usr/local/apache/conf/httpd.conf

 

l  접근권한 디렉토리 변경 (웹서비스 디렉토리 : /home) (line:128)

<Directory “/home”>

l  웹에서 디렉토리 파일리스트 정보 출력막기 (Indexes 삭제) (line:141)

Option Indexes FollowSymLinks

l  디렉토리 인덱스파일 리스트에 index.jsp 추가 (line:163)

DirectoryIndex index.html index.jsp

l  에러로그 파일 설정 - 10메가 초과시 새로운 로그파일 생성 (cronolog 대체추천) (line:183)

ErrorLog "|/usr/local/apache/bin/rotatelogs /logs/errorlog.%y%m 10M"

l  기본 엑세스로그 주석처리 (가상호스트 사이트마다 따로 로깅함) (line:212)

CustomLog logs/access_log common

l  로그 필터링 - 불필요한 이미지파일등의 로그는 하지않음 (line:205)

SetEnvIfNoCase Request_URI "\.(gif|jpg|png|css|js|java|swf|ico)$" do_not_log

 

l  JK Connection 설정부분 추가 (line:마지막)

# JK Connection

LoadModule jk_module modules/mod_jk.so

JkWorkerProperty worker.list=ajp13

JkWorkerProperty worker.ajp13.type=ajp13

JkWorkerProperty worker.ajp13.host=localhost

JkWorkerProperty worker.ajp13.port=8009

JkLogFile "logs/mod_jk.log"

JkLogLevel info

JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

JkMount /*.jsp ajp13

JkMount /*.XXX ajp13

 

마지막줄은 원하는 JSP 파일 확장자를 추가하는 부분으로 $CATALINA_HOME/conf/web.xml (line:368) 위치에 다음과 같이 같은 확장자를 설정해주면 된다. (필수 아닌 선택)

 

<servlet-mapping>

    <servlet-name>jsp</servlet-name>

    <url-pattern>*.XXX</url-pattern>

</servlet-mapping>


 

l  가상호스트 설정 방법

NameVirtualHost * (line:마지막) 추가

<VirtualHost *>

    ServerAdmin admin@server.domain

    DocumentRoot /home/webRoot

    ServerName default.server.domain

    CustomLog "|/usr/local/sbin/cronolog /logs/SITE_ID/%y%m%d.log" combined env=!do_not_log

</VirtualHost>

 

- 처음설정은 디폴트 호스트(DocumentRoot)로써 주로 비워두거나 테스트용도로 설정한다.

- [주의] 가상호스트로 사용하기 위해선 반드시 위에서 설정한 <Directory “/home”> 확인해야한다. 이를 설정하지 않는다면 모든 가상호스트들 접속시 403에러(접근권한에러) 난다.

- 이후 추가되는 가상호스트는 같은 형식으로 추가 DocumentRoot ServerName 수정

 

l  Cronolog - 위에서 설정한 날짜 로그기록 유틸

- http://cronolog.org/download/cronolog-1.6.2.tar.gz

- cronolog 설치 ( ./configure > make > make install )

 

l  아파치의 접속자수 제한 튜닝 (동시접속자수 수백명이상일경우)

#Include conf/extra/httpd-mpm.conf (line:367) 주석 제거

]# vi /usr/local/apache/conf/extra/httpd-mpm.conf (worker 부분만 수정)

MaxClient 값의 제한은 ServerLimit*ThreadsPerChild 이므로 기본값에 의한 최대치는 현재 400 이다.(16*25) 최대치를 1024 정도로 맞추자면 다음과 같이 설정한다.

 

StartServers               16

MaxClients                  1024

MinSpareThreads         128

MaxSpareThreads        256

ThreadsPerChild           64

MaxRequestsPerChild    0

 

 




5. Tomcat Configuration

 

-      server.xml

 

l  Reference Doc: http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/

l  <Connector port="8080"> 모두 주석처리 (아파치와의 커넥터(ajp13) 사용)

l  <Connector port="8009"> URIEncoding="UTF-8" 추가. (GET request 한글처리)

 

l  가상호스트 설정(아파치와 똑같이 설정)

<Host name="virtual.host.domain" appBase="/home/virtualHomeDir" autoDeploy="true">

<Context path="" docBase="" reloadable="true" allowLinking="true"></Context>

</Host>

 

l  DBCP JNDI 설정

- <GlobalNamingResources>내에 다음과 같은 형식으로 추가.

<Resource name="jdbc/name" auth="Container" type="javax.sql.DataSource"

driverClassName="com.mysql.jdbc.Driver"               url="jdbc:mysql://xxx.xxx.xxx.xxx:3306/dbname?autoReconnect=true&amp;useUnicode=true&amp;min-connections=2"

username="dbid" password="dbpasswd" maxActive="25" maxIdle="10" maxWait="-1" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"/>

- 사용할 <Context></Context> 내에 다음과 같이 ResourceLink 추가

<Context path="" docBase="" reloadable="true">

<ResourceLink name="jdbc/name" global="jdbc/name" type="javax.sql.DataSource"/>

</Context>


 

-      web.xml

 

l  “$CATALINA_HOME/conf/web.xml” “appBase/docBase/WEB-INF/web.xml” 이해

모든 application 설정 모두 적용되며, 해당 application 따라 conf/web.xml WEB-INF/web.xml include 되는 개념이다. 따라서 파일에 중복 설정은 불가능하며, 기본적인 공용 설정부분을 conf/web.xml 쓰고, 해당 application에서만 쓰이는 설정을 WEB-INF/web.xml 설정하면 된다. 보통 WEB-INF/web.xml 다음과 같이 만들어주면 된다.

 

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

    version="2.4"></web-app>

 

l  POST request 한글처리

]# cd /usr/local/tomcat/webapps/examples/WEB-INF/classes

]# jar cvf filters.jar ./filters

]# mv filters.jar /usr/local/tomcat/lib/

]# vi conf/web.xml (맨하단 </web-app> 바로윗줄에 추가)

 

<!-- Charactor Encoding(Only POST method Request -->

<filter>

<filter-name>Set Character Encoding</filter-name>

<filter-class>filters.SetCharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

</filter>

 

<filter-mapping>

<filter-name>Set Character Encoding</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>


 

 

6. MySql Install and Configuration

 

문서 작성 기준 버전: 5.0.45 (last update 2007.07.04)

 

설치 mysql 계정이 있는지 반드시 확인하고, 없으면 생성한다. (useradd mysql)

 

l  MySql5.0 Download from dev.mysql.com (wget)

l  ]# tar xzvf mysql-5.0.45-linux-i686.tar.gz -C /usr/local/

l  ]# cd /usr/local

l  ]# ln -s mysql-5.0.45-linux-i686 mysql

l  ]# cd mysql

l  ]# ./scripts/mysql_install_db

l  ]# chown –R mysql.mysql .

l  ]# cp support-files/my-huge.cnf /etc/my.cnf

l  ]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

l  ]# ln –s ../init.d/mysqld /etc/rc0.d/K01mysqld

l  ]# ln -s ../init.d/mysqld /etc/rc3.d/S99mysqld

l  ]# service mysqld {start|stop}

l  ]# vi /etc/my.cnf

[client]

default-character-set = utf8

[mysqld]

user = mysql

wait-timeout = 300

max-connections = 200

default-character-set = utf8

language = /usr/local/mysql/share/mysql/korean/

[mysqldump]

default-character-set = utf8

[mysql]

default-character-set = utf8

l  Connector/J Install

Connector/J Download from dev.mysql.com (wget) (/usr/local/src)

]# tar zxvf mysql-connector-java-5.0.7.tar.gz

]# cd mysql-connector-java-5.0.7

]# mv mysql-connector-java-5.0.7-bin.jar /usr/local/jdk/jre/lib/ext/

l  계정생성 권한설정

grant select,insert,update,delete,create,drop on databasename.* to 'id'@'lo

calhost' identified by 'pass';


 

 

7. Environment variable Configuration And TIP

 

l  다음과 같이 /etc/profile 환경변수를 추가할때 alias 추가해주자.

]# vi /etc/profile (맨하단에 추가)

 

# user alias

alias tl='tail -f /usr/local/tomcat/logs/catalina.out'

alias ac='vi /usr/local/apache/conf/httpd.conf'

alias tc='vi /usr/local/tomcat/conf/server.xml'

 

# user environment

export APACHE_HOME=/usr/local/apache

export JAVA_HOME=/usr/local/jdk

export CATALINA_HOME=/usr/local/tomcat

export CATALINA_OPTS="-server"

export MYSQL_HOME=/usr/local/mysql

export PATH=$PATH:$JAVA_HOME/bin

export PATH=$PATH:$CATALINA_HOME/bin

export PATH=$PATH:$APACHE_HOME/bin

export PATH=$PATH:$MYSQL_HOME/bin

 

l  서버 부팅 후에 바로 서비스가 실행되게 하는 설정

리눅스도 윈도우와 마찬가지로 MYSQL 설치 부분 에서 설정 한것과 같은 서비스방식과 윈도우의 시작프로그램과 같은 방식이 있다. 이중 TOMCAT APACHE 서비스방식보다 윈도우의 시작프로그램과 같은 방식이 편하기 때문에 이를 설명한다.

 

]# vi /etc/rc.d/rc.local (맨하단에 추가)

 

source /etc/profile

catalina.sh start

apachectl start

 

l  UTF-8 환경

UTF-8 인코딩은 완벽하게 한글을 지원할 뿐만 아니라 유니코드로써 다국어 지원 코드이다. 따라서 현재까지 많이 사용되어왔던 EUC-KR 인코딩 방식의 미지원한글 깨짐 문제를 해결할수 있다. 하지만 UTF-8 사용하기 위해서는 서버환경설정 뿐만아니라 작성되는 문서도 UTF-8 인코딩 저장되어야 한다. 따라서 개발할 사용되는 에디터에서 반드시 저장옵션을 UTF-8 해야한다.


 

 

8. PHP5 And ZendOptimizer Install

 

PHP ? - JSP 같은 웹서버 스크립트 언어를 뜻함과 동시에 Tomcat같은 웹서버컨테이너 프로그램.

 

기본적인 JSP 셋팅이 완료된 시점에서 PHP 설치는 선택사항으로써 필요한 경우에만 설치한다. 이는 JSP PHP 동시에 사용하고자 필요한 경우로써 매력적인 공개소스 하나인 제로보드 PHP 환경에서 실행되기 때문이다.

 

[참고] Tomcat 경우 Apache 와의 연동이 필수가 아닌 선택이지만 PHP 반드시 Apache 설치가 필수이다.

 

l  PHP5 Reference Doc: http://doc.php.net/php/dochowto/

l  PHP5 Download from http://www.php.net/downloads.php (wget)

l  ]# tar zxvf php-5.2.4.tar.gz

l  ]# cd php-5.2.4

l  ]#./configure --prefix=/usr/local/php-5.2.4--with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql--with-zlib --with-gd --with-ttf --with-png-dir

l  ]# make

l  ]# make test

l  ]# make install

l  ]# cp php.ini-dist /usr/local/php-5.2.4/lib/php.ini

l  ]# cd /usr/local/

l  ]# ln -s php-5.2.4 php

 

Zend Optimizer ? - PHP 성능을 40%가량 향상시켜 주는 최적화 유틸

 

l  Zend Optimizer Download from : http://www.zend.com/free_download/optimizer

[참고] 가입필수이며, wget 사용이 불가함. 다운로드 ftp 등을 통하여 업로드.

l  ]# tar zxvf ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz

l  ]# cd ZendOptimizer-3.3.0a-linux-glibc21-i386

l  ]# ./install

l  [TEXT GUI] 보통 OK YES EXIT 등의 단일선택으로 넘어가고 php.ini 경로만 적어주면 된다.

 

Apache httpd.conf 설정 (ac)

 

l  DirectoryIndex index.htm index.jsp index.php - index.php 추가

l  LoadModule php5_module modules/libphp5.so - 확인

l  AddType application/x-httpd-php .php .phtml - 추가

l  AddType application/x-httpd-php-source .phps - 추가
Posted by 1010