티스토리 뷰

Language/Linux

리눅스에 JSP 환경 설치

MiniNeko 2015. 11. 29. 03:26

참조 : http://blog.naver.com/tatafo?Redirect=Log&logNo=150022503261 
 
 
JSP 웹서버 셋팅 정리 문서
 
Ver.2007.09.11
 
 
 
 
- 작성자: 화랑천(<st1:personname w:st="on">정광선</st1:personname>)
- 이메일: 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 <s>Indexes</s> 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 /servlet/* ajp13
JkMount /WEB-INF/* ajp13
JkMount /*.do ajp13
 
마지막줄은 원하는 JSP 파일 확장자를 추가하는 부분으로 $CATALINA_HOME/conf/web.xml (line:368) 위치에 다음과 같이 같은 확장자를 설정해주면 된다. (필수 아닌 선택)
 
< servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.do</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 CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/servlet-api.jar
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$CATALINA_HOME/bin
export PATH=$PATH:$APACHE_HOME/bin
export PATH=$PATH:$MYSQL_HOME/bin
export PATH=$PATH:$CLASSPATH
 
*CLASSPATH 중 servlet-api.jar 은 톰캣 5.0이상 그 이하는 servlet.jar 로 수정
*현버전에서는 CLASSPATH 설정 안해줘도 됨
 
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 - 추가
[출처] 리눅스에 JSP 환경 설치|작성자 그룸 

Total
Today
Yesterday
최근에 올라온 글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31