php 에서 파일다운로드하는 방법은 다음과같이 Header 를 이용하여야 한다.

오늘 삽질을 좀 했는데 계속 헤더 앞에 다른 문자가 출력되어있다는 에러가 나는 것이다...

도데체 뭘까... 한 시간의 삽질 끝에... <?  <- 요거 앞에 한칸의 공백이 있는 것을 발견했다....

Header 를 사용할 때는 그 앞에 어떤 것도 출력되면 안된다.

이 소스를 개발할 때는 이 것을 주의해야한다.

꼼꼼하게 앞에 빈칸이 없도록 해야할 것을 잊지말자.


<?
class filemodel extends model
{
    function get_mode()
    {
        $file_id = $this -> get_check("file_id", "plus");
        $file = mysql::singleton("file") -> get_file_name($file_id);
        $file_url = $file['file_url'];
        $file_name = $file['file_name'];
        $f_name = basename($file_name);
        $downloadPath = $file_url;
        Header("Content-Type: file/unknown");
        Header("Content-Disposition: attachment; filename=". $f_name);
        Header("Content-Length: ".filesize("$downloadPath"));
        header("Content-Transfer-Encoding: binary ");
        Header("Pragma: no-cache");
        Header("Expires: 0");

        flush();


        if ($fp = fopen("$downloadPath", "r")) {
            print fread($fp, filesize("$downloadPath"));
        }
        fclose($fp);
    }
}
?>

참고로 링크는 이런식으로 하면 되겠지?

<a href="/api/index.php?model=file&mode=get&file_id=<?=$value['file_id1']?>&view=script" ><?=$value['file1']['file_name'];?></a>

화이링~^^

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon 겨울 2008.12.10 14:22 신고  댓글주소  수정/삭제  댓글쓰기

    불로그 글 작성에 도움이 되실까 해서 정보를 하나 알려 드리고자 합니다. 무료로 고용량 파일을 배포해 주는 사이트가 하나 생겼습니다.
    MAXFREE라고 하는데 (www.maxfree.co.kr) 거기 가시면 고화질 동영상이나 고용량 파일들을 무료로 배포하실 수 있습니다. 최근 제가 여기에 계정 만들어서 1GB급 동영상을 스트리밍으로 카페 회원들과 공유 중인데 정말 좋습니다. 올리는 사람도 무료이고, 보는 사람도 무료라서 웹하드처럼 다운로드 받는 사람들이 돈 낼 필요가 없는 것 같습니다. 다만 기업 회원들만 된다고 해서 저희 식당 사업자 등록증 번호로 계정 만들었습니다. ^^ 하여간 여기 불로그에 올라오는 글들과 연관성이 있을 것 같아서 알려드리고 갑니다.

PHP 날짜 함수 정리 ( Write By Yaku)

 

오늘로부터 5일 후

echo date("Y-m-d",strtotime("+5 day"));
다음은 오늘로부터 3일 전이 되겠습니다.
echo date("Y-m-d",strtotime("-3 day"));

 

오늘로부터 6주 전

$calyoil = 5 - date("w"); //현재 요일에서 금요일을 구하기 위한 가감
$needday = strtotime("-6 week"); // 6
주전
$needday = date("Y-m-d" , strtotime("$calyoil days",$needday));
echo $needday;

 

윤년

if(29==date(t,mktime(0,0,0,2,1,$year))
echo "
윤년";
else echo "
윤년아님";

 

--mktime(,,,,,년도)--

 

그 달의 마지막 날짜  가지고 오기

$lastday = date(t,mktime(0,0,1,$month,1,$year));

 

금주의 시작일 구하기

$now=date("w");

$m=$now-1;

$start=date("Y-n-d",strtotime("-$m day"));

 

 

 

 

JS 날짜 정리 ..

Month ( 0 ~ 11까지 정의 된다 )  현재월을 표시하려면 month -1 하여라 ..

 

날짜 객체  생성  var today = new Date( , , ) ;

날짜 년 가지고 오기 today.getYear();

날짜 월 가지고 오기 today.getMonth();  ( 현재월 가지고 올경우  +1 )

날짜 일 가지고 오기 today.getDate();  (day 가 아니 getDate 이다)

날짜 월 짜리수 맞추기 위한 if = parseInt() < 10 ? - + parseInt() : parseInt();

 

 

 

Mysql 날짜 함수

select date_sub(now(), interval 5 day);
5
일후..
select date_add(now(), interval 5 day);
5
일전...

PHP 날짜 함수 정리 ( Write By Yaku)

 

오늘로부터 5일 후

echo date("Y-m-d",strtotime("+5 day"));
다음은 오늘로부터 3일 전이 되겠습니다.
echo date("Y-m-d",strtotime("-3 day"));

 

오늘로부터 6주 전

$calyoil = 5 - date("w"); //현재 요일에서 금요일을 구하기 위한 가감
$needday = strtotime("-6 week"); // 6
주전
$needday = date("Y-m-d" , strtotime("$calyoil days",$needday));
echo $needday;

 

윤년

if(29==date(t,mktime(0,0,0,2,1,$year))
echo "
윤년";
else echo "
윤년아님";

 

--mktime(,,,,,년도)--

 

그 달의 마지막 날짜  가지고 오기

$lastday = date(t,mktime(0,0,1,$month,1,$year));

 

금주의 시작일 구하기

$now=date("w");

$m=$now-1;

$start=date("Y-n-d",strtotime("-$m day"));

 

 

 

 

JS 날짜 정리 ..

Month ( 0 ~ 11까지 정의 된다 )  현재월을 표시하려면 month -1 하여라 ..

 

날짜 객체  생성  var today = new Date( , , ) ;

날짜 년 가지고 오기 today.getYear();

날짜 월 가지고 오기 today.getMonth();  ( 현재월 가지고 올경우  +1 )

날짜 일 가지고 오기 today.getDate();  (day 가 아니 getDate 이다)

날짜 월 짜리수 맞추기 위한 if = parseInt() < 10 ? - + parseInt() : parseInt();

 

 

 

Mysql 날짜 함수

select date_sub(now(), interval 5 day);
5
일후..
select date_add(now(), interval 5 day);
5
일전...

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

먼저 디비에서 파일을 불러온다.
  $file_name = mysql::singleton("item") -> get_file_name($file_id);

URL 에서 이름만 뽑아낸다.
 $f_name = basename($file_name);

다운로드 패스를 지정
   $downloadPath = "..".$file_name;
 
중요한 부분.  
  Header("Content-Type: file/unknown");
  Header("Content-Disposition: attachment; filename=". $f_name);
  Header("Content-Length: ".filesize("$downloadPath"));
  header("Content-Transfer-Encoding: binary ");
  Header("Pragma: no-cache");
  Header("Expires: 0");
  flush();

파일을 열어서 뿌려주면 그 내용을 다운로드 받는다.  
if ($fp = fopen("$downloadPath", "r")) {
       print fread($fp, filesize("$downloadPath"));
}
fclose($fp);

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요


데이터 베이스 설계 텀 프로젝트를 위해 RWAPM 을 설치하였다.

APM 이란 말그대로 Apache + PHP + Mysql 을 한꺼번에 설치해주고 연동해주는 것이다.

따로따로 깔아보는게 물론 공부하는 데 도움이 되겠지만 역시 가시밭길을 가지말자;

설치는 정말 간단하다. 그냥 파일을 받아서 실행하고 다음다음 하면 된다.^^;

그림도 캡처하여 직접 올리려 했으나 이미 많은 사람들이 문서화 해 놓아서 퍼왔다..

혹시 apm 이 필요할 때를 대비하여 포스팅해놓자~

http://kldp.net/projects/rwapm/

이곳에서 다운받으면 된다.

매뉴얼도 한글로 되어있어서 정말 쉽다...

그러나...

문제는 여기서 끝이 아니라는거다.

php 와 oracle 을 연동하는 무시무시한 작업이 남아있는 것이다...ㅜㅜ

어떤 사람은 그냥 한번에 잘 되었다는 사람도 있었지만 나는 그렇지 못했다...

삽질에 삽질을 거듭한 끝에... 친구의 도움으로 간신히 성공하였다.

먼저 C:\RWAPM\RTM20040531\bin\php.ini 파일을 연다

사용자 삽입 이미지

php_oci8.dll 부분의 주석을 해제해야한다.

보통 여기까지 하면 잘 된다고들 했다... 그러나 계속해서 에러가 났다...

온갖 방법으로 다 해보다가 오라클 홈페이지에가서 오라클 인스턴스 클라이언트를 다운받기로 하였다..

instanceclient-basic-win32
instanceclient-odbc-win32
instanceclient-sdk-win32

위 세개의 압축파일을 받아서 풀었다.

베이직과 odbc 에 odbc_install.exe. 파일이 있는데 각각 실행시켜봤자 에러가 난다.

odbc 의 파일들을 일단 basic 폴더로 옮긴다. 그런다음 실행을 하면 실행이 된다.

그리고 sdk 의 ott.bat 파일을 실행시켰다..

그 결과... 에러 없이 오라클에 접속이 되었다...

테스트 코드는 다음과 같다..

사용자 삽입 이미지


아 정말... 끈나고 보니 간단하나... 징글징글한 삽질의 결과라는거...ㅡㅡ;

아래는 RWAPM 의 설치 화면을 첨부하였다...

자자자~ 그래도 삽질이 점점 줄어가는 것을 느끼기는 한다.  화이링~

사용자 삽입 이미지
 


Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon 셈틀쟁이 2008.05.30 16:34 신고  댓글주소  수정/삭제  댓글쓰기

    아오 우리 디비 계정 암호 다 나오게 하면 어떻게 하나 ㅎㅎ

  2. 손님 2008.11.18 20:47 신고  댓글주소  수정/삭제  댓글쓰기

    해당 RWAPM 설치 후에 FILE SIZE 변경은 어떻게 하나요

  3. BlogIcon 관리자 2008.11.19 14:14 신고  댓글주소  수정/삭제  댓글쓰기

    어떤 FILE SIZE 를 말씀하시는지요?

  4. BlogIcon GermmouSe 2013.11.23 01:40 신고  댓글주소  수정/삭제  댓글쓰기

    る。 女性として暮らしているが、性的適合手術を受けていない人 [url=http://animalliberation.org.au/wp-sell.php]モンクレール 2014 秋冬[/url] で珍しい動植物の豊かさを楽しみ、また、あなたの目はあなたがコ 窃盗として知られています。

    または新しい出荷は、ちょ フォーラムがあります、それはあなたがどこElse.There 喜びを感じて踊る幼児を見て。 彼らは旅するとき、彼らははるか などを送った。 少年は、私は自分自身の馬鹿を作ることでした!このジレンマとの闘いの中で最も適したイニシアチブは正確にこれ

보통 PHP의 개발환경으로 리눅스를 기반으로 하기 마련인데, 얼마전에 솔라리스 10기반으로 설치해볼 기회가 있어서 설치 후 정리해봅니다. 생각보다 상당히 까다로웠던 기억이 나네요.

특히 Oracle 10g와의 연동부분에서 많이 해매었습니다. 왜냐하면 Oracle 9i까지는 OCI를 설치하면 오라클 설치디렉토리 내에 OCI라는 폴더가 생기는데 Oracle 10g 클라이언트의 유닉스버전은 그게 아니더군요. 웃긴건 윈도우용 Oracle 10g 클라이언트는 OCI라는 폴더가 또 생기더라는...

기본 환경은 다음과 같습니다.

Server: Web Server * 2, Database Server * 1
OS: SunSparc Solaris 10
Web Server: Apache 2.0.59
Script Language: PHP 5.2.2
Database: Oracle 10g Database Server

데이터베이스 서버는 별도로 이미 구축되어 있으며, 웹 서버 2대는 클러스터로 구축해서 만일의 경우를 대비하는 것입니다. 서버 장비에 대한 것은 깊은 지식이 없으므로 일단 패스~

웹서버 한대에 위의 환경을 구축하는 것을 기준으로 합니다.(오라클은 클라이언트가 이미 설치되어 있다고 가정합니다.) 그리고 오라클과의 연동을 위해서는 패키지 형식은 현재 지원이 안되고 컴파일 형식으로 설치를 진행해야 합니다.

1. 사전준비
우선 필요한 패키지를 다운로드 받아야 합니다. 솔라리스 관련 패키지는 http://www.sunfreeware.com에서 모두 받을 수 있습니다. 필요한 패키지는 다음과 같습니다.

libgcc: gcc를 설치하기 위해 필요
libiconv: gcc, apache를 설치하기 위해 필요
gcc: php를 컴파일하기 위해 필요
make: 보통은 운영체제 설치시 설치해줍니다. 설치 안되어 있다면 설치해야 php를 컴파일할 수 있습니다.
indent: flex를 설치하기 위해 필요
flex: php를 설치하기 위해 필요
autoconf: bison을 설치하기 위해 필요
m4: php, bison을 설치하기 위해 필요
bison: php를 설치하기 위해 필요
perl: php, automake를 설치하기 위해 필요
automake: php를 설치하기 위해 필요
gzip: php를 설치하기 위해 필요
tar: php를 설치하기 위해 필요. 보통은 운영체제시 기본으로 설치합니다.
GNU sed: php를 설치하기 위해 필요
expat: Apache를 설치하기 위해 필요
gdbm: Apache를 설치하기 위해 필요
db-4.2.52.NC: Apache를 설치하기 위해 필요
openssl: Apache를 설치하기 위해 필요


위의 패키지들이 설치되어 있는지 반드시 확인해보시길 바랍니다.(pkginfo 명령어) 설치되어 있으면 지나치고 설치안되어있으면 설치해줘야 합니다. 라이브러리들을 설치하는데는 반드시 순서가 있습니다. 즉, 특정 라이브러리를 설치하기 위해서는 다른 라이브러리가 먼저 설치되어야 할 경우들이 많습니다. 그런 사항은 위의 사이트에 잘 나와있으니 참조하시길 바랍니다.

2. Apache 2.0.59 설치
우선 Apache를 설치합니다. 요즈음은 동적 모듈 방식(DSO)으로 설치를 많이하는 추세이니 여기서도 동적 모듈을 이용하도록 설치합니다. 패키지형식은 모두 동적모듈방식입니다.

# gzip -d apache-2.0.59-sol10-sparc-local.gz
# pkgadd -d apache-2.0.59-sol10-sparc-local

vi /usr/local/apache/conf/httpd.conf  이파일 설정

#Group #-1 --> Group nogroup 으로 변경

3. Oracle 10g 설치 확인
Oracle 10g 클라이언트가 사전에 설치되어 있어야 합니다. 특히 Oracle Call Interface가 설치되어 있는지 반드시 확인해야 합니다.

Oracle 10g 유닉스버전은 OCI라는 디렉토리가 아닌 instantclient라는 개념으로 접근합니다. 만일 $ORACLE_HOME에 instantclient라는 디렉토리 자체가 없으면 아래의 URL에서 Basic역시 다운로드 받아야 합니다. 이때 SDK도 같이 다운로드 받아야 합니다.

http://www.oracle.com/technology/software/tech/oci/instantclient/index.html

설치에 대해서는 생략합니다. 여기서는 $ORACLE_HOME/instantclient라는 이름으로 설치되어있다고 가정합니다. 그리고 instantclient안에는 반드시 SDK라는 디렉토리로 SDK 모듈이 설치되어 있어야 합니다.

4. root profile 확인
PHP 컴파일은 ROOT 계정으로 진행할 것입니다. OCI 연결시 $ORACLE_HOME 변수와 $LD_LIBRARY_PATH를 찾으므로 반드시 설정해야 합니다.

.profile 예제
ORACLE_HOME=/path/to/oracle;export ORACLE_HOME;
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/instantclient;export LD_LIBRARY_PATH

5. PHP 5.2.2 설치
php 컴파일하는 것은 리눅스와 같습니다. configure -> make -> make install 차례로 진행합니다.

여기서 주의할 것은 configure 시 오라클 연동 옵션부분인데, 이전처럼 단순히 with-oci8={path} 로 하면 못찾습니다. 그리고 PHP 4.X 버전때랑 PHP 5.X 버전때랑도 약간 틀리니 주의하시기 바랍니다.

1) configure
[ PHP 5.0 이상 ]
./configure \
--prefix=/usr/local/php \
--with-oci8=instantclient,/oracle/app/oracle/product/10_client/instantclient \
--with-apxs2=/usr/local/apache2/bin/apxs

[ PHP 4.7 ]
./configure \
--prefix=/usr/local/php \
--with-oci8-instant-client=/oracle/app/oracle/product/10_client/instantclient \
--with-apxs2=/usr/local/apache2/bin/apxs

2) make & make install
명령어는 쉬우니 생략하고, 진행시 다음의 두가지 오류가 발생할 수 있습니다.
- make 시 oracle의 instandclient의 wrong ELF class: ELFCLASS64 관련 오류
- make install 시 아파치 연결때 /usr/local/bin/sed를 못찾는 오류

위의 두 오류에 대해서는 다음과 같이 해결합니다.
[ ELFCLASS64 관련 오류 ]
- instantclient는 설치하면 32비트용과 64비트용으로 설치됩니다. 보통 위의 오류는 64bit형으로 설치했을 때 발생합니다.
- $ORACLE_HOME내에 있는 instantclient를 instantclient64로 변경하고 instantclient32를 instantclient로 변경합니다. 그리고 SDK를 복사해서 넣어주고 make하면 됩니다.

[ /usr/local/bin/sed를 못찾는 오류 ]
- ln -s /usr/bin/sed /usr/local/bin/sed 로 소프트링크를 걸고 다시 시도하면 됩니다.

3) php.ini 복사
php.ini를 /usr/local/php/lib 밑에 복사해서 넣고 환경에 맞게 설정합니다. 그리고 httpd.conf안에 php5 모듈 올라왔는지 확인하고 AddType을 통해서 확장자 지정합니다. 이부분은 많은 자료가 이미 나와있으므로 생략합니다.

6. 최종확인
Apache를 구동하고 홈디렉토리로 가서 phpinfo를 출력하는 페이지를 만들어 확인합니다. OCI8항목이 있는지 확인하면 됩니다.

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon moncler chaquetas 2013.01.05 21:49 신고  댓글주소  수정/삭제  댓글쓰기

    Près de deux millions de catholiques?philippins ont défilé pieds nus dimanche dans les rues de Manille dans le cadre?de la procession annuelle du Nazaréen noir, http://www.moncleroutletespain.com/ moncler online, une statue de Jésus Christ qui, http://www.moncleroutletespain.com/ http://www.moncleroutletespain.com/?serait dotée de pouvoirs miraculeux, http://www.moncleroutletespain.com/ moncler chaquetas. La statue de bois noir, taillée au Mexique et acheminée aux Philippines au?début du 17ème siècle, http://www.moncleroutletespain.com/ moncler españa, quitte chaque 9 janvier l'Eglise de Quiapo de Manille, http://www.moncleroutletespain.com/ moncler outlet?pour une grande parade dans les rues de la capitale de l'archipel largement?catholique, http://www.moncleroutletespain.com/ moncler.Related articles:


    http://ahndoori.tistory.com/5 http://ahndoori.tistory.com/5

    http://jejuq.tistory.com/category/Mobile?page=15 http://jejuq.tistory.com/category/Mobile?page=15

리눅스(레드햇 9.0)에서 Apache, MySQL, PHP, Tomcat 연동하기

 

Copyright©2003 yekdm

이문서는 자유롭게 수정 및 배포가 가능합니다. 단 상업적 용도로 사용할 수 없습니다.

수정 및 배포 시 작성자의 이름 및 출처를 꼭 명시하기 바랍니다.

작성자 : 예크디엠(yekdm)

작성일 : 2003 12 22일 월요일

이메일 : yekdm@hotmail.com

 

들어가기에 앞서

이 문서에 작성된 글이 제 좁은 이해력을 바탕으로 한 것이기에 잘못된 부분을 많이 포함하고 있으리라 생각합니다. 부족하지만 공부하는데 도움이 되길 바랍니다.

 

설치환경

레드햇 9.0 (Kernel 2.4.20-8)

 

시스템 구성

Apache 2.0.48

MySQL 4.0.17

PHP 4.3.4

Zend Optimizer 2.1.0b

J2SDK 1.4.2

Tomcat 5.0.16

JK2 Connector 2.0.2

 

1. Mysql 설치

 

http://www.mysql.com/downloads/index.html 을 방문해서 Mysql database server & standard clients 부분의 Mysql 4.0으로 이동합니다. 문서에 적혀있는데로 Mysql 4.0이 현재 배포되고 있는 공식버전입니다.

http://www.mysql.com/downloads/mysql-4.0.html 로 이동하면 배포본이 바이너리 형식, RPM 형식, 소스 형식의 세가지로 이루어져있음을 알 수 있습니다.

 

0. 기존의 RPM 패키지 제거

 

레드햇 리눅스 기반의 시스템에서는 Mysql RPM 패키지가 설치되어있는지 먼저 확인합니다.

 

shell> rpm qa | grep mysql

또는

shell> rpm qa | grep MySQL

 

최근에 배포되고 있는 레드햇 9.0에서는 기본적으로 Mysql이 아닌 PostgreSQL을 기본 데이터베이스로 채택하고 있습니다. 따라서 레드햇 9.0 설치 후 Mysql 을 바로 설치할 경우에는 RPM 패키지를 제거할 필요가 없습니다.

레드햇 기반의 리눅스 배포본에서 Mysql 패키지를 포함하는 경우 Mysql RPM 패키지를 변경 적용함으로 Mysql 공식 사이트에서 제공하는 RPM 패키지와 이름 및 내용이 다를 수 있습니다.

RPM 패키지의 경우 업그레이드가 가능하나 Mysql 3.23 에서 Mysql 4.0 으로의 RPM 업그레이드는 이루어지지 않습니다.

 

기존에 설치되어있는 Mysql RPM 패키지를 제거합니다.

 

shell> rpm -e --nodeps [mysql 패키지명]

 

--nodeps 옵션은 RPM 삭제시 의존성 여부를 무시하기 위해 사용됩니다.

 

설치에 앞서 기존에 Mysql을 설치하여 운영했었다면 사용했던 데이터베이스를 백업 받아 놓습니다.

 

0. Mysql binary 설치

 

배포파일 mysql-standard-4.0.17-pc-linux-i686.tar.gz

 

받은 파일을 적당한 위치 (: /usr/local/src) 로 이동시켜서 압축을 풀어줍니다.

 

shell> mv ./mysql-standard-4.0.17-pc-linux-i686.tar.gz /usr/local/src

shell> tar xvfz mysql-standard-4.0.17-pc-linux-i686.tar.gz

 

위의 명령을 실행시키면 현재 위치에 mysql-standard-4.0.17-pc-linux-i686 디렉토리가 생성되면서 압축이 풀립니다. 생성된 디렉토리를 /usr/local/share로 디렉토리명을 mysql로 변경하여 이동시킵니다.

 

shell> mv ./mysql-standard-4.0.17-pc-linux-i686 /usr/local/share/mysql

또는

shell> cp -r ./mysql-standard-4.0.17-pc-linux-i686 /usr/local/share/mysql

 

해당 디렉토리로 이동합니다.

 

shell> cd /usr/local/share/mysql

 

Mysql을 처음으로 설치하는 경우 아래의 명령을 실행합니다. 이것은 mysql grant table을 만들어줍니다.

 

shell> scripts/mysql_install_db

 

디렉토리 권한을 설정합니다.

shell> chown -R mysql .

shell> chgrp -R mysql .

 

Mysql 계정을 등록하지 않았을 경우 Mysql의 사용자 및 그룹 계정을 추가한다.

 

shell> /usr/sbin/groupadd mysql

shell> /usr/sbin/useradd -g mysql mysql

 

/etc/passwd 파일과 /etc/group 파일을 에디터로 열어서 mysql 계정이 등록된 것을 확인하고 변경할 사항이 있으면 변경합니다.

 

Mysql을 실행시킵니다.

 

shell> bin/mysqld_safe --user=mysql &

 

시스템 부팅시 자동적으로 Mysql을 실행하고자 할 경우에는 support-files/mysql.server 파일을 /etc/rc.d/init.d 디렉토리로 copy 합니다.

그리고 /etc/rc.d/rc0.d에는 K01mysql이라는 이름으로 /etc/rc.d/rc3.d에는 S90mysql이라는 이름으로 symbolic link를 만들어줍니다. 심볼릭 링크 파일명에서 앞의 S는 부팅시 서비스가 이루어지는 즉 실행되는 파일을 의미하고 K는 서비스가 이루어지지 않는 데몬임을 의미합니다. 그 뒤의 숫자는 임의로 변경가능합니다. 자세한 사항은 리눅스 부팅시 시스템의 초기화 과정을 공부함으로 알 수 있습니다.

기본적으로 mysql install directory /usr/local/mysql로 되어있습니다. 그러나 이 문서에서 처럼 /usr/local/share/mysql의 위치에 설치할 경우 즉, /usr/local/mysql이 아닌 다른 위치에 Mysql을 설치할 경우에는 다음의 내용이 기록된 my.cnf를 작성하여 /etc 디렉토리에 저장합니다.

 

[mysqld]

basedir=/usr/local/share/mysql

datadir=/usr/local/share/mysql/data

 

기존에 Mysql을 운영한 경우에는 저장된 데이터베이스가 있는 디렉토리를 datadir에 적어주면 사용했던 데이터베이스를 그대로 사용할 수 있습니다. RPM으로 설치되어 운영했을 때의 datadir /var/lib/mysql 이므로 datadir=/var/lib/mysql 로 설정해줍니다. 그러면 기존의 데이터를 그대로 사용할 수 있습니다.

이 외의 방법이 몇 가지 더 존재합니다. 추가적인 사항은 mysql.server 파일을 참고하기 바랍니다.

 

참고사항

- 설치에 필요한 도움말은 binary package에 포함되어 있는 INSTALL-BINARY 파일에 들어있습니다.

- binary package 형태로 설치할 경우 mysql의 실행파일들이 들어있는 bin 디렉토리(/usr/local/share/mysql/bin) PATH 설정해서 임의의 위치에서도 사용할 수 있도록 해야 합니다. 이 과정이 mysql.server 파일에서 이루어지는 것 같은데 Redhat 9.0에서는 이 실행파일로는 PATH가 설정되지 않았습니다. 만일 mysql.server만으로 PATH가 설정되지 않으면 /etc/profile 파일에서 PATH를 설정하도록 합니다.

- Mysql 3.23에서 데이터베이스를 운영하다가 4.X로 업그레이드 할 경우 데이터베이스 type이 다르므로 기존의 데이터베이스를 그대로 사용하기 위해서는 특별한 과정을 거쳐야 합니다. Mysql 3.23에서는 디폴트 데이터베이스 type ISAM이나 4.X에서는 MyISAM이므로 type을 변경하는 과정이 필요합니다. 자세한 사항은

http://www.mysql.com/documentation/mysql/bychapter/manual_Installing.html#Upgrading-from-3.23 문서를 참고하기 바랍니다.

 

0. Mysql RPM 설치 (적극 권장)

 

Mysql 사이트에서 배포되는 Mysql RPM package는 다음과 같습니다.

 

MySQL-server-4.0.17-0.i386.rpm

MySQL-Max-4.0.17-0.i386.rpm

MySQL-bench-4.0.17-0.i386.rpm

MySQL-client-4.0.17-0.i386.rpm

MySQL-devel-4.0.17-0.i386.rpm

MySQL-shared-4.0.17-0.i386.rpm

MySQL-embedded-4.0.17-0.i386.rpm

MySQL-shared-compat-4.0.17-0.i386.rpm

 

각각의 패키지에 대해 간단하게 설명하겠습니다.

 

MySQL-server-4.0.17-0.i386.rpm : Mysql Server,

MySQL-Max-4.0.17-0.i386.rpm : Mysql Max Server, MySQL-server RPM에서 제공하지 않는 추가적으로 확장된 기능을 제공하는 패키지, MySQL-server RPM을 먼저 설치해야 한다.

MySQL-bench-4.0.17-0.i386.rpm : Test Benchmark 프로그램, 펄과 DBD::mysql 모듈을 필요로 한다.

MySQL-client-4.0.17-0.i386.rpm : The standard MySQL client programs, Mysql을 이용하는 여러가지 프로그램 제공

MySQL-devel-4.0.17-0.i386.rpm : 펄 모듈과 같은 다른 Mysql client 프로그램들을 컴파일하기 위해서 필요한 library include 파일들을 제공

MySQL-shared-4.0.17-0.i386.rpm : 프로그래밍 언어 및 애플리케이션에서 Mysql load하고 사용하는데 필요한 공유 라이브러리 제공 (libmysqlclient.so*)

MySQL-embedded-4.0.17-0.i386.rpm : The embedded MySQL server library (from Mysql 4.0)

MySQL-shared-compat-4.0.17-0.i386.rpm : MySQL 3.23 4.0 두 버전의 공유 라이브러리를 포함한다. MySQL 3.23 환경에서 애플리케이션을 사용하다가 MySQL 4.0으로 라이브러리 의존성 문제없이 업그레이드를 하고자 할 때 MySQL-shared RPM 대신 설치한다. 이 패키지는 MySQL 4.0.13 부터 이용할 수 있다.

 

기본적으로 설치할 RPM MySQL-server MySQL-client 패키지입니다.

이 두 패키지를 Mysql 사이트에서 다운로드 받아 적당한 장소에 옮겨 놓습니다.

(나머지 RPM은 필요에 따라 추가적으로 설치합니다.)

 

shell> mv ./MySQL-server-4.0.17-0.i386.rpm /usr/local/src

shell> mv ./MySQL-client-4.0.17-0.i386.rpm /usr/local/src

 

RPM을 설치합니다.

 

shell> rpm -ivh MySQL-server-4.0.17-0.i386.rpm

shell> rpm -ivh MySQL-client-4.0.17-0.i386.rpm

 

Mysql 계정이 등록되어있지 않으면 다음과 같이 Mysql 계정을 등록합니다.

 

shell> /usr/sbin/groupadd mysql

shell> /usr/sbin/useradd -g mysql mysql

 

/etc/passwd 파일과 /etc/group 파일을 에디터로 열어서 mysql 계정이 등록된 것을 확인하고 변경할 사항이 있으면 변경합니다.

 

/etc/passwd

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

 

/etc/group

mysql:x:27:

 

RPM으로 설치한 경우에는 시스템 부팅시 Mysql을 자동으로 실행하기 위한 추가적인 작업이 필요없습니다. RPM으로 설치를 할 경우 RPM 설치 만으로 필요한 과정들이 대부분 이루어지기 때문에 매우 편하게 Mysql Install하여 사용할 수 있습니다.

 

다음의 명령을 실행하여 데이터베이스에 접속합니다.

 

shell> mysql mysql

또는

shell> mysql -u root -p mysql

 

참고사항

- http://www.mysql.com/documentation/mysql/bychapter/manual_Installing.html#Linux-RPM에 리눅스 RPM 설치가 설명되어있습니다. 참고하시기 바랍니다.

- RPM으로 설치했을 경우 실행파일들은 /usr/bin에 설치되고, 데이터베이스가 만들어지는 datadir /var/lib/mysql 입니다.

 

0. Mysql source 설치

(이 부분은 직접 실험해보지 않고, Mysql Document를 번역하여 옮겨놓았습니다.)

 

Mysql source install을 위해 다음과 같은 툴들이 필요하다.

 

* 압축을 풀기 위한 GNU gunzip, GNU tar. GNU tar 외에 다른 tar를 사용할 수 있으나 그 중 몇 가지는 긴 파일 이름으로 인한 문제를 일으킬 수 있다. e.g.) Sun tar

* ANSI C++ compiler. (gcc 2.95.2 및 이후버전, egcs 1.0.2 및 이후버전 또는 egcs 2.91.66, SGI C++, SunPro C++) gcc를 사용할 경우 libg++이 필요없다. gcc 2.7.X sql/sql_base.cc와 같이 완벽하게 작성된 C++파일을 컴파일하지 못하는 버그를 가지고 있다. 이 때에는 Mysql을 컴파일 할 수 있는 gcc로 업그레이드 해야한다. gcc 2.8.1은 몇몇 플랫폼에서 문제를 가지고 있다고 알려져 있다. 따라서 플랫폼에 다른 컴파일러가 있다면 gcc 2.8.1의 사용을 피해야 한다. Mysql version 3.23.X를 컴파일 할 때 gcc 2.95.2 및 이후버전을 권장한다.

* make 프로그램. GNU make 가 권장된다. make시 문제가 발생할 경우 GNU make 3.75 또는 이후버전으로 업그레이드하여 사용한다.

 

만일 gcc의 최신버전을 사용하고 있고 -fno-exceptions 옵션을 충분히 이해하고 있다면 이 옵션을 사용하는 것이 매우 중요하다. 그렇지않으면 불규칙적으로 충돌하는 바이너리 파일들을 컴파일 할 수도 있다. 따라서 -fno-exceptions를 따라 -felide-constructors -fno-rtti 를 사용하길 권장한다. 다음과 같이 명령어를 작성한다.

 

CFLAGS=-03 CXX=gcc CXXFLAGS=-03 -felide-constructors -fno-exceptions \

-fno-rtti ./configure --prefix=/usr/local/mysql --enable-assembler \

--with-mysqld-ldflags=-all-static

 

위의 옵션들 중 --prefix 는 컴파일된 파일들이 위치하는 디렉토리 즉 설치 디렉토리를 설정해주는 옵션입니다. 만일 /usr/local/share/mysql의 위치에 Mysql을 설치하고자 할 경우 이 부분에 설치 디렉토리의 위치를 기록합니다.

 

위의 옵션으로 컴파일 할 경우 대부분의 시스템에서 빠르고 안정적인 바이너리를 제공할 것이다.

 

Mysql source 배포본은 2가지로 나뉩니다. 하나는 tarball형식으로 압축한 source이고 다른하나는 source RPM 패키지 입니다.

 

o. tarball(tar.gz) 형식

 

배포파일 mysql-4.0.17.tar.gz

 

Mysql 계정이 없을 경우 사용자 및 그룹 계정을 추가합니다.

 

shell> groupadd mysql

shell> useradd -g mysql mysql

 

적당한 위치에서 압축을 풉니다.

 

shell> mv ./mysql-4.0.17.tar.gz /usr/local/src

shell> cd /usr/local/src

shell> tar xvfz mysql-4.0.17.tar.gz

 

해당 디렉토리로 이동합니다.

 

shell> cd mysql-4.0.17

 

Mysql이 설치될 디렉토리를 지정하고 디폴트 Character Set을 한글로 설정합니다.

configure option에 대해 좀더 자세한 사항을 알고자 할 경우 이곳을 방문하시기 바랍니다.

http://www.mysql.com/documentation/mysql/bychapter/manual_Installing.html#configure_options

 

shell> ./configure --prefix=/usr/local/share/mysql --with-charset=euc_kr

 

컴파일과 인스톨을 진행합니다.

 

shell> make

shell> make install

 

Mysql이 설치된 디렉토리로 이동합니다.

 

shell> cd /usr/local/share/mysql

 

기존에 Mysql을 설치하지 않았을 경우 grant table을 만들어줍니다. 처음 설치시 꼭 필요한 과정입니다.

 

shell> scripts/mysql_install_db

 

Mysql 디렉토리의 권한을 설정합니다.

 

shell> chown -R root /usr/local/share/mysql

shell> chown -R mysql /usr/local/share/mysql/var

shell> chgrp -R mysql /usr/local/share/mysql

 

설정파일 support-files/my-medium.cnf my.cnf라는 이름으로 /etc 디렉토리에 복사합니다.

 

shell> cp support-files/my-medium.cnf /etc/my.cnf

 

/etc/my.cnf 파일을 에디터로 열어 basedir datadir의 경로가 올바른지 확인합니다.

 

Mysql을 실행합니다.

 

shell> bin/mysqld_safe --user=mysql &

 

만일, 실행 후 프로세스가 계속 사라질 경우 mysql 디렉토리의 user 퍼미션을 모두 mysql로 변경합니다.

 

시스템 부팅시 자동적으로 Mysql을 실행하고자 할 경우에는 support-files/mysql.server 파일을 /etc/rc.d/init.d 디렉토리로 copy 합니다.

그리고 /etc/rc.d/rc0.d에는 K01mysql이라는 이름으로 /etc/rc.d/rc3.d에는 S90mysql이라는 이름으로 symbolic link를 만들어줍니다.

 

참고사항

 

- 좀더 자세한 사항들을 알고 싶을 경우

http://www.mysql.com/documentation/mysql/bychapter/manual_Installing.html#Installing_source 를 방문하기 바랍니다.

- 소스 패키지의 패치는 이 문서에서 다루지 않았습니다. 패치의 적용에 대해 알고싶으신 분 http://www.mysql.com/documentation/mysql/bychapter/manual_Installing.html#Applying_patches 를 방문하여 참고하시기 바랍니다.

 

o. Source RPM 형식

 

배포파일 MySQL-4.0.17.src.rpm

 

다음의 명령으로 인스톨할 수 있는 binary RPM을 생성합니다.

 

shell> rpm --rebuild --clean MySQL-4.0.17.src.rpm

 

이 후 생성된 binary RPM으로 Mysql을 설치한다. 이 과정은 위에서 설명한 Mysql RPM 설치와 동일합니다.

 

2. Apache 설치

 

기존에 존재하는 RPM 패키지를 찾아서 삭제합니다.

shell> rpm -qa | grep httpd

shell> rpm -e [httpd RPM name]

 

현재 Apache 웹데몬이 실행되고 있다면 실행을 중지시킵니다.

 

shell> /etc/init.d/httpd stop

 

http://httpd.apache.org/download.cgi 에서 Apache 2.0.48을 다운로드 받습니다. 리눅스에서 설치할 Apache의 배포본은 모두 소스 형식으로 제공됩니다.

 

배포파일 httpd-2.0.48.tar.gz

 

적당한 위치에서 다운로드 받은 배포파일의 압축을 풉니다.

 

shell> mv httpd-2.0.48.tar.gz /usr/local/src

shell> tar xvfz httpd-2.0.48.tar.gz

 

생성된 디렉토리 httpd-2.0.48로 이동합니다.

 

shell> cd httpd-2.0.48

 

다음과 같은 옵션을 사용하여 configure를 진행합니다.

옵션, 모듈 및 DSO에 대한 자세한 사항은 이후 추가적으로 설명할 것입니다.

 

shell> ./configure --enable-layout=RedHat --enable-rule=SHARED_CORE --enable-modules=so --enable-so

 

이어서 컴파일과 인스톨을 실행합니다.

 

shell> make

shell> make install

 

위의 과정으로 설치를 진행하면 Apache root 디렉토리는 /usr이 되고, 웹서비스는 /var/www 디렉토리 밑에서 이루어지며, 설정파일들은 /etc/httpd 디렉토리에, 실행파일들은 /usr/sbin 디렉토리에 설치됩니다. 레드햇 기반의 리눅스는 기본적으로 웹서버로 Apache를 사용하기 때문에 리눅스 설치 후 추가적인 업그레이드 없이 Apache로 웹서버를 운영했을 경우 기존의 디렉토리 구조를 그대로 유지하게 됩니다. 이것은 configure 진행시 --enable-layout=RedHat이라는 옵션을 사용했기 때문입니다. 디렉토리에 대한 정보는 /usr/local/src/httpd-2.0.48/config.layout을 통해 확인하기 바랍니다. 더 자세한 사항은 설치 과정 설명을 마치고 보충하겠습니다.

다음으로 /etc/httpd/conf 디렉토리의 설정파일을 변경합니다.

설치 전에 웹서버를 운영하면서 사용된 설정파일들은 설치하면서 변경되지 않습니다. 설치시 생성된 파일들은 highperformance-std.conf, httpd-std.conf, ssl-std.conf 입니다. 이 세 파일들을 각각 highperformance.conf, httpd.conf, ssl.conf 로 이름을 변경하여 기존의 파일에 덮어씌웁니다.

 

/usr/sbin/apachectl 실행파일을 이용하여 웹데몬을 실행시켜봅니다.

Apache 설치 전 웹데몬을 중지시켰다면 다음과 같이 실행이 될 것입니다.

 

shell> /usr/sbin/apachectl start

httpd: Could not determine the server's fully qualified domain name, using 127.0

.0.1 for ServerName

 

이 메시지는 /etc/httpd/conf/httpd.conf 설정파일을 수정하지 않았기 때문에 표시되는 것입니다. 그러나 웹데몬은 잘 동작하고 인터넷을 통해 접속이 가능합니다. 만일 설치 전 웹데몬을 중지시키지 않았다면 위의 명령은 실행되지 않고 오류메세지를 나타냅니다. 이때에는 일일이 kill [PID] 명령으로 웹데몬 프로세스들을 중지시키고 실행시켜야 합니다. start 명령외에 stop restart 명령을 사용하여 웹데몬 가동을 중지시키거나 재시작할 수 있습니다.

 

shell> /usr/sbin/apachectl restart

shell> /usr/sbin/apachectl stop

 

부팅시 자동으로 httpd 데몬이 실행되도록 합니다.

/usr/sbin/apachectl 파일을 /etc/init.d 디렉토리에 httpd로 이름을 변경하여 복사합니다. 기존에 httpd 파일이 존재할 경우 덮어씌웁니다. 그리고 /etc/rc.d/rc0.d, /etc/rc.d/rc3.d, /etc/rc.d/rc5.d 디렉토리에 /etc/rc.d/init.d/httpd symbolic link 파일이 있는지 확인하고 없으면 link 파일을 생성합니다.

 

shell> ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc0.d/K90httpd

shell> ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S89httpd

shell> ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc5.d/S89httpd

 

마지막으로 /etc/httpd/conf/httpd.conf 파일의 설정을 변경합니다.

기본적으로 변경해야할 부분은

 

#servername www.example.com:80

 

으로 #을 제거하고 www.example.com을 웹서버의 domain name으로 수정해 주거나 localhost로 적어줍니다.

 

servername yekdm.com:80

또는

servername localhost:80

 

뒤의 80이라는 숫자는 웹서버가 이용할 port 번호를 가리킵니다. 웹서버는 기본적으로 80 port를 사용하며 특별한 경우가 아니라면 변경하지 않기를 바랍니다.

 

한글을 지원하기 위해서 AddDefaultCharset ISO-8859-1 부분을 찾아서 AddDefaultCharset utf8 또는 AddDefaultCharset euc_kr 로 변경합니다.

 

httpd.conf 설정파일은 Apache 웹서버를 시스템에 맞게 구동시키는데 매우 중요한 정보들을 담고 있습니다. Apache HTTP Server Version 2.0 문서 http://httpd.apache.org/docs-2.0/ 를 참고하시기 바랍니다.

 

위의 과정으로 Apache 웹서버의 설치가 끝났습니다. 그러나 아파치 웹서버는 관리자가 모듈들을 선택하여 서버에 포함할 기능을 결정할 수 있는 모듈화된 프로그램으로 모듈의 개념 및 사용법, 동적공유객체(DSO) 등을 이해하여야 아파치의 확장된 기능을 사용할 수 있습니다. , PHP와 같은 프로그래밍 언어를 사용하고자 할 경우 또는 자바의 Servlet Container Tomcat Apache 웹서버와의 연동은 모듈을 통하여 이루어집니다.

전반적인 내용은 Apache HTTP Server Version 2.0 문서 http://httpd.apache.org/docs-2.0/ 에 있습니다. 여기서는 기본적으로 필요한 사항에 대해서만 설명하겠습니다.

 

* configure 옵션 (autoconf 출력옵션)

 

--help

모든 옵션과 사용법을 화면에 출력해줍니다. 실제로 configure가 이루어지지 않습니다.

 

--prefix=/usr/local/share/apache

Apache 웹서버가 설치될 디렉토리를 설정합니다. 이 문서에서는 RedHat에 포함된 Apache의 기본 디렉토리 구조를 따라가고자 이 옵션을 사용하지 않고 --enable-layout=RedHat이라는 옵션을 사용했습니다.

 

--enable-layout=RedHat

이 옵션을 통해 여러가지 플랫폼에 해당하는 적절한 디렉토리 구조를 따라 Apache를 설치할 수 있습니다. 각 플랫폼의 path layout config.layout 파일에 기록되어 있습니다.

 

--enable-rule=SHARED_CORE

Apache 컴파일시 rule을 지정합니다. SHARED_CORE DSO(Dynamic Shared Objects, 동적공유객체)를 사용할 수 있는 형태로 Apache를 컴파일하도록 하는 일종의 규칙입니다. 이 옵션을 지정해주면 DSO로 컴파일된 아파치에서 제공하지 않는 외부 모듈들을 선택적으로 사용할 수 있게 됩니다.

기본형은 --enable-rule=[RULE-NAME]으로 [RULE-NAME]에 해당하는 컴파일 규칙을 enable시킵니다. --help 옵션으로 나타나는 도움말에서는 이 옵션을 표시하고 있지 않습니다.

 

--enable-modules=so

mod_so(so_module) Apache에 컴파일하여 포함시킵니다.(모듈의 정적 컴파일)

기본형은 --enable-modules=[MODULE-LIST]로 공백으로 구분한 [MODULE-LIST]에 나와있는 모듈들을 컴파일하여 포함합니다.

 

--enable-so

Apache가 실행시 특별한 옵션없이 자동으로 동적공유객체(DSO-Dynamic Shared Objects)를 읽어들일 수 있도록 하기 위한 설정옵션입니다.

 

이외에 여러가지 옵션들이 제공됩니다. 추가적인 사항은 Apache HTTP Server Version 2.0 문서 http://httpd.apache.org/docs-2.0/ 을 찾아보거나 --help 옵션으로 확인하기 바랍니다.

 

* 모듈

 

Apache는 모듈화된 설계로 이루어진 프로그램입니다. 모듈은 특별한 기능을 수행하기 위한 작은 프로그램으로 이해할 수 있습니다. , 모듈마다 각각의 역할이 다르기 때문에 핵심 구현부 또는 실행부에 추가적으로 포함시켜 원하는 기능을 선택적으로 사용할 수 있습니다.  Apache의 핵심 기능을 구현하는 모듈은 core이고 core를 기반으로 모듈을 추가하여 확장된 기능을 사용할 수 있습니다. 모듈은 Apache 컴파일시 정적으로 포함시킬 수 있고, 또는 DSO mechanism에 의해 Apache 컴파일 이후 추가적으로 포함하여 사용할 수 있습니다. DSO(Dynamic Shared Objects)를 지원하기 위해서는 컴파일시 configure 옵션으로 --enable-rule=SHARED_CORE를 추가하여 DSO 지원 형식으로 Apache를 컴파일하여야 하며, mod_so 모듈을 컴파일시 포함시켜야 합니다. mod_so 모듈은 core를 제외하고 DSO가 될 수 없는 유일한 모듈로서 Apache 핵심에 정적으로 컴파일해야 하며, DSO로 컴파일된 모듈을 Apache에서 읽어들이기 위한 기능을 제공합니다. 따라서 configure 진행시 일반적으로 mod_so를 포함하도록 합니다. 나머지 모듈에 관하여는 Apache Document를 참고하기 바랍니다.

 

* 동적공유객체(DSO-Dynamic Shared Objects)

 

Apache가 동적으로 load할 수 있는 객체입니다. core mod_so를 제외한 다른 모든 아파치 모듈 소스를 DSO 형식의 모듈로 컴파일하여 Apache에서 load하여 사용할 수 있습니다. DSO로 사용할 아파치 모듈을 쉽게 만들기 위해서 apxs(Apache Extension Tool)라는 지원프로그램이 있습니다. 이 프로그램으로 아파치 배포본 소스 트리 없이, DSO 지원을 위한 플랫폼 특유의 컴파일러 옵션과 링커 옵션을 고려하지 않고 모듈 소스를 DSO 모듈로 쉽게 컴파일할 수 있습니다. PHP Tomcat 등 외부 프로그램에서 제공하는 DSO 모듈은 프로그램 configure apxs를 사용한 옵션을 통해 프로그램과 함께 컴파일되어 생성됩니다. 자세한 사항은 Apache Document 내의 동적공유객체(DSO) http://httpd.apache.org/docs-2.0/dso.html 문서를 참고하기 바랍니다.

 

참고사항

 

- 다음은 Apache HTTP Server Project 사이트에서 제공하는 문서입니다. 이 문서를 통해 Apache에 대해 더 유익한 정보들을 얻을 수 있습니다.

Apache HTTP Server Version 2.0 문서 http://httpd.apache.org/docs-2.0/

 

3. PHP 설치

 

http://www.php.net/downloads.php 에서 소스 배포본을 다운로드 받습니다. 사이트를 방문하면 알 수 있듯이 윈도우 외의 시스템에서는 소스 형식의 배포본 만을 제공합니다.

 

배포파일 php-4.3.4.tar.gz

 

PHP는 모든 버전이 Apache 1.3.X와 연동이 가능합니다.

Apache 2.0의 최신버전과 함께 설치할 버전으로 PHP 4.3.0 및 이후 버전을 사용해야 합니다. Apache 2.0 SAPI-support PHP 4.2.0에서부터 시작되었습니다. PHP 4.2.3 Apache 2.0.39에서 동작하므로 PHP 4.2.3과 다른 Apache 2.0 버전을 사용하지 말기 바랍니다. 권장되는 설치 버전은 Apache 2의 최신 버전과 함께 PHP 4.3.0 및 이후 버전을 사용하는 것입니다.

 

기존에 PHP RPM으로 설치되어있는지 확인한 후 설치되어 있으면 RPM을 제거합니다.

 

shell> rpm -qa | grep php

shell> rpm -e (--nodeps) [php RPM name]

 

배포파일을 적당한 위치로 옮긴 후 압축을 풀어줍니다.

 

shell> mv php-4.3.4.tar.gz /usr/local/src

shell> cd /usr/local/src

shell> tar xvfz php-4.3.4.tar.gz

 

압축을 풀면 php-4.3.4 디렉토리가 생성됩니다.

디렉토리 안으로 이동하여 configure를 실행시킵니다.

 

shell> cd ./php-4.3.4

shell> ./configure --with-apxs2=/usr/sbin/apxs --with-config-file-path=/etc --with-zlib --with-gd --with-mysql --with-mod-charset --with-language=korean --with-charset=euc_kr

 

위의 옵션으로 실행했을 때 libpng.(a|so)를 찾을 수 없다는 오류가 발생할 수 있습니다. 이 때에는 --with-gd 옵션을 제거하고 실행하거나 http://ftp.redhat.com/pub/redhat/linux/9/en/os/i386/RedHat/RPMS/ 에서 libpng-devel-1.2.2-16.i386.rpm을 다운로드 받아서 설치한 후 실행하기 바랍니다. GD PHP 자체적으로 그래픽을 지원하는 기능이므로 PHP로 그래픽을 구현하기 위해서 꼭 필요한 옵션입니다.

 

* configure options

 

--prefix=PRIFIX

설치 디렉토리 설정. 디폴트 설치 디렉토리는 /usr/local 입니다. 즉 이 옵션을 사용하지 않을 경우 /usr/local 디렉토리에 PHP가 설치됩니다.

 

--with-apxs2[=FILE]

Apache 2.0 에서 공유할 DSO 모듈을 build하기 위해 사용합니다. FILE Apache apxs tool이 있는 경로를 나타냅니다. 디폴트는 apxs입니다. Apache 1.3.X에서는 --with-apxs[=FILE] 옵션을 사용합니다.

 

--with-config-file-path=PATH

php.ini 설정파일이 위치하게 될 경로를 정해줍니다. 디폴트는 PRIFIX/lib에 위치하게 됩니다. (PRIFIX /usr/local이면 /usr/local/lib에 위치하게됩니다.)

 

--with-zlib[=DIR]

ZLIB support를 포함시킵니다. 시스템에 zlib 1.0.9 및 이후 버전이 설치되어있어야 합니다. 레드햇 9.0에서는 1.1.4-8 버전이 RPM으로 설치되어있습니다. 확인해보시기 바랍니다.

 

--with-gd[=DIR]

GD support를 포함시킵니다. DIR GD가 인스톨된 디렉토리의 경로명입니다. DIR을 셋팅해주지 않으면 번들용 GD 라이브러리가 사용됩니다.

 

--with-mysql[=DIR]

MySQL support를 포함시킵니다. DIR MySQL base directory, 정의해주지 않으면 번들용 MySQL library가 사용됩니다.

 

--with-mod-charset

Russian Apache mod_charset 모듈에 대한 통신 테이블을 제공합니다. Apache mod_charset 모듈은 문서원본의 character-set과 문서를 클라이언트로 보내기 전에 변환할 character-set을 지정할 수 있는 역할을 제공합니다. Apache 2.0에서는 mod_charset_lite 모듈을 통해 실험적으로 구현하고 있습니다.

 

(XML support PHP 4.X 버전에서 자동으로 포함합니다.)

 

이 외의 옵션에 관해서는 configure --help 명령을 통해 확인해보거나, http://kr2.php.net/manual/kr/print/install.configure.php 문서를 참고하시기 바랍니다.

 

컴파일과 인스톨을 진행합니다.

 

shell> make

shell> make install

 

다음은 위의 과정으로 설치를 진행했을 경우의 설치 경로입니다.

 

PHP CLI binary : /usr/local/bin/

PHP CLI man page : /usr/local/man/man1/

Apache Shared module (libphp4.so) : /usr/lib/apache/

shared extensions : /usr/local/lib/php/extensions/no-debug-non-zts-20020429

PEAL environment : /usr/local/lib/php/

build environment : /usr/local/lib/php/build/

header files : /usr/local/include/php/

helper programs : /usr/local/bin/

 

php.ini-dist /etc php.ini 로 이름을 변경하여 복사합니다. 기존에 있던 php.ini 파일은 php.ini.rpmsave 파일로 이름이 변경되어 있습니다.

 

shell> cp php.ini-dist /etc/php.ini

 

마지막으로 Apache 웹서버와 PHP 모듈과의 연동을 위해서 /etc/httpd/conf/httpd.conf 파일을 수정해줍니다. PHP install(make install 과정)시 모듈을 load하는 부분이 httpd.conf 파일에 자동으로 추가됩니다. 다음 부분이 httpd.conf 파일에 기록되어 있는지 확인합니다.

 

LoadModule php4_module             lib/apache/libphp4.so

 

이부분이 없을 경우 Dynamic Shared Object (DSO) Support 부분에 추가합니다.

 

AddType 부분으로 이동해서 다음을 추가합니다.

 

AddType application/x-httpd-php .php .phtml

AddType application/s-httpd-php-source .phps

 

DirectoryIndex 부분을 찾아 index.php index.phtml을 추가합니다.

 

DirectoryIndex index.html index.html.var index.php index.phtml

 

httpd 데몬을 재실행합니다. (Apache 웹서버를 재가동시킵니다.)

 

shell> /etc/init.d/httpd restart

 

/var/www/html 디렉토리 내에서 다음과 같은 코드를 작성하여 웹브라우저를 통해 확인해봅니다.

shell> vi phpinfo.php

<?

phpinfo();

?>

또는

shell> cat > test.php

<? phpinfo(); ?>

^d

 

PHP를 재설치하거나, 업그레이드하거나 또는 패치할 경우 config.cache 파일을 삭제한 후 위와 동일한 과정으로 진행합니다.

 

참고사항

- 다음 문서를 참고하시기 바랍니다.

http://kr2.php.net/manual/kr/print/install.apache2.php

http://kr2.php.net/manual/kr/print/install.configure.php

 

4. Zend Optimizer 설치

 

Zend Optimizer - Zend Encoder Zend SafeGuard Suite에 의해 encoding된 파일을 실행시키며, PHP Application의 실행속도를 향상시키는 free software. runtime performance 40%이상 향상시킬 수 있습니다.

 

 http://zend.com/store/free_download.php?pid=13 에서 리눅스용 최신 버전을 다운로드 받습니다.

 

배포파일 ZendOptimizer-2[1].1.0b-Linux_glibc21-i386.tar.gz

 

배포파일을 적당한 위치로 옮겨서 압축을 풀어준다.

 

shell> mv ZendOptimizer-2[1].1.0b-Linux_glibc21-i386.tar.gz /usr/local/src

shell> tar xvfz ZendOptimizer-2[1].1.0b-Linux_glibc21-i386.tar.gz

 

ZendOptimizer-2.1.0b-Linux_glibc21-i386 디렉토리가 생성되어 압축이 풀립니다. 이 디렉토리로 이동합니다.

 

shell> cd ZendOptimizer-2.1.0b-Linux_glibc21-i386

 

다음의 명령을 실행시킵니다.

 

shell> ./install.sh

 

화면에 GUI 환경이 나타나면서 install이 진행됩니다. 각 과정은 자동으로 이루어지며 마지막으로 Apache 웹서버를 재구동시켜줍니다. 설치는 /usr/local/Zend 경로에서 이루어집니다. 기존의 /etc/php.ini 파일은 /etc/php.ini-zend_optimizer.bak 으로 이름이 변경되고 php.ini 파일이 /usr/local/Zend/etc 안에 생성되며 /etc 디렉토리 안에는 이 /usr/local/Zend/etc/php.ini symbolic link 파일이 만들어져 실제 php.ini 파일과 연결됩니다. 모든 과정이 끝나면 Zend Optimizer가 성공적으로 설치된 것입니다. install을 진행하면서 화면에 나타난 글들을 주의깊게 읽어보시기 바랍니다.

 

5. J2SE 설치

 

http://java.sun.com/j2se/1.4.2/download.html Download J2SE v 1.4.2_03에서 SDK를 다운로드 받습니다. 배포본 형태는 2가지로 하나는 RPM 파일을 만들어주는 binary 파일이고, 다른 하나는 배포파일이 있는 그 자리에서 압축을 풀어서 설치하는 바이너리 파일입니다. 레드햇 기반의 리눅스에서는 RPM 소스 형식의 배포본을 다운로드 받아서 설치하길 권장합니다.

 

0. RPM 소스 설치

 

배포파일 j2sdk-1_4_2_03-linux-i586-rpm.bin

 

적당한 위치로 배포파일을 옮겨서 파일을 실행시킵니다.

실행 전 배포파일의 퍼미션을 확인하여 실행가능한 퍼미션을 갖도록 설정을 합니다.

 

shell> mv j2sdk-1_4_2_03-linux-i586-rpm.bin /usr/local/src

shell> cd /usr/local/src

shell> chmod 755 j2sdk-1_4_2_03-linux-i586-rpm.bin

shell> ./j2sdk-1_4_2_03-linux-i586-rpm.bin

 

사용권 계약이 화면에 출력되면 y 또는 yes를 입력하여 동의합니다. 이 후 설치가 계속 진행되어 j2sdk-1_4_2_03-linux-i586.rpm 파일이 생성됩니다. 생성된 RPM 파일을 설치합니다.

 

shell> rpm -ivh j2sdk-1_4_2_03-linux-i586.rpm

 

/usr/java/j2sdk1.4.2_03 디렉토리가 생성되면서 이 곳에서 설치가 이루어집니다.

 

/etc/profile을 편집하여 PATH 설정을 해줍니다.

profile 첫부분에 다음을 추가해줍니다.

 

shell> vi /etc/profile

 

JAVA_HOME=/usr/java/j2sdk1.4.2_03

PATH=$PATH:$JAVA_HOME/bin

export JAVA_HOME

 

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

 

shell> source /etc/profile

 

임의의 위치에서 java를 실행시킵니다.

 

shell> java

 

JAVA option들이 화면에 출력되면 성공적으로 설치가 이루어진 것입니다.

 

0. binary 배포본 설치

 

배포파일 j2sdk-1_4_2_03-linux-i586.bin

 

설치할 경로로 파일을 옮깁니다. 여기서는 /usr/local/share J2SE를 설치할 것 입니다.

 

shell> mv j2sdk-1_4_2_03-linux-i586.bin /usr/local/share

shell> cd /usr/local/share

 

퍼미션을 확인하여 파일이 실행가능하도록 권한을 설정합니다.

 

shell> chmod 755 j2sdk-1_4_2_03-linux-i586.bin

 

파일을 실행시켜서 J2SE를 설치합니다.

 

shell> ./ j2sdk-1_4_2_03-linux-i586.bin

 

먼저 화면에 사용권 계약이 출력됩니다. 사용권 계약에 동의하기 위해 y 또는 yes를 입력하면 압축이 풀리면서 SDK가 설치됩니다. 설치경로는 /usr/local/share/j2sdk1.4.2_03 입니다.

 

PATH를 설정해줍니다. PATH 설정은 /etc/profile을 편집하여 이루어집니다. /etc/profile을 에디터로 열어서 파일 첫부분에 다음을 추가합니다.

 

shell> vi /etc/profile

 

JAVA_HOME=/usr/local/share/j2sdk1.4.2_03

PATH=$PATH:$JAVA_HOME/bin

export JAVA_HOME

 

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

 

shell> source /etc/profile

 

임의의 위치에서 java를 실행시킵니다.

 

shell> java

 

JAVA option들이 화면에 출력되면 성공적으로 설치가 이루어진 것입니다

 

참고사항

- J2SE의 배포본은 JRE(Java Runtime Environment) SDK(Software Development Kit)로 나뉘어집니다. JRE는 자바로 개발된 소프트웨어를 실행시키는 데 필요한 패키지이고 SDK는 자바를 사용하여 소프트웨어를 개발하는 개발자들을 위한 패키지입니다. 따라서 개발을 목적으로 자바를 설치하려는 사람은 SDK를 다운로드 받아서 설치하기 바랍니다.

 

- /etc/profile은 로그인시 필요한 환경을 설정해주는 설정파일로 쉘스크립트로 이루어져있습니다. profile의 내용을 잘 이해하시는 분은 자바 실행파일이 위치한 JAVA_HOME/bin 디렉토리의 PATH가 잘 이루어지도록 임의로 변경할 수 있습니다. 자바는 PATH에 상관없이 배포파일을 실행시켜서 또는 배포파일을 실행시켜서 생성된 RPM을 설치함으로 install이 완료된 것입니다. PATH 설정은 설치된 자바를 임의의 위치에서 편리하게 사용 가능하도록 하기 위한 것입니다.

 

- 자바의 공식 사이트 http://java.sun.com 에서 더 많은 정보들을 얻을 수 있습니다.

 

6. Tomcat 설치

 

* Java Servlet Container

JVM 상에서 WEB 서비스를 위한 Java Servlet API를 구현하여 서비스 해주는 Java Program으로, Servlet Container Client http 요청을 웹서버를 통해 전달받아서 Application Servlet에 전달하고, Servlet http 응답 메시지를 웹서버에게 전달해서 Client로 돌려주는 역할을 한다.

 

* Servlet Container의 종류

1) Sun Microsystems 제공 Servlet Container

JSDK(Java Servlet Development Kit)

JSWDK(JavaServer Web Development Kit)

J2EE(Java2 SDK, Enterprise Edition)

Java Web Server(iPlanet Web Server)

 

2) Apache 제공 Servlet Container

Apache JServ, Tomcat

 

3) 기타 Servlet Container

JRun/JRun Pro, Resin, WebLogic, Web Sphere, IAS

 

* Tomcat

Tomcat Apache Software Foundation Jakarta 프로젝트의 일환으로 개발중인 소프트웨어입니다.

Tomcat Java Servlet Java Server Page를 사용할 수 있도록 하는 Servlet Container이며 독립적으로 웹서버의 기능을 수행합니다. 그러나 일반 html 문서도 Servlet Container를 통해 번역되므로 수행속도가 느리고 웹서버로서의 기능에 제한이 있으므로 보통 다양한 모듈과 막강한 기능을 가지고 있는 Apache 웹서버와 연동하여 사용합니다.

 

배포본은 binary source 형식으로 제공됩니다. 여기서는 바이너리 배포본의 설치만 설명합니다. The Apache Jakarta Project 홈페이지의 Downloads 부분에 있는 CVS repositories는 현재 개발중인 소스들을 확인하고 다운로드 받을 수 있는 페이지입니다. (CVSConcurrent Version System의 약어로 오픈소스 프로젝트에서 개발중인 소스의 버전을 관리해주는 시스템입니다. CVS에 대한 자세한 사항은 이 문서의 성격과 다르므로 언급하지 않겠습니다. 자세한 사항은 CVS 매뉴얼을 참고하기 바랍니다.)

 

0. 바이너리 설치

 

http://jakarta.apache.org/site/binindex.cgi에서 Tomcat 5.0.16tarball 형식의 배포본을 다운로드 받습니다.

 

배포파일 jakarta-tomcat-5.0.16.tar.gz

 

적당한 위치(설치하고자 하는 경로)에서 압축을 풀어줍니다. 바이너리 배포본은 압축을 풀어줌으로 기본적인 설치가 완료된 것입니다.

 

shell> cp jakarta-tomcat-5.0.16.tar.gz /usr/local/share

shell> cd /usr/local/share

shell> tar xvfz jakarta-tomcat-5.0.16.tar.gz

 

Jakarta-tomcat-5.0.16 디렉토리가 생성되고 압축이 풀립니다.

실행파일이 들어있는 디렉토리로 이동해서 Tomcat을 실행시켜봅니다.

 

shell> cd /usr/local/share/Jakarta-tomcat-5.0.16/bin

shell> ./startup.sh

또는

shell> ./catalina.sh start

 

Using CATALINA_BASE:   /usr/local/share/jakarta-tomcat-5.0.16

Using CATALINA_HOME:   /usr/local/share/jakarta-tomcat-5.0.16

Using CATALINA_TMPDIR: /usr/local/share/jakarta-tomcat-5.0.16/temp

Using JAVA_HOME:       /usr/java/j2sdk1.4.2_03

 

위의 메시지가 나오면 Tomcat이 정상적으로 작동하는 것입니다. 클라이언트에서 웹브라우저를 통해 다음의 주소로 접속합니다.

 

http://localhost:8080 또는 http://설치한서버의주소:8080

 

정상적으로 Tomcat이 작동하고 있다면 브라우저에 Tomcat 관련 문서가 나타날 것입니다.

 

만일, 정상적으로 작동하지 않는다면 J2SE의 설치가 제대로 이루어지지 않았거나 PATH 설정이 올바르게 이루어지지 않아서입니다. /etc/profile을 에디터로 열어서 J2SE 설치 시 PATH 설정한 부분을 확인해 봅니다.

 

Tomcat bin 디렉토리의 catalina.sh 또는 startup.sh 파일을 실행시켜서 작동시킵니다.

 

shell> pwd

/usr/local/share/jakarta-tomcat-5.0.16/bin

shell> ./catalina.sh start

또는

shell> ./startup.sh

 

Tomcat Shut down catalina.sh 또는 shutdown.sh 파일을 이용합니다.

 

shell> ./catalina.sh stop

또는

shell> ./shutdown.sh

 

마지막으로 PATH를 설정해줍니다. PATH 설정은 /etc/profile을 편집하여 이루어집니다. /etc/profile을 에디터로 열어서 J2SE 설치 시 PATH 설정한 부분에 다음을 추가합니다.

 

shell> vi /etc/profile

 

JAVA_HOME=/usr/java/j2sdk1.4.2_03

CATALINA_HOME=/usr/local/share/jakarta-tomcat-5.0.16

PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

export JAVA_HOME CATALINA_HOME

 

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

 

shell> source /etc/profile

 

PATH를 설정해주었으므로 임의의 위치에서 Tomcat을 실행시킬 수 있습니다.

 

Tomcat이 현재 운영 중이라면 Shut down을 하고 다시 실행시킵니다.

 

shell> ps -el

 

…………………………………………………………………………………………………….

0 S     0  1012     1  0  85   0    - 61602 schedu ?        00:00:12 java

…………………………………………………………………………………………………….

 

shell> catalina.sh stop

또는

shell> shutdown.sh

 

shell> catalina.sh start

또는

shell> startup.sh

 

설치가 완료되었습니다.

 

7. Tomcat Web Server Connector, JK2를 이용한 Apache2 웹서버와 Tomcat5의 연동

 

The Apache Jakarta Project 사이트에서 JK2 connector를 다운로드 받습니다. JK2 binary 배포본은 SolarisWIN32용 만이 배포되고 있으므로 소스 형태의 배포본을 다운로드 받아야 합니다. http://jakarta.apache.org/site/sourceindex.cgi 에서 JK 2.0.2 Source Release tar.gz를 다운로드 받습니다.

배포파일 jakarta-tomcat-connectors-jk2-src-current.tar.gz

 

JK2 connector 소스를 컴파일 하면 얻을 수 있는 것이 mod_jk2.so 모듈입니다. Apache 웹서버와 Tomcat을 연동할 mod_jk2.so 모듈을 얻는 것이 컴파일의 목적입니다.

 

적당한 위치에서 압축을 풀어줍니다. 소스들을 컴파일하고 필요한 파일들을 이동시키면 더 이상 사용하지 않기 때문에 /usr/local/src에서 압축을 풀어주겠습니다.

 

shell> mv jakarta-tomcat-connectors-jk2-src-current.tar.gz /usr/local/src

shell> cd /usr/local/src

shell> tar xvfz jakarta-tomcat-connectors-jk2-src-current.tar.gz

 

압축이 풀리면 해당 디렉토리로 이동합니다. JK2 모듈을 얻기 위해서는 jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2로 이동합니다.

 

shell> cd /usr/local/src/jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2

 

다음과 같이 configure를 실행하고 make로 컴파일을 합니다.

 

shell> ./configure --with-apxs2=/usr/sbin/apxs

shell> make

 

configure 옵션(autoconf 출력옵션) --with-apxs2[=FILE]

Apache 2.0 에서 공유할 DSO 모듈을 build하기 위해 사용합니다. FILE Apache apxs tool이 있는 경로를 나타냅니다.

 

make 시 에러가 발생할 수 있습니다. 이것은 autoconf 실행 중 설정되는 Apache 홈디렉토리가 RedHat에서는 /usr이므로, 컴파일 중에 필요로 하는 libtool 실행파일을 /usr/build/ 경로에서 찾는데 RedHat에서는 /var/www/build/ 경로에 존재하기 때문입니다. 따라서 문제가 발생할 경우에는 /var/www/build 디렉토리를 /usr 디렉토리 밑으로 복사하기 바랍니다.

 

문제없이 완료되었다면, 현재 디렉토리를 기준으로 ../build/jk2/apache2/의 경로에 mod_jk2.so 파일이 만들어졌을 것입니다. 이 파일을 아파치 모듈이 있는 디렉토리로 복사합니다.

 

shell> pwd

/usr/local/src/jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2

shell> cd ../build/jk2/apache2

shell> ls

(mod_jk2.so 파일이 존재하는지 확인합니다.)

shell> cp mod_jk2.so /usr/lib/apache/

(레드햇에서는 아파치 모듈이 /usr/lib/apache 디렉토리에 위치합니다.)

 

/usr/local/src/jakarta-tomcat-connectors-jk2-2.0.2-src/jk/conf/workers2.properties 파일을 /etc/httpd/conf/ 위치로 복사합니다.

 

shell> cd /usr/local/src/jakarta-tomcat-connectors-jk2-2.0.2-src/jk/conf

shell> cp workers2.properties /etc/httpd/conf

 

이 파일은  Apache 웹서버에서 JK2 모듈을 사용할 때 필요한 여러가지 설정을 저장한 파일입니다. 이 파일 이외에 jk2.properties 파일이 중요한데, workers2.properties 파일이 Apache 쪽에서 JK2 모듈의 설정을 담당한다면, jk2.properties 파일은 Tomcat 쪽에서 JK2 모듈을 통한 웹서버와의 연결 설정을 담당합니다. Tomcat 5.0 버전에서는 JK2 connector를 처리할 수 있는 coyote connector가 기본설치 되어 있기 때문에 jk2.properties 파일을 Tomcat conf 디렉토리로 복사할 필요는 없습니다.

 

/etc/httpd/conf/httpd.conf 파일을 vi와 같은 편집기로 열어 LoadModule 부분을 찾아서 다음을 추가합니다.

 

LoadModule        jk2_module         lib/apache/mod_jk2.so

 

DirectoryIndex 부분을 찾아서 index.jsp를 추가합니다.

 

DirectoryIndex index.html index.html.var index.php index.phtml index.jsp

 

저장하고 편집기를 끝냅니다.

다음으로 /etc/httpd/conf 디렉토리에 복사해놓은 workers2.properties를 수정합니다. 아래의 설정 내용으로 구성합니다.

 

shell> cd /etc/httpd/conf

shell> vi worker2.properties

 

# Shared memory handling. Needs to be set.

[shm]

file=/var/log/httpd/shm.file

size=1048576


# Example socket channel, explicitly set port and host.

[channel.socket:localhost:8009]

port=8009

host=127.0.0.1

 

# define the worker

[ajp13:localhost:8009]

channel=channel.socket:localhost:8009


# Announce a "status" worker

[status:status]


# Uri mapping

[uri:/jsp-examples/*]

worker=ajp13:localhost:8009


[uri:/servlets-examples/*]

worker=ajp13:localhost:8009


[uri:/tomcat-docs/*]

worker=ajp13:localhost:8009


[uri:/*]

worker=ajp13:localhost:8009


[uri:/status/*]

worker=status:status

 

(위 설정내용은 포스데이타㈜ BPM 사업추진반 장윤기 대리님이 작성한 <아파치와 톰캣 연동 및 로드 발란싱 구현>에서 발췌하여 수정한 것입니다.)

/usr/local/share/jakarta-tomcat-5.0.16/conf/jk2.properties를 수정합니다.

 

shell> cd /usr/local/share/jakarta-tomcat-5.0.16/conf

shell> vi jk2.properties

 

## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED

## WHEN YOU EDIT THE FILE.

 

## COMMENTS WILL BE _LOST_

 

## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.

 

# Set the desired handler list

# handler.list=apr,request,channelJni

#

# Override the default port for the socketChannel

channelSocket.port=8009

# Default:

# channelUnix.file=${jkHome}/work/jk2.socket

# Just to check if the the config  is working

# shm.file=${jkHome}/work/jk2.shm

shm.file=/var/log/httpd/jk2.shm

 

# In order to enable jni use any channelJni directive

# channelJni.disabled = 0

# And one of the following directives:

 

# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so

 

# If set to inprocess the mod_jk2 will Register natives itself

# This will enable the starting of the Tomcat from mod_jk2

apr.jniModeSo=inprocess

 

(위 설정내용은 포스데이타㈜ BPM 사업추진반 장윤기 대리님이 작성한 <아파치와 톰캣 연동 및 로드 발란싱 구현>에서 발췌하여 수정한 것입니다.)

 

모든 설정이 끝났습니다. 실행시키기 전에 /usr 디렉토리에서 /etc/httpd/conf 디렉토리에 연결된 링크 파일을 만들어줍니다. 이것은 mod_jk2.so 모듈을 컴파일 할 때 Apache Home Directory /usr 로 인식했기 때문에 workers2.properties 파일을 /usr/conf에서 찾기 때문입니다. 다음과 같이 실행합니다.

 

shell> cd /usr

shell> ln -s /etc/httpd/conf ./conf

 

모든 과정이 끝났으면 Tomcat Apache 웹서버를 실행시킵니다. ps 명령어로 현재 실행중인 process 목록을 확인해서 Tomcat Apache가 가동중인지 확인하고, 가동중이라면 실행을 중지시킵니다. 참고로 Tomcat Process CMD java입니다.

 

shell> ps -el

(프로세스가 존재하는지 확인)

shell> catalina.sh stop

(프로세스가 존재하면 실행중지)

shell> catalina.sh start

 

shell> /etc/init.d/httpd stop

(Apache 프로세스가 존재하면 실행중지)

shell> /etc/init.d/httpd start

 

또는 (Apache 프로세스가 존재할 경우)

 

shell> /etc/init.d/httpd restart

 

클라이언트에서 http://serverURL 로 연결해 봅니다. Apache Tomcat 웹페이지가 보이면 정상적으로 연동되어 작동하는 것입니다.

 

jk2.properties의 설정을 변경하였을 경우 이를 적용시키기 위해서는 Tomcat을 재가동 시켜주고 Apache 또한 다시 실행시켜주어야 합니다. workers2.properties의 설정을 변경한 경우에는 Apache 웹서버만 재가동시킵니다.

 

참고사항

 

- Apache Tomcat 연동에서 가장 중요한 부분은 자신의 시스템 또는 제공하려는 서비스에 알맞은 설정 파일을 작성하는 것입니다. 이 문서에서는 기본적인 설치만을 다루고 있기 때문에 자세한 사항은 Apache Jakarta 홈페이지를 방문해서 Tomcat 5.0 Document를 참고하기 바랍니다.

 

- 참고문서

http://jakarta.apache.org/tomcat/tomcat-5.0-doc/index.html Tomcat 5.0 Document

http://www.javamania.pe.kr/index2.html [자바이야기>자료실] 아파치와 톰캣 연동 및 로드 발란싱 구현 (장윤기 님)

 

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요