'톰캣'에 해당되는 글 3건

  1. 2010.09.02 Tomcat Web Server SSL 설정
  2. 2009.01.02 Apache + Tomcat + Oracle 구축 설명서 (1)
  3. 2009.01.02 Tomcat 컨테이너와 Apache 웹서버 연동 (3)
2010. 9. 2. 18:53

Tomcat Web Server SSL 설정

디지털 커머스의 증가와 중요한 데이터간의 이동이 필요함에 따라서 보안은 모든 어플리케이션에서 중요한 자리를 차자하고 있습니다. 일반적으로 client 와 서버간에 사용자를 확인하기 위한 방법으로 username 과 password 를 체크합니다. 이를 사용하는 보안 처리 기법으로 Secure Sockets Layer (SSL) 과 Java Authentication and Authorization Service (JAAS)를 사용할 수가 있습니다. 먼저 SSL로 보안인증을 거치는 방법을 보고 java 에서 지원하는 다른 사용자 인증서비스인 JAAS을 jsp와 서블릿에서 사용하는 법을 보겠습니다.


1. 톰켓에서 사용자 인증 처리하기

톰켓으로 사용자 인증처리를 하기전에 먼저 username, password, role 을 등록해야 합니다. 등록하는 방법은 아주 쉽습니다. 톰켓이 설치된 폴더에서 /conf 에 보면 tomcat-user.xml 파일이 있습니다. 없으면 에디터 창에서 새로 만들어도 됩니다. 

<?xml version='1.0' encoding='utf-8'?><?xml version='1.0' encoding='utf-8'?> 
<tomcat-users> 
    <role rolename="dbadmin"/> 
    <role rolename="manager"/> 
    <user username="hans" password="hansworld" roles="dbadmin,manager"/> 
    <user username="jojo" password="33dsk3" roles="manager"/> 
</tomcat-users> 

위 소스에서 hans는 dbadmin과 manager의 권한을 갖고 jojo는 manager의 권한을 갖습니다. 

다음으로 톰켓서버에서 SSL을 셋팅해야 합니다. 이는 username이나 password 가 http상에서 이동할 때 암호화 되어 이동하기 때문에 중간에 악의적인 의도로 가로채거나 훔쳐내는 것을 방지해 줍니다. SSL을 셋팅하기 위해선 2가지 절차를 거쳐야 합니다.

1. java sdk에서 지원해주는 keytool로 keystore 파일을 만듭니다. 이 파일은 보안 접속을 하는 서버가 디지털 인증을 암호화 해서 사용하는데 쓰여집니다. 
2. 톰켓의 conf/server.xml 파일에 SSL Connector에 있는 주석을 제거합니다.

keytool은 java가 설치된 in 에서 찾을 수 있습니다. 

%JAVA_HOME%inkeytool -genkey -alias tomcat -keyalg RSA 

위의 명령을 실해하면 keystore 파일이 생성되는데 몇가지 질문을 합니다. 처음으로 패스워드를 물어보는데 톰켓에서 기본적으로 "changeit" 란 패스워드로 셋팅되어 있습니다. 나머지는 원하지 않으면 그냥 엔터키만 치면 됩니다. 

Enter keystore password: changeit 
What is your first and last name? 
[Unknown]: Bruce Perry 
What is the name of your organizational unit? 
[Unknown]: 
What is the name of your organization? 
[Unknown]: 
What is the name of your City or Locality? 
[Unknown]: 
What is the name of your State or Province? 
[Unknown]: 
What is the two-letter country code for this unit? 
[Unknown]: 
Is CN=Bruce Perry, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct? [no]: yes 
Enter key password for <tomcat>
(RETURN if same as keystore password):

다음에 conf/server.xml 에 있는 SSL Connector 요소에 있는 주석을 제거합니다.

<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<connector disableuploadtimeout="true" useurivalidationhack="false" secure="true" scheme="https" debug="0" acceptcount="100" enablelookups="true" maxprocessors="75" minprocessors="5" port="8443" classname="org.apache.coyote.tomcat4.CoyoteConnector">
<factory classname="org.apache.coyote.tomcat4.CoyoteServerSocketFactory" protocol="TLS" clientauth="false" />
</connector>

SSL은 일반 http 가 아닌 https 를 사용합니다. 또한 포트도 웹에서 80, 톰켓에서 8080 처럼 8443의 번호를 사용합니다.

https://localhost:8443/myhome/default.jsp


2. BASIC authentication BASIC Authentication

Basic 인증은 웹자원과 함께 사용되어온 보안 방법이고 거의 모든 브라우져가 이를 지원합니다. 일반적으로 사용자 이름과 비밀번호를 전송할 때 네트워크 상에서 Base64 인코딩 방식을 사용하는데 이는 디코딩하기 아주 쉽기때문에 보안적이라고 할 수 없습니다. 따라서 Basic Authentication 과 SSL 을 사용한 보안 방식을 사용합니다.

1. 먼저 처음에 설명했지만 username, password, role을 conf/tomcat-users.xml 에서 설정합니다.
2. security-constraint element 로 인증에 필요한 자원을 web.xml 파일에 기술합니다.
3. "BASIC"이라고 auth-method요소 사이에 적습니다. 이 auth-method 요소는 login-config요소에 들어갑니다.

<!-- Beginning of web.xml deployment descriptor -->
<security-CONSTRAINT>
<web-RESOURCE-COLLECTION>
<web-RESOURCE-NAME>JSP database component</web-RESOURCE-NAME> 
<url-PATTERN>/myhome.jsp</url-PATTERN> 
<http-METHOD>GET</http-METHOD> 
<http-METHOD>POST</http-METHOD> 
</web-RESOURCE-COLLECTION>
<auth-CONSTRAINT>
<role-NAME>dbadmin</role-NAME> 
</auth-CONSTRAINT>
<user-DATA-CONSTRAINT>
<transport-GUARANTEE>CONFIDENTIAL</transport-GUARANTEE> 
</user-DATA-CONSTRAINT>
</security-CONSTRAINT>
<login-CONFIG>
<auth-METHOD>BASIC</auth-METHOD> 
</login-CONFIG>
<security-ROLE>
<role-NAME>dbadmin</role-NAME> 
</security-ROLE>
<!-- Rest of web.xml deployment descriptor -->

web.xml 을 이렇게 편집한 후에 https://localhost:8443/myhome.jsp 로 들어가보면 아이디와 비밀번호를 입력하라는 창이 뜹니다. 여기서 만일 role 이 dbadmin 이 아니라면 아이디와 비밀번호가 맞아도 인증에 실패하게 됩니다. 반드시 해당 사용자가 인증에 필요한 role을 가지고 있어야 합니다.


3. Form-Based Authentication 의 사용 

서블릿은 일반 BASIC authentication 말고도 사용자 기반 인증인 Form-Based Authentication 제공합니다. 이는 톰켓에서 보여주는 BASIC authentication 의 단순화를 덜어주며 일반적으로 사용하는 form 방식을 사용하기 때문에 이용하기도 편합니다. 이역시 SSL 과 HTTPS를 사용하여 네트워크상에서 이동하는 데이터들을 보호합니다.

먼저 web.xml 셋팅을 보겠습니다. 파일의 맨 처음부분에 보안 관련 element를 기술하게 됩니다. security-constraint 부분은 BASIC authentication 과 같습니다. login-config 셋팅부분이 약간 다르긴 하지만 그렇게 크게 다르지는 않습니다.

<login-CONFIG>
<auth-METHOD>FORM</auth-METHOD>
<form-LOGIN-CONFIG>
<form-LOGIN-PAGE>/login.html</form-LOGIN-PAGE>
<form-ERROR-PAGE>/loginError.jsp</form-ERROR-PAGE>
</form-LOGIN-CONFIG>
</login-CONFIG>

실제 jsp에서 
<form>테그를 사용하여 사용자 정보를 전송하는데 이때 주의할 점은 form 태그의 action 요소의 값을 'j_security_ckeck' 로 하고 사용자 이름과 비밀번호의 이름을 'j_username' 과 'j_password'로 해야합니다. 로그아웃 시에는 HttpSession 객체의 invalidate() 메소드를 호출하면 됩니다.</form>


출처 : http://dreamholic.egloos.com/

Trackback 0 Comment 0
2009. 1. 2. 16:14

Apache + Tomcat + Oracle 구축 설명서

목차

Apache + Tomcat + Oracle. 1

구축 설명서목차... 1

목차... 2

1. 작성자 정보... 3

2. 환경... 3

3. 설치순서... 3

4. 설치 설명... 4

4.1. Apache 설치... 4

4.2. JDK 1.6 설치... 12

4.3. Tomcat 5.5 설치... 13

4.4. JK-Connector 설치... 15

4.5. Oracle 설치... 17

4.6. JSP 와 Oracle 연동... 18

 

 


 

1. 작성자 정보

서울 시립대학교 컴퓨터 과학부

종욱

niceilm@gmail.com

박상현

park1020@gmail.com

 

 

2. 환경

Server

Sun Blade 1000(750MHz UltraSPARC III Module)

OS

Solaris 10

Web Server

Apache 2.0.59

AP Server

Tomcat 5.5.25

JDK

JDK 1.6

Database

Oracle 10g

 

 

3. 설치순서

설치 모듈

비고사항

Apache

Web Server를 설치합니다.

JDK

Java를 설치합니다.

Tomcat

Tomcat을 설치합니다.

JK-Connector

Apache Tomcat 연동을 위한 모듈 설치합니다.

Oracle

Database Server Oracle 설치합니다.

Oracle + JSP 연동

JSP 에서 원견 Oracle Server에 연결하는 과정입니다.

 


 

4. 설치 설명

 

4.1. Apache 설치

Xwindow 에서 설치를 하였습니다.

http://www.sunfreeware.com/ 에서 필요한 자료를 다운 받습니다.

SPARC / Solaris 10을 클릭합니다.

그 다음 우리가 설치할 apache2.059를 선택합니다.

그러면 바로 다운 받을 수 있는 링크가 나옵니다. 클릭해서 받으세요

 

디스크에 저장합니다.

저장 할 곳을 선택한 다음 파일이름 확인하고 저장합니다.

 

아까 apache2.0.59를 선택하면 그 하위에 종속 관계가 있는 프로그램들이 있습니다.
문제가 생기지 않도록 이 프로그램들도 모두 다운을 받습니다.

다운 받아야 하는 프로그램 중의 하나 입니다.

 

모두 다운을 받습니다.

설치는 root 권한으로 진행합니다. 콘솔창을 띄우고 root 사용자로 변경합니다.


$ su –

 

작업의 편리성을 위해 설치한 디렉토리로 이동합니다.

그리고 다운이 된 목록을 확인해보고 이제 압축을 풉니다.

 

# gunzip ./*.gz

위의 명령을 치면 모든 파일들이 압축을 해제하고 -local 형식으로 나타납니다.

기존에 설치된 Apache를 삭제 합니다. 우선 기존에 설치되어 있는 패키지를 확인합니다.

 

# pkginfo -i | grep -i apache
system SUNWapchd Apache Web Server Documentation
system SUNWapchr Apache Web Server (root)
system SUNWapchu Apache Web Server (usr)

아래 명령어를 통해 기존에 있던 아파치 패키지를 삭제 합니다.

 

# pkgrm 패키지 이름

 


 

아파치 1.3이 비활성화

 

주의: 만약 이전에 다른 SAMP 문서를 통해, 컴패니언 CD의 스크립트를 통해서, 혹은 직접적으로 아파치 1.3 버전을 활성화 시켰다면 이러한 단계를 밟아 나갈 때 충돌이 생길 수 것입니다. 진행하기 전에 아파치 1.3을 비활성화 시키는 것이 중요 합니다.

아파치 1.3이 비활성화 됐음을 확인 합니다:

 

 # svcs -a | grep apache

 legacy_run Sep_11lrc:/etc/rc3_d/S50apache

 

이것은 아파치 1.3의 레가시 rc 시작 스크립트가 /etc/rc3_d/S50apache 임을 보여 줍니다. 스크립트는 아파치의 설정파일 /etc/apache/httpd.conf 의 존재를 찾습니다. 그리고 만약 파일이 존재 하지 않으면 아파치 1.3은 기동되지 않습니다. 아파치 1.3을 비활성화 하려면 이전에 언급했던 패스에 파일이 존재하지 않음을 확인 하던지 혹은 시작 스크립트의 이름을 바꿔 버립니다. 이름을 다음에서:

 /etc/rc3_d/S50apache

다음으로 바꿔줍니다:

/etc/rc3.d/OFF-S50apache

"S" 로 시작하는 스크립트들 만이 실제로 부팅시에 시작 됩니다.

모든 준비가 완료되면 아까 받아서 풀어 놓은 아파치 2.0.59를 설치합니다.


#> pkgadd -d apache-2.0.59-sol10-sparc-local

기본 설치 위치는 /usr/local/apache2 가 됩니다.
환경설정 파일의 위치를 지정해줍니다.

#> /usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf

환경 파일 설정
솔라리스에서는 이것을 꼭 고쳐야 아파치가 실행이 됩니다.

# vi /usr/local/apache2/conf/httpd.conf
Group #-1 --> Group nogroup
으로 변경

아파치 2 기동시키기:

# /usr/local/apache2/bin/apachectl start

만약 아파치 2가 성공적으로 기동 되면 ps 커맨드를 사용하여 아래와 같은 몇몇 프로세스들을 확인할 수 있어야 합니다:

 

# ps -ef | grep http

webservd 18592 38020Sep 11 ? 0:03 /usr/apache2/bin/httpd -k start

webservd 13093 38020Sep 08 ? 0:07 /usr/apache2/bin/httpd -k start

 

10개 이상의 이와 같은 프로세스들을 발견하더라도 놀라지 말기 바랍니다. 또한 다음과 같은 프로세스에도 놀라지 마십시오:

root 49810 Jul 17 ? 1:28 /usr/apache/bin/httpd  \

                 -f /etc/apache/httpd-standalone-ipp.conf

이것은 간단히 예전의 아파치 1.3이 네트워크 포트 631번에서 IPP(Internet Print Protocol)에 의해 사용되고 있음을 나타냅니다. 포트 80번에서 동작하지 않기 때문에 이 글에서 설정하는 웹서버의 충돌은 일어나지 않을 것입니다.

직접 창을 띄워 확인해 봅시다
.
웹브라우저에서 주소는
http://localhost

 

 

4.2. JDK 1.6 설치

 

1. http://java.sun.com 에서 솔라리스용 jdk 1.6 을 다운로드 받는다.

 

32 비트 버전부터 다운 받아야 한다.

 

#  zcat jdk-6<update>-solaris-sparc.tar.Z | tar -xf –

 

이전 버전 패키지를 삭제한다.

# pkgrm SUNWj6rt SUNWj6dev SUNWj6cfg SUNWj6man SUNWj6dmo

 

패키지를 설치한다.

#  pkgadd -d . SUNWj6rt SUNWj6dev SUNWj6cfg SUNWj6man SUNWj6dmo

 

2. 64 비트 버전을 받아 설치한다.

# zcat jdk-6<update>-solaris-sparcv9.tar.Z | tar -xf –

 

이전 버전 패키지를 삭제한다.

# pkgrm SUNWj6rtx SUNWj6dvx SUNWj6

 

패키지를 설치한다.

# pkgadd -d . SUNWj6rtx SUNWj6dvx SUNWj6dmx

 

4.3. Tomcat 5.5 설치

 

http://tomcat.apache.org 에서 Tomcat5.5를 받는다.

 

 

tar 형식으로 된 파일이 tar를 풀면서 에러가 나타났기 때문에 zip 형식으로 된 tomcat 파일을 받는다.

# unzip apache-tomcat-5.5.25.zip

 

압축을 풀면 디렉토리가 생긴다. 이 디렉토리를 옮긴다.

# mv ./apache-tomcat-5.5.25 /usr/local/tomcat5

 

아래 파일에 아래 내용을 추가한다.

# vi /etc/profile

 

export JAVA_HOME="/usr/jdk/jdk1.6.0_03/"

CLASSPATH=".:/usr/jdk/jdk1.6.0_03/lib/tools.jar"

export CLASSPATH

CATALINA_HOME=/usr/local/tomcat5

PATH=$PATH:$CATLINA_HOME/bin

export CATALINA_HOME

 

# source /etc/profile
위 명령어를 실행 시키면 적용된다.

zip
으로 압축을 푼 파일은 파일 권한에 실행 권한이 없습니다. 그러므로 실행권한을 주어야 합니다. 디렉토리 변경 후 아래 명령어를 실행 시킵니다.

 

# cd /usr/local/tomcat5/bin/

# chmod 755 ./*

 

# /usr/local/tomcat5/bin/startup.sh

Using CATALINA_BASE:   /usr/local/tomcat5

Using CATALINA_HOME:   /usr/local/tomcat5

Using CATALINA_TMPDIR: /usr/local/tomcat5/temp

Using JRE_HOME:       /usr/jdk/jdk1.6.0_03/

 

설치 확인

http://localhost:8080/

4.4. JK-Connector 설치

 

솔라리스용으로 컴파일된 JK-Connector를 받습니다.

http://tomcat.apache.org 이 곳에서 받을 수 있습니다.

 

 

이 파일을 이 위치에 위치 시킵니다.

/usr/local/apache2/modules/mod_jk.so

 

/usr/local/tomcat5/conf/server.xml 에 아래 내용을 추가합니다.

참고로 defaultHost 를 꼭 바꿔줍니다. localhost로 두면 외부에서 확인 불가능합니다.

 

<Engine name="Catalina" defaultHost="203.249.108.164"> <== 보통 요녀석 밑에 추가한다.

<Listener className="org.apache.jk.config.ApacheConfig" modJk="/usr/local/apache2/modules/mod_jk.so" />

        <Listener className="org.apache.jk.config.ApacheConfig" append="true" forwardAll="true" modJk="/usr/local/apache2/modules/mod_jk.so" />



/etc/apache2/httpd.conf 에 아래 내용을 추가한다.

Include "/usr/local/tomcat5/conf/auto/mod_jk.conf"

 

톰캣부터 재시작해서 아파치를 재시작합니다.

 

# /usr/local/tomcat/bin/shutdown.sh

Using CATALINA_BASE:   /usr/local/tomcat5

Using CATALINA_HOME:   /usr/local/tomcat5

Using CATALINA_TMPDIR: /usr/local/tomcat5/temp

Using JRE_HOME:       /usr/jdk/jdk1.6.0_03/

 

# /usr/local/tomcat/bin/startup.sh

Using CATALINA_BASE:   /usr/local/tomcat5

Using CATALINA_HOME:   /usr/local/tomcat5

Using CATALINA_TMPDIR: /usr/local/tomcat5/temp

Using JRE_HOME:       /usr/jdk/jdk1.6.0_03/

 

# /usr/local/apache2/bin/apachectl restart

 

결과화면

접속 포트는 아파치 서버로 접속했으나 JSP 파일은 톰캣에서 처리해서 아파치에게 보내줍니다.


 

4.5. Oracle 설치

다른 파일로 첨부


 

4.6. JSP Oracle 연동

1. Oracle 시동

오라클 유저로 전환

# su – oracle

 

오라클리스너 시작

$ lsnrctl start

 

오라클관리툴인 서버 매니저 실행

$ svrmgrl

 

오라클 조정할 수 있는 권한으로 접속

SVRMGR> connect internal

 

오라클 시작

SVRMGR> startup

SVRMGR> exit

 

sqlplus 에 접속합니다.

$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 10 18 15:14:24 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

SQL> connect / AS SYSDBA

연결되었습니다.

 

사용자 접속 권한 부여

SQL> ALTER USER scott ACCOUNT UNLOCK;

사용자가 변경되었습니다.

 

암호 변경

SQL> ALTER USER scott IDENTIFIED BY tiger;

사용자가 변경되었습니다.

 

 

2. JDBC 클래스파일 설정

여기서 받음 http://www.oracle.com

오라클 JDBC를 받음

 

JDBC 클래스 파일위치 지정 방법 1 – 실행 되는 웹 어플리케이션의 라이브러리로 지정한다.

$CATALINA_HOME/webapp/PMSWebUI/WEB-INF/lib/ojdbc14.jar

 

JDBC 클래스 파일위치 지정 방법 2 – Tomcat의 전역 라이브러리로 지정한다.

$CATALINA_HOME/common/lib/ojdbc14.jar

 

JDBC 클래스 파일 위치 지정 방법 3 – 시스템 전역변수로 등록한다.

#주의# "."을 잊지말것

/etc/profile에 클래스패스설정

export CLASSPATH="$CLASSPATH:.:/usr/local/jdk1.6/jdbc/ojdbc14.jar"

 

설정을 시스템에 적용시킵니다.

# source /etc/profile

위의 방법이 속도 면에서 더 빠르다고 합니다.

 

3. 연결 방법

Java Source에서 설정

db_host = ”jdbc:oracle:thin:@오라클서버주소:오라클포트번호:SID”;

db_id = ”데이터베이스계정”;

db_pw = “데이터베이스계정패스워드”;

Class.forName("oracle.jdbc.driver.OracleDriver");

java.sql.Connection conn = DriverManager.getConnection(db_host, db_id, db_pw);

 

4. Java Source Code

DBConnector.java – Source Code

package DB;

import java.sql.DriverManager;

import java.sql.SQLException;

 

public class DBConnector {

 

       private String url = "jdbc:oracle:thin:@oracle.uos.ac.kr:1521:ORCL";

       private String id = "scott";

       private String pass ="tiger";

       private java.sql.Connection conn;

       private String status;

 

 

       public DBConnector() throws SQLException {

             try {

                    // 1 단계 : 데이터베이스와 연결하여 사용할 파일들이 있는지를 확인

                    Class.forName("oracle.jdbc.driver.OracleDriver");

                    // 2 단계 : 드라이버 클래스를 통해 DB 서버와 연결하는 Connection 객체 생성

                    conn = DriverManager.getConnection(url, id, pass);

                    status="연결 성공";

                    System.out.println(status);

                   

             }

             catch(SQLException ee) {

                    status="연결 실패";

                    System.err.println("SQL Error = " + ee.toString());

                    System.err.println("error = " + ee.toString());

                    conn.close();

             }

             catch(ClassNotFoundException ee) {

                    ee.printStackTrace();

             }

       }

       public String getStatus(){

             return this.status;

       }

}

 

5. JSP Source Code

TestDB.jsp - Source Code

<%@ page import="DB.*" language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<%

       DBConnector tt = new DBConnector();

       out.print(tt.getStatus());

%>

 

</body>

</html>

 

 

 

6. 실행 화면

 



tomcat 세팅 및 가상 디렉토리 설정 하기


- 환경 변수

CLASSPATH에 아래 내용 추가

C:\apache-tomcat-5.5.25\common\lib\servlet-api.jar

-> 서블릿 컴파일 시 javax를 따로 패스를 잡지 않아도 됨.

CATALINA_HOME

C:\apache-tomcat-5.5.25

JRE_HOME

C:\Program Files\Java\jre1.6.0_04

- 디렉토리 생성 및  WEB-INF 내용을 추가

1.  서버 구축할 디렉토리 생성

2. 디렉토리 안에 WEB-INF 폴더 생성

3. WEB-INF 안에 classes 폴더와 lib 폴더 생성 및 web.xml 생성

    ※ 톰캣 폴더 안에 -> webapps -> ROOT -> WEB-INF -> web.xml 파일을 복사 한다. -> 주석 제거 및 jsp들어간 내용 제거

 

- 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>

 

- server.xml에 수정 사항

<Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="euc-kr" />

 

-> Get 방식의 한글 깨짐을 해결 하기 위해서

- C:\apache-tomcat-5.5.25\conf\Catalina\localhost 폴더 안에 'ajaxtest.xml' 파일을 생성하여 아래 내용 입력

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/ajaxtest" docBase="c:\ajaxtest\" debug="0" reloadable="true" crossContext="true">
</Context>

-> 생성한 디렉토리 경로 설정 및 URL 경로 설정

      ※ tomcat4.0 은 server.xml에 추가 사항 이였지만 tomcat 5.0 이상 권고사항(관리 모드가 생겨나면서..)

 

oracle 10g

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/board_jsp" docBase="E:\tt_work\board_jsp" debug="0" reloadable="true" crossContext="true">
 <Resource name="jdbc/oracle"
  auth="Container"
  type="javax.sql.DataSource"
  username="board"
  password="board"
  driverClassName="oracle.jdbc.driver.OracleDriver"
  factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
  url="jdbc:oracle:thin:@192.168.225.4:1521:orcl"
  maxActive="500"
  maxIdle="100"/>
</Context>

 

oralce 9i

 

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/board_jsp" docBase="E:\tt_work\board_jsp" debug="0" reloadable="true" crossContext="true">
  <Resource name="jdbc/Oracle9i"
   auth="Container"
   type="javax.sql.DataSource"
   username="shop"
   password="shop"
   driverClassName="oracle.jdbc.driver.OracleDriver"
   factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
   url="jdbc:oracle:thin:@127.0.0.1:1521:ORA92"
   maxActive="500"
   maxIdle="100"/>
 </Context>


jsp 환경구축  (apache tomcat + jdk + mysql) -윈도우 2000 의경우
  
  1. jdk 설치 ( c:jdk로설치 )
         (구할곳 http://java.sun.com)
  2. tomcat설치
     (c:tomcat로설치 후 시작-설정-제어판-관리도구-서비스 에서 Apache Tomcat관련이 있나본다)
     (구할곳 http://jakarta.apache.org/builds/jakarta-tomcat-4.0/archives/ )
     (c:tomcatwebappsRootWeb-inf 방안에 classes방을만든다 여기가 서블릿실행방이다)

  3. mysql설치 ( c:mysql로설치 )
         (구할곳 http://www.mysql.com)
  ## jdbc 연동 ( tomcat+ mysql연결) ##
  4. mm.mysql-2.0.2-bin.jar 구함 (http://mmmysql.sourceforge.net 나 검색엔진에서 검색)
  5. mm.mysql-2.0.2-bin.jar을 c:jdkjrelib 방에 복사넣음

  ## 환경 설정 ##
  6. c:Tomcatconfserver.xml 메모장으로 열음

      <!-- Tomcat Root Context -->
       <!--      <- 삭제
       <Context path="" docBase="ROOT" debug="0"/>
       -->       <- 삭제

   삭제부분적은주석 삭제

  7. 바탕화면에서 내컴퓨터-오른쪽마우스 등록정보 -고급탭 -환경변수 누름
  8. 1)변수이름: JAVA_HOME 값: C:jdk
     2)변수이름: TOMCAT_HOME 값: C:Tomcat
     3)
        !!서블렛 파일찾기
        시작-검색에서 servlet.jar를검색해서 경로를알아낸다!!    
                  
        !!jdbc파일경로
          위5부분에서
              c:jdkjrelib 이방에 mm.mysql-2.0.2-bin.jar을넣었죠!!          
       --------------------------------------------------------------------------
       변수이름: classpath
       값: .;c:jdkjrelibmm.mysql-2.0.2-bin.jar;c:Tomcatcommonlibservlet.jar;  
       --------------------------------------------------------------------------    
    
       .;c:jdkjrelibmm.mysql-2.0.2-bin.jar  <- jdbc
       ;c:Tomcatcommonlibservlet.jar;     <- 서블렛
      
      4)변수이름: PATH 값: %PATH%;c:JDKbin

   위 4가지변수를 새로만들기 눌러 4개 만든다  

  ## mysql설정 ##  
  9. 도스창을연다
     1) cd c:mysqlbin을 치고 mysql명령방으로 들어간다
     2) c:mysqlbin> mysqld-nt --install를 친다 (도스창닫지말고)
     3) 시작-설정-제어판-관리도구-서비스 에서 mysql(데몬) 작동하는지 확인하고
        작동하지않으면 작동시킨다
     4) 조금전 도스창에서 c:mysqlbin> mysql mysql 엔터
        --- root 비번변경 --
     5) mysql> update user set password=password('1111') where user='root';
        위 1111은 원하는 비밀번호로 변경요망.
        --- 유저추가 --
     6) mysql> insert into user values('localhost','korea',password('fighting'),'y','y',
               'y','y','y','y','y','y','y','y','y','y','y','y');
        korea부분은 아디고 뒤는 패스워드다 y들은 권한설정인데 여기선 루트와 같은권한이다
     8) mysql> create database mydb;
     9) exit;
     10) c:mysqlbin> mysqldadmin reload
     11) c:mysqlbin> mysql -ukorea -pfighting
     12) mysql>exit;
     13) c:mysqlbin>exit
      
  10. 부팅한다

  11. 밑의 문장을 c:TomcatwebappsRoot 방에 jdbctest.jsp로 저장하고
      DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","user","password");      
      위부분에서 mysql설정에서 만든 데이타베이스이름 mydb를변경 위에서만든 사용자 user를
      변경 위에서 만든 비밀번호 password를 변경 하고 저장하고
      브라우저를열어 http://localhost:8080/jdbctest.jsp 치고 jdbc연동 성공여부를본다
      !! 또다른연동확인법 도스창을열고 javap org.gjt.mm.mysql.Driver 를친다
          만약 이방법은되는데 브라우저에서 안된다면 소스에 문제가있다 !!


<%@ page import="java.sql.*" contentType="text/html;charset=euc-kr" %>
<%

        /* mysql인 경우와 오라클인 경우에 따라 주석을 제거하여 테스트하세요.*/
        try {
                Class.forName("org.gjt.mm.mysql.Driver"); //mysql인 경우
                //Class.forName("oracle.jdbc.driver.OracleDriver"); //오라클인 경우        

                Connection conn =
                DriverManager.getConnection("jdbc:mysql://localhost:3306/siloam","siloam","green");
                //DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","kimho","1234"); 오라클인 경우

                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("select b_name from kimhoboard");
                String name="";
                if(rs.next()) {
                        out.println("JDBC 설정 성공");                
                } else {
                        out.println("어쨌든 JDBC 설정 성공");
                }
                stmt.close();
                conn.close();
        } catch(Exception e) {
                out.println("err01:"+e);
        } finally {
                try {
                        //conn.close();
                } catch(Exception e) {
                        out.println("err02:"+e);
                }
        }
%>

출처: http://jehani.net/bbs/zboard.php?id=it_tip&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=name&desc=asc&no=25


Trackback 0 Comment 1
  1. 지나가는이 2009.05.11 04:04 address edit & del reply

    잘보고 갑니다.

2009. 1. 2. 09:48

Tomcat 컨테이너와 Apache 웹서버 연동

▶ Tomcat 컨테이너와 Apache 웹서버 연동 구조도 (연동전에 알고 가야할 사전 지식)

- Tomcat 컨테이너와 Apache 웹서버 관계(연동전에 알고 가야할 사전 지식)

▶ 웹 서버(Web Server) 역할 (연동전에 알고 가야할 사전 지식)

웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지에서 흔히 찾아 볼 수 있는 자료 콘텐츠에 따라 HTTP에 반응하는 컴퓨터 프로그램이라고 할 수 있다.

▶ 웹 어플리케이션 서버(WAS, Web Application Server) (연동전에 알고 가야할 사전 지식)

웹과 기업의 기간 시스템 사이에 위치하면서, 웹 기반 분산 시스템 개발을 쉽게 도와주고 안정적인 트랙잰션 처리를 보장해 주는 일종의 미들웨어 소트웨어 서버.

3계층 웹 컴퓨팅 환경에서 기존 클라이언트/서버 환경의 애플리케이션 서버와 같은 역할을 하며, 클라이언트와 서버 환경에서 트랜잭션 처리및 다른 기존 시스템 간의 애플리케이션 연동을 등을 주된 기능으로 하고 있다.

요즘들어서는 WAS는 주로 데이터베이스 조회나 일반적인 비즈니스 로직에 대한 처리를 위해 다양한 언어로 개발된 인터넷/인트라넷 환경의 소프트웨어로 많이 불리운다. 자바스크립트나 JSP 등과 같은 스크립트 및 서비스들은 대개 최신의 데이터를 검색하기 위해 데이터베이스에 접근하고, 브라우저 또는 클라이언트 프로그램을 통해 사용자들에게 검색 결과를 제공한다.

WAS를 비롯한 애플리케이션 서버들은, 웹서버 즉 HTTP 서버와 같은 컴퓨터를 공유할 수도 있지만 별개의 컴퓨터를 독립적으로 사용하는 경우도 많다. 대규모 사이트에서는, 오히려 WAS와 웹서버 등을 위해 여러 대의 컴퓨터가 동원되기도 한다.
넷스케이프의 Netscape Application Server, Bea의 Weblogic Enterprise, 볼랜드의 Appserver, 그리고 IBM의 Websphere Application Server 등의 WAS 대표적인 제품들이다.

▶ Web Server와 WAS와 차이 (연동전에 알고 가야할 사전 지식)

- Web Server 의 정의 : Web Client(웹 브라우저)에게 컨텐츠를 제공하는 서버, 정적인 HTML이나 jpeg, gif 같은 이미지를 HTTP
   프로토콜을 통해 웹 브라우저에게 전송하는 역할 (WebToB)

- WAS(Web Application Server)의 정의
   ○ Server 단에서 Application을 동작할 수 있도록 지원함 => Jeus
   ○ 기존 웹 서버와 달리 동적인 요구에 대응하기 위해 적합한 형태로 변화, Web Client(브라우저)에게는 결과값만 전송함.
   ○ Container(컨테이너)라는 용어로 쓰이며, 초창기는 CGI, 그 후에서는 Servlet, , JSP, ASP 등의 프로그램으로 사용됨

- Web Server와 WAS의 구성에 따른 분류
   ○ WAS와 WebServer를 분리하지 않는 경우 
   모든 컨텐츠를 한곳에 집중시켜 웹서버와 WAS의 역할을 동시에 수행, 스위치를 통한 로드 밸러싱, 사용자가 적을 경우 효율적
 
   ○  WAS와 WebServer를 분리한 경우
   웹서버와 WAS의 기능적 분류를 통해 효과적인 분산을 유도, 정적인 데이터는 웹서버에서 처리, 동적인 데이터는 WAS가 처리
 
   ○  WAS 여러개와 WebServer를 분리한 경우
   WAS단을 프리젠테이션 로직와 비즈니스 로직으로 구분하여 구성, 특정 logic의 부하에 따라 적절한 대응할 수 있지만 설계단
   계 유지보수 단계가 복잡해 질 수가 있다.

▶ WAS 와 Web Server 종류(연동전에 알고 가야할 사전 지식)

- 종류를 구별하여 적기에는 너무 많고 그렇지만 대표적으로 가장 많이 쓰는 것 붙어 정리하면 다음과 같다.
   ○ WAS 종류
   tomcat, tMax jeus, BEA Web Logic, IBM Webspere, JBOSS,Bluestone, Gemston, inprise, Oracle, PowerTier,Apptivity,
   silverStream
   ○ Web Server 
    IIS, apache, tMax, WebtoB

- WAS로 가장 널리 사용하는 tomcat, jeus, webLogic만 알아 보고 Web Server는 IIS, apache만 확인합니다.

   ○ tomcat
       아파치 소프트웨어 재단의 애플리케이션 서버로서, 자바 서블릿을 실행시키고 JSP 코드가 포함되어 있는 웹ㅤㅍㅔㅍ이지를 만들
       어준다. 자바 서블릿과 JSP 규격 '참조용 구현'으로 평가되고 있는 톰캣은, 개발자들의 개방적 협력 작업의 산물로 바이너리
       버전과 코어버전 둘 모두를 아파치 웹사이트에서 얻을 수 있다. 톰캣은 자체적으로 보유하고 있는 내부 웹서버와 함께 독립
       적으로 사용 될 수도 있지만 아파치나 넷스케이프 엔터프라이즈 서버, IIS, 마이크로소프트의 PWS 등 다른 웹서버와 함께 사
       용도리 수도 있다. 톰캣을 실행시키기 위해서는 jre  1.1  이상에 부합되는 자바 런타입 환경이 필요하다.

   ○ Jeus
       JEUS는 국내 기업이 Tmax에서 만든 것으로 제품 오나성도나 지명도에서 떨어진다. 하지만 명성/악명 높은 강력한 기술지
       원력으로 국내 시장에서는 시장 점유율 1위로 올라선지 꽤 됐다.
 
   > 다양한 프리젠테이션 로직 지원
      → Servlet
          동적 HTML 문서 작성을 위한 java 프로그래밍 모델을 지원하며, Servlet 엔진 Multi-threading으로 구현되어 성능이 우수
          하고 , EJB 등과 부드러운 연동이 가능합니다.
      → JSP(Java Server Page)
          Servlet 사용을 통해 웹페이지의 내용이나 모양을 제어하며, 워ㅔㅂ 서버에 의해 실행될 자바 프로그램으러 호출하게 합니
          다.
      → XML
          웹 상에서 구조화된 문서를 전송 가능하도록 설계된 표준화된 텍스트 형식으로, 안전한 전자상거래 구축을 가능하게 하는
          등 웹을 좀 더 다양한 목적으로 이용할 수 있게 합니다.

   > 편리한 비즈니스 로직 지원
      → EJB(Enterprise Java Beans)
          자바 기반의 객체지향 프로그래밍 모델로서 새로운 프로그램 컴포넌트가 추가되거나 변경될 때마다 각 개별 컴퓨터를 갱
          신하지 않고서도 서버에서 ㅤㅂㅕㄶ솨를 통제할 수 있도록 하는 이점을 제공합니다.
 
   > J2EE(Java 2 Enterprise Edtion) 플랫폼과 호환
      → JMS(Java Messaging Service)
          메시지 기반의 프로그래밍 기초를 제공합니다.
      → JNDI(Java Naming and Directory Interface)
          네이밍 서비스를 제공합니다.
      → JTS(Java Trasaction Service)
          이기종 데이터베이스에 걸친 글로벌 트랜잭션을 제공합니다.
      → JDBC(Java Database Connectivity) Connection Pool
          데이터베이스와의 연결을 효율적으로 관리합니다.

   > 부하 조절
      다음과 같은 다양한 부하 조절 방식을 제공합니다.
      → 각 서버(호스트)로의 동적 부하 조절
          서버들의 Load를 실시간으로 수집해 클라이언트의 요청을 처리 가능한 최적읠 서버로 분배하여 부하를 조절합니다.
      → 각 서비스별 처리능력의 동적 조절
          클라이언트 요청의 증가에 따라 각 서비스 루틴의 자동적으로 증가하게 되어 서비스 처리 능력을 동적으로 조절합니다.
      → 하드웨어 성능에 따른 정적 부하 조절
          예를 들자면, 메인프레임급에는 80%의 Load를 , 워크스테이션급에는 20% Load를 배분하는 식으로 하드웨어 성능에 따
          라 부하를 조절 합니다.

    > 장애 대책
      → 서버(호스트)간의 상호 감시
          장애 발생시 서비스를 백업 서버로 이전시켜 중단없는 서비스 처리가 가능합니다.
      → 어플리케이션 프로세스에 대한 감시
          프로세스 모니터가 어플리케이션 프로세스를 감시하여 장애발생시 프로세스를 자동적으로 재시작하게 합니다.
   
    > 다양한 보안 기능 제공
       다음과 같은 다양한 보안 기능들을 사용할 수 있다.
       → Login Name & Password
       → 각 서비스에 대한 Access 권한 제한
       → 클라언트의 IP 어드레스 또는 도메인 제한
       → CA(Certificate Agent)를 통한 사용자 인증
       → SSL(Secure Socket Layer)의 사용
  
    > 편리한 관리자 도구의 제공
       → 리소스 배치를 간편하게 할 수 있습니다.
       → 실시간으로 시스템을 모니터링할 수 있습니다.
       → 멀티 서버(호스트) 시스템을 통합적으로 제어할 수 있습니다.
 
    > WebInOne과의 연동 기능
      JEUS는 WebInOne과 통합하여 사용되어 질 때, CORBA 클라이언트, TP-Monitor 클라이언트 등 다양한 클라이언트들로부터
      서비스 요청을 받아들일수 있게 되며, WebInOne의 다른 구성요수인 WebToB(웹서버), Tmax(TP모니터), CORBA ORB와 함
      께 사용되며 미들웨어 요소들 간에 연동을 필요로 하는 시스템 구성시에 강력한 솔루션을 제공하게 됩니다.

      [출처] Jeus의 기능 | 작성자 사랑지기
      경유 : http://blog.naver.com/you0124861?Redirect=Log&logNo=140055402042

   ○ WebLogic
       웹로직은 미국의 거대 기업인 BEA가 만든 것으로 역사도 길고 제품 완성도도 JEUS 보다 낫다. 가격이 엄청 비쌌지만 요즘
       은 거의 덤핑가로 들어간다.(JEUS 효과라 할 수도 있다.) 기술지원의 속도나 수준이 낮은 것이 국내 상황에서의 최대 단점이
       다.
  
       WebLogic은 Tengah 제품에서 출발한 제품으로 현재 존재하는 어플리케이션 서버를 중에서 J2EE(Java 2 Platform,
       Enterprise Edition)를 가장 잘 지원하는 제품이다. 일찍부터 J2EE의 기느에 해당하는 Servlet, EJB 등을 지원해 왔으며 최신
       버전인 WebLogic 4.5.1은  JSP(Java Server Pages)도 지원한다.

       그리고, 실제로 WebLogic 제품에 대한 Transaction 성능은 테스트 해 보지 못했지만 BEA사의 Tuxedo 제품을 보고 평가할
       때 Transaction 처리에 있어서도 우수한 성능을 발휘할 것으로 예상된다.

       뿐만 아니라, WebLogic 제품의 Clustering 기술에 의해서 Load Balancing과  Failover 기능을 제공해 준다. 클라이언트의
       요청은 현재 가장 Load가 적은 WebLogic Server에 의해서 처리되면 특정 Transaction의 처리 도중 장애가 발생하더라도
       다른 WebLogic Server가 계속해서 Transaction을 처리할 수 있다고 한다.

       이와 같은 Transaction 처리와 Clustering 기술 등의 특징으로 인해 쉽게 확장 가능한( Scalable) 시스템을 구축할 수 있기
       때문에 기업 전산 환경에서 대규모의 시스템을 구축하는데 적합하다.

       WebLogic은 다양한 운영체제에서 운영가능한데 특히 Linux까지 지원하는 것은 주목 할 만한 점이다. WebLogic이 지원하는
       운영 체제들로 아래의 운영체제들이  있다.

       지원 운영 체제 :
       Windows NT, Sun Solaris, HP-UX, IBM AIx, Linux, OS/400, SGI, IRIX
  
       WebLogic 제품의 흡이라면 가격이 1000만원에 달하기 때문에  너무 비싸다는 것이 흠이다. 그리고, WebLogic 제품은 운영
       시스템을 구축하는데는 크게 나무랄 데 없는 제품이지만 WebLogic 제품과 함께 이용할 수 있는 이렇다할 개발 도구가 없기
       때문에 개발 생산성이 크게 떨어진다는 것이 문제점이다. 기껏해야 개발 도구로 이용할 수 있었던 것이 SUN사의 JDK(JAVA
       Development Kit)와 UntraEdit 등과 같은 Editor가 전무이었다. 물론, BEA사는 VisualCafe 등 타회사의 개발 도구를 추천했
       었는데 WebLogic 제품과 밀접하게 통합되어 있지 않기 대문에 적합한 개발 도구라고 할 수 없었다.
       그러나 , BEA사 역시 이러한 문제점을 인식하고 있었던지 최근에 Sematec사의 VisualCafe 사업 부문을 인수하였다. 따라
       서 개발 생산성의 측면은 향후 1,2 년 내에 크게 향상될 것으로 기대되어 WebLogic 제품의 가장 큰 약점이 봉돤될 것으로 예
       상 된다.

   ○ IBM의 WebSphere
       WebSphere는 EJB를 운영할 수 있도록 해 주는 제품이다. WebLogic이 EJB를 포함해서 Servlet, JSP 등의 기능을 하나의
       서버에서 제공하는 제품이라면 WebSphere는 주로 EJB를 운영하기 위해서 사용하고 Servlet과 JSP 등의 기능은 별도의
       Web Server에 의해서 제공된다.
   
       WebSphere와 함께 운영가능한 Web Server 제품들로 IBM HTTP Server, Lotus Dominogo WebServer, Nescape
       Enterprise Server,  MIcrosoft Internet Information Server(IIS) 등이 있다. 이 중에서 IBM HTTP Server는 Apache
       Web Server를 개선한 제품이다.

       WebSphere 역시 다양한 운영 체제들을 지원하는데 아래와 같다.
       지원 운영 체제 :
       Windows NT(v2.0), Sun Solaris(v2.0), IBM AIX(v2.0), IBM OS/390(v1.1), IBM AS/400(v1.1)
   
       WebSphere 2.0에서 EJB를 지원하기 시작했지만 개인적으로 WebSphere를 사용해 본 느낌은  EJB 운영 아직
       환경으로 안정적이지 못하다는 것이다. 정상적으로 잘 수행되던 서비스가 특별한 이유 없이 에러를 발생하는 경우가
       종종  있었다. 최근에 IBM은 WebSphere 3.0을 출시하였는데, 아직 이 제품은 사용해 본 바가 없어서 EJB를 얼마나 잘
       지원하는 지 확인할 수 없는 상태이다.
  
       그러나, WebSphere를  쓸 수 밖에 없는 이유는 Visual Age for Java라는 개발 툴에 있다. Visual Aget for Java는 Servlet,
       JSP, EJB 등을 쉽게 개발할 수 있고 강력한 Debugging 기능과 테스트 환경을 제공해 주며 WebSphere와 밀접하게 통합되
       어 있기 때문이다. 이 밖에도 Visual Age for Java는 기존의 어떤 자바 개발 도구와 비교해도 손색이 없을 것이다. 이와 같은
       강력한 개발 툴의 이용은 개발 생산성을 크게 향상시켜줄 것이다.

       [출처] http://blog.naver.com/you0124861?Redirect=Log&logNo=140055402042

   ○ IIS
       IIS 6.0의 주요 기능들
    
       IIS가 주목받기 시작한 것은 윈도우 NT 4.0의 옵션팩으로 제공된 IIS 4.0 부터라고 할 수 있다. 그리고 윈도우 2000에서는
       기존 버전에 비해 탁월하게 향상된 성능과 윈도우 2000에 포함된 로드밸렁싱 및 클러스터링 기능 그리고 닷컴 회사의 붐
       을 타고 IIS가 가장 많은 웹 사이트를 호스팅하는 웹 서버로서 자리 매김하고 있다. 또한 윈도우 닷센ㅅ 서버와 함께 다양
       한 기능들로 새롭게 무장한 6.0이 등장한 것이다.

   ○ Apache
       Apache HTTP Server Instroduction
       아파치는 1995년 그 당시에 가장 인기 있었던 웹 서버중의 하나인 NCSA HTTP 1.3 버전을 기반으로 탄생하였다. 그 후
       기존의 NCSA 웹 서버에 더욱 향상된 기능들을 탑재하여 Apache 웹 서버를 발표하였다. 현재는 인터넷 웹 서버 중에서
       최고의 인기를 구가하고 있는 이른바 ' 잘 나가는" 소프트웨어 중의 하나이다. 그 이유를 들자면 지속으로 패치파일을
       제공하고 최고의 퍼포먼스를 내고 있기 때문이다. 물론 무료로 제공된다는 점과 많은 마켓쉐어의 점유로 인하여 안정성
       을 인정받았다는 점도 한 이유가 된다. 그리고 Window NT4.0과 95용으로도 Beta 판이 나왔으므로 Unix 환경이 갖추어
       지지 않은 분들은 한번 사용해 보기 바란다. 아파치는  현재까지 1.3b3 까지 나와있으며, 1.2 시르지 테스트 버전이 아닌
       안정된 버젼이다. 만약 여러분들이 1.2 베타나 구버전의 아파치 웹 서버를 사용하고 있다면 안정성이나 시큐리티면에서
       빠른 시일안에서 여러분들의 웹 서버를 업그레이드 또는 패치하기를 권하는 바이다.

       데이터를 저장하고 클라이언트(받는쪽)로 데이터를 전송해주는 물리적인 장치를 서버(보내는쪽)라고 한다.
       하지만 서버가 있다고 혼자 작동하는 것은 아니다. 서버를 구동시킬 수 있는 소프트웨어가 있어야 한다.
       아파치 웹서버도 그중 하나 이다. 서버 프로그램의 종류는 여러가지로 분류할 수 있다.
    
       http로 시작하는.. 인터넷창에서 볼 수 있는 문서들을 저장하고 유저의 브라우저로 전송시켜주는 서버를 웹서버라고 한다.
       파일을 전송할 수 있는 FTP(File Transfer Protocol)서버 메일을 저장하고 전송하는 메일 서버 등 여러가지가 있다.
     
       그 중에 아파치는 웹서버 웹브라우저로 보내는 문서를 저장할 수 있다.
       html뿐 아닌 php(동적인 웹프로그램언어)를 지원할 수 있다. 웹 서버 종류에 따라 사용할 수 있는 프로그램 언어도 다른다.
       아파치는 리눅스 뿐만 아니라 윈도우즈에서도 사용할 수 있다.

       [출처] http://blog.naver.com/you0124861?Redirect=Log&logNo=140055402042
 
▶ Apache 다운로드와 Windows에 설치

http://httpd.apache.org/ 에서 Win32 Binary without crypto (no mod_ssl) (MSI Installer) 다운로드 합니다.

- 위에 사이트에서 Download 받은 화일을 실행시키면 아래와 같은 화면이 뜬다. [Next]를 클릭하자.

-  I accept~ 선택하고 [Next] 클릭.

- 설치 마법사에 대한 내용입니다. [Next] 클릭                                                                            

- Server Information을 입력한후 [Next]를 클릭한다.

① Network Domain :  등록된 서버의 DNS 도메인을 입력한다.
ex> 서버의 전체 DNS 이름이 server.mydomain.net이라면 여기에 mydomain.net을 입력한다.
기본값은  :  "localhost"

Server Name :  서버의 전체 DNS 이름을 입력한다.
ex> server.mydomain.net
기본값은 :   "127.0.0.1"

③ Administrator's Email Address : 서버 관리자나 웹마스터의 전자우편 주소를 입력한다. 기본적으로 클라이언트에게 보내는 오류문에 이 주소를 기록한다.
기본값은 : "일단, 아무 메일이나 입력한다. ^^"
 
Install Apache HTTP Sever~ :  새로 설치하는 아파치가 80번 포트에서 요청을 기다리게 하려면 for All Users, on Port 80, as a Service - Recommended를 선택한다. 아파치를 service로 실행한다 (즉, 아파치는 서버에 로그인한 사람이 없어도 실행된다). 개인적으로 테스트해보거나 이미 80번 포트를 사용하는 다른 웹서버가 있다면 only for the Current User, on Port 8080, when started Manually 를 선택한다.

- Setup Type을 선택한다. 모듈 개발에 필요한 소스코드와 라이브러리를 제외한 모든 것을 설치하려면 Typical을 선택한다.  

   Custom을 선택하면 설치할 내용을 지정할 수 있다. 전체 설치시 디스크에 빈 공간이 약 13 메가바이트 정도 필요하다.

   [Next] 클릭.

- 설치경로를 선택한다. 설치경로를 변경하고자 한다면 [Change...]를 클릭후 원하는 경로를 로 변경한다. [Next] 클릭.

- [Install]을 클릭한다. 앞에서 설정한 상태로 설치가 진행된다.

-  Install이 완료되었다. [Finish]를 클릭한다.

- 실행 결과 확인

   apache 실행과 종료 시키기

   ①  Apache Service Monitor  실행시키기

        - 시스템 트레이에서 Apache Service Monitor 아이콘 Click하여 실행시킨다.

        - 시작 -> 프로그램 -> Apache HTTP Server 2.2 -> Apache Service Monitor 에서 실행

        - 관리도구 - > 서비스  -> Apache Service Monitor  실행 
         
        - Apache Service Monitor 실행


   ② 콘솔창에서 Apache 실행시키기

       /Apache 가 설치된 폴더/bin 이동한다. httpd -k start(restart, stop) 모두 가능

       혹시 80포트가 에러가 나오면서 apache가 실행되지 않는 경우

       - tomcat이 이미 80 포트를 사용하는 경우

          <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

      - Oracle DB 서버가 80포트를 사용하는 경우

         /오라클 설치 폴더/ora92/Apache/Apache/conf/httpd.conf에서포트를 변경해야 함.

         80포트 -> 8079포트(사용하지 않는 포트)로 변경한다.

      - IIS 웹서버가 설치된 경우

         서비스에서 일단 중지 시켜서 실행시켜 본다.

     - Apache를 실행시키데 에러가 없으면 Explorer 주소창에 입력하여 결과를 확인한다.


▶ tomcat 설치 : http://cafe.naver.com/tonkjsp/10 참조한다. (tomcat 컨테이너 포트를 종전에 80 -> 9999로 설정)

▶ tomcat 컨테이너와 Apache WebServer 연동 (윈도우즈 기준)

    - tomcat 컨테이너와 Apache WebServer 연동하기 위한 Module를 다운로드 합니다.
      다운로드 www.apache.org 에서 jk 모듈을 다운 받는다. (여기서는  mod_jk-1.2.26-httpd-2.2.4.so 사용)
     
      ①  Explorer  창에서 www.apache.org  입력하여 Apache 사이트로 들어간다.

      ② FTP 밑에 Backup Sites 항목에서 http://www.apache.org/dist 선택한다. 

      ③ tomcat 연동에 필요한 것을 다운 받아야 함으로 tomcat 선택합니다.

      ④ tomcat 연결에 필요한 것을 다운 받아야 함으로 tomcat-connectors/ 선택합니다.  

      ⑤  tomcat에 연동 필요한 jk/ 선택합니다. 

      ⑥  모듈도 파일임으로 파일 단위로 받기 위해 binaries/ 선택합니다. 

      ⑦ 운영체제(OS)에 맞는 버전을 선택합니다. 여기서는 윈도우에 설치함으로 win32/ 를 선택합니다. 
     
      ⑧ 여러가지 최신 버전도 있지만 안정적인 버전으로 받습니다. 여기서는 jk-1.2.26/ 선택합니다.

      ⑨ 여러가지 최신버전도 많지만 여기서는 안정적인 버전으로 mod_jk-1.2.26-httpd-2.2.4.so 를 받겠습니다. 
    
      ⑩  결국 파일의 경로는 http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/ 이렇게 되겠지만 위의 경로만 적어서 다운 받아서 설치하게 되면 편리한데 혹시 url이 생각이 나지 않을  대비하여 언제든지 자유롭게 다운로드 받아 설치할 수 있도록 다운로드 받는 과정을 순서적으로 정리하였습니다.
   
▶  Apache WebServer에 tomcat 연동 모듈 설치

   ①  mod_jk-1.2.26-httpd-2.2.4.so 모듈 이름을 mod_jk.so 로 변경한다.  (꼭 바꿀 필요는 없지만 파일명이 너무 길어서 줄임)
  
②  Apache WebServer가 설치된 폴더 밑에 modules 디렉토리 밑에 mod_jk.so
        예) C:\server\Apache2.2\modules 밑에 mod_jk.so를 복사한다. 

▶ Apache WebServer와 tomcat Container 를 연동하기 위한 WebServer(tomcat) 환경설정 및 실행
      
         ① Apache WebServer 환경설정
             Apache WebServer 환경 설정 파일은 /Apache WebServer 설치 폴더/conf 디렉토리 밑에 httpd.conf 파일에서
             부터 시작한다. (httpd.conf 파일 편집)
            
             - tomcat 연동 모듈이 어디에 설치되어 있는지 Apache WebServer에게 인식시킬 필요가 있다.
 
               -> LoadModule jk_module modules/mod_jk.so (모듈을 로드 하겠다는 의미)   
               
                -> include conf/mod_jk.conf (환경 설정파일을 포함시킨다.)               

             - tomcat 컨테이너에 웹 루트 어플리케이션 디렉토리가 어디에 탑재되어 있는지 설정파일은 어디에 있는지 기타
               설정에 대한 파일은 외부 파일로 따로 작성하여 /Apache WebServer 설치 폴더/conf 디렉토리 밑에 저장한다.
               여기서는 그 파일을 mod_jk.conf 이름으로  만들어서 편집하여 저장 하겠다.

               가. JkWorkersFile "C:/Server/Apache2.2/conf/workers.properties"
               나. JkLogFile "C:/Tomcat 6.0/logs/mod_jk.log"
               다. JkLogLevel error
              
               라. JkAutoAlias "C:/WorkSpace/tonkjsp"  <- 웹 루트 어플리케이션 디렉토리(작업 폴더 입니다.)
               마. JkMount /* ajp13
               바. JkUnmount /*.php ajp13
              
               사.
               <Directory "C:/WorkSpace/tonkjsp">
                   Options Indexes FollowSymLinks
                   allow from all
               </Directory>
             
               가. JkWorkersFile : tomcat 컨테이너와 port 통신을 위한 설정 부분으로 연동에 필요한 포트설정 부분과 가상도메인 
                                          기타
               나. JkLogFile : 로그 파일 위치를 지정한다.
               다. JkLogLevel : 로그 라벨을 지정한다. error 있을테고 info 등등
               라. JkAutoAlias : 자동으로 tomcat 컨테이너에 탑재된 웹 어플리케이션 지정한다.
               마. JkMount : 어떤url 패턴으로 서버하고 연결시킨 것인지 결정하는 것으로
                     /*.jsp 를 하게되면 jsp 호출시 아파치가 톰캣서버를 호출하도록한다.
                     * 이렇게 하게되면 모든  url 호출시 톰캣서버를 호출한다.
                     (이렇게 하게되면 아파치의 서버를 호출하지 못한다.)
              바. JkUnmount : 해당 url 패턴으로 톰캣서버를 호출하지 못하도록 한다.
              사. Directory : 웹에서 접근자에 대한 옵션을 지정하는 하는 것
             
           - Apache 웹서버와 tomcat 컨테이너와 통신을 하기 위한 포트 설정 부분을 별도의 파일로 따로 작성하여
             /Apache WebServer 설치 폴더/conf 디렉토리 밑에 저장한다.
             여기서는 그 파일을 workers.properties 이름으로  만들어서 편집하여 저장 합니다.

             work.list=ajp13
             worker.ajp13.port=8009
             worker.ajp13.host=localhost
             worker.ajp13.domain=www.tonkjsp.com
             worker.ajp13.type=ajp13
           
            -  결론, /Apache WebServer 설치 디렉토리/conf 디렉토리에 2개 파일 작성(mod_jk.conf ,workers.properties)
                1개 파일(
httpd.conf) 을 수정하면 된다.
        
        ② tomcat 설정 파일 확인(수정할 내용은 별로 없다.)
         
             -  /tomcat 설치 폴더/conf 디렉토리 밑에 server.xml를 확인한다.
              <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
              <Connector port="9999" protocol="HTTP/1.1"  connectionTimeout="20000" redirectPort="8443" />
                 <Engine name="Catalina" defaultHost="www.tonkjsp.com">
                       <Host name="www.tonkjsp.com"  appBase="webapps"unpackWARs="true" autoDeploy="true"
                            xmlValidation="false" xmlNamespaceAware="false">
                       </Host>
                  </Engine>

        ③ 결과 실행

         - tomcat 컨테이너와 Apache WebServer 실행시킨다. (에러가 없이 실행되어져야 합니다.)
       
         - 이것은 Apache WebServer -> tomcat 컨테이너 의해 index.jsp가 실행된 결과 입니다.
              
          - tomcat 컨테이너도 웹서버 기능이 포함되어 있기에 tomcat 컨테이너를 바로 실행시켜도 똑같이 나옵니다.


Trackback 0 Comment 3
  1. 2009.02.16 13:15 address edit & del reply

    제가 알기론 최근 BEA사는 오라클사에 흡수된걸로 압니다만;;

    • 오라클 2009.02.23 14:23 address edit & del

      네.. 맞습니다^^

  2. 안쓰 2014.10.21 16:27 address edit & del reply

    정말 글최고입니다 웹서버 웹컨테이너 웹 어플리케이션서버 등 햇갈렸던개념 제대로잡고가네요!! 최고에요 ㅜㅜ
    특히 톰캣 아파치 둘의차이도잘몰랐는데 감사합니다!!