웹마스터 팁

아직 마니 허접하고 모자르지만
여기엔 소스 설치하는 법은 잘 못찾겠네요.
나름대로 삽질한 삽질기를 한번 올려봅니다.

첨부 파일은 제 홈에 설치 이야기 게시판에서 받아가세요
질문은 홈의 질답 이야기 게시판에서 해주세요.
메일로 질문은 받지 않습니다.
비츠로 홈 - http://vitro.pe.kr


앞에서 필요한 모듈을 모두 아파치 소스내에 탑제하였다.
이제 그 모듈들을 모두 가진 정적 컴파일하여 실제 아파치를 설치한다.
아파치와 Resin 엔진을 연동하고 가상 호스팅을 지원하여 설치한다.
설치 옵션설정시
나는 아파치의 상태를 살펴보기위해 server-status를 enabled 하고
개인 폴더의 보호를 위해 Auth DBpasswd 를 enabled 지원하였다.

jsp와 아파치와의 가상 호스팅 설정 파일 사용법과 php.ini 설정은 다음 문서에서
다루겠다. 지금은 일단 연동해서 설치 법만 한다.

우선 젠드와 php액셀레이터주 어떤 php 가속기를 사용할것인가를
결정하고 자신이 사용할 것을 다운 받는다.

php 액셀레이터
http://www.php-accelerator.co.uk/download.php

Zendoptimizer는 아래 주소의 페이지 젤 아래에 보면 accept라는 단추를 누르면 다운된다.
http://www.zend.org/store/getfreefile.php?pid=13&zbid=548
소스 디렉토리로 이동
cd /var/tmp/apache-1.3.26

아파치 마지막 컨피그

SSL_BASE=SYSTEM
EAPI_MM=SYSTEM
OPTIM="-O3 -march=i686 -funroll-loops -fomit-frame-pointer"
CFLAGS="-DDYNAMIC_MODULE_LIMIT=0"
./configure
--prefix=/home/httpd
--bindir=/usr/bin
--sbindir=/usr/sbin
--libexecdir=/usr/lib/apache
--includedir=/usr/include/apache
--sysconfdir=/etc/httpd/conf
--localstatedir=/var
--runtimedir=/var/run
--logfiledir=/var/log/httpd
--datadir=/home/httpd
--proxycachedir=/var/cache/httpd
--mandir=/usr/share/man
--add-module=src/modules/experimental/mod_mmap_static.c
--add-module=src/modules/standard/mod_auth_db.c
--enable-module=so
--enable-module=ssl
--enable-rule=SSL_SDBM
--disable-rule=SSL_COMPAT
--activate-module=src/modules/php4/libphp4.a
--enable-module=php4

앞에서 추가한 jsp 모듈중 자신이 추가한 모듈에 따라 아래의 둘 중 하나의 옵션만 선택해서 설정한다.

------------- resin 모듈 추가 시작 --------------
--activate-module=src/modules/caucho/mod_caucho.a
--enable-module=caucho
------------- resin 모듈 추가 끝 -------------

------------- tomcat 모듈 추가 시작 -------------
--activate-module=src/modules/jk/libjk.a
--enable-module=jk
------------- tomcat 모듈 추가 끝 -------------

--activate-module=src/modules/perl/libperl.a
--enable-module=perl
--disable-module=negotiation
--disable-module=autoindex
--disable-module=imap
--server-uid=www
--server-gid=www

-----------------  옵션 설명  -----------------------------

#--disable-module=status <-- 아파치 프로세서 상태를 보는것이 필요없다면 이 옵션을 추가해라.
#--enable-module=so   <--- 이부분은 꼭 있어야 레진과의 모듈 공유 연동이 가능하다.(공유객체)

아래의 두라인을 마치 php와 같은 양식으로 모듈을 추가함으로써
--enable-rule=SHARED_CORE --enable-module=most --enable-shared=max
요런 옵션들이 필요없는것이다. 단지 이 --enable-module=so 옵션만 있으면 된다.
정적 컴파일을 하기 때문이다.
즉 CFLAGS="-DDYNAMIC_MODULE_LIMIT=0" 이 옵션이 정적 컴파일 옵션.

#--activate-module=src/modules/caucho/mod_caucho.a <-- 레진 모듈 추가
#--enable-module=caucho <-- 레진 모듈 사용 선언

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

컴파일
make

find /* > /root/apache1

실제 아파치 설치
make install

불필요한 파일들 삭제
rm -f /home/httpd/cgi-bin/printenv
rm -f /home/httpd/cgi-bin/test-cgi
rm -rf /var/cache/httpd/
rm -rf /etc/httpd/conf/ssl.crl/
rm -rf /etc/httpd/conf/ssl.crt/
rm -rf /etc/httpd/conf/ssl.csr/
rm -rf /etc/httpd/conf/ssl.key/
rm -rf /etc/httpd/conf/ssl.prm/
rm -f /etc/httpd/conf/srm.conf
rm -f /etc/httpd/conf/srm.conf.default
rm -f /etc/httpd/conf/access.conf
rm -f /etc/httpd/conf/access.conf.default
rm -f /etc/httpd/conf/mime.types.default
rm -f /etc/httpd/conf/magic.default

각 모듈이 제대로 올라왔는지 확인
httpd -l <-- 모듈 확인 명령
  mod_auth.c
  mod_auth_db.c
  mod_so.c
  mod_ssl.c
  mod_mmap_static.c
  mod_php4.c
  mod_perl.c
위의 모듈들이 포함된 여러 모듈들이 보일것이다. 그럼 잘 컴파일된거다.
  mod_caucho.c  <-- 레진 모듈
  mod_jk.c      <-- tomcat 모듈
jsp엔진 모듈은 위의 두개중 하나만 보일것이다. 두개중 하나는 반드시 보여야
jsp를 아파치와 연동 가능하다. 둘다 안 보인다면 다시 첨부터 확인 컴파일 한다.

php 기본 설정 파일을 나중에 참조하기 위해 저장해둔다.
cd /var/tmp/php-4.2.2로 이동후
install -m644 php.ini-dist /etc/httpd/php.ini-default
php예제 설정 파일을 나중에 참조하기 위해 위처럼 복사만 해둔다.
실제 설정파일인 php.ini는 아래에서 어떤 php캐쉬를 사용할것인가에 따라
첨부파일의 php.ini-phpa나 php.ini-zend둘 중에 한 파일을 인스톨 명령으로 복사한다.

find /* > /root/apache2

첨부 파일의 아파치 설정파일을 복사한다.
cp apache-1.3/httpd.conf /etc/httpd/conf/

첨부 파일의 아파치 시작 스크립트를 복사한다.
cp -f apache-1.3/init.d/httpd /etc/rc.d/init.d/

첨부 파일의 로그 로테이트 파일을 복사한다.
cp -f apache-1.3/logrotate.d/httpd /etc/logrotate.d/httpd

vi로 /etc/logrotate.d/httpd 파일을 열어서. 수정
자신이 사용할 로그파일명으로 바꿔줘라.
가상 사이트도 여러개 있다면 그 사이트의 로그파일명으로
로테이트될 대상을 몇개 더 추가해주는것도 잊지 말기를 바란다.

시작 스크립트를 chkconfig로 자동 부팅되도록 등록
chmod 700 /etc/rc.d/init.d/httpd
chown 0.0 /etc/rc.d/init.d/httpd
chkconfig --add httpd
chkconfig --level 2345 httpd on

각 실행 파일 퍼미션 조정
chmod 511 /usr/sbin/httpd
chmod 700 /etc/httpd/conf
chmod 700 /var/log/httpd
chmod 711 /home/httpd
chmod 750 /usr/bin/dbmmanage


자신의 웹사이트에서 유저와 패스워드를 입력해야만 접근할 수 있는 디렉토리의
접근 유저와 패스워드를 생성한다.(나는 vitro 이라는 유저로 생성했다.)
주의 할것은 여기서 생성되는 유저는 시스템 유저와 상관이 없다.
그냥 아파치에서 제한할 폴더에 접근할 유저를 dbpasswd에 생성하는것이다.

echo "####  제한된 페이지 관리자 암호 설정    #####"

/usr/bin/dbmmanage /etc/httpd/dbmpasswd adduser vitro


== 주의 절대로 zendoptimizer와 PHPA 같이 사용할 수 없다. ==
zendextension 이 오직 하나여야만 한다.

echo "###################################################"
echo "#### 만약 php가속기로 ZendOptimizer를 사용할 경우 ####"
echo "###################################################"

소스 압축해제
tar xfz ZendOptimizer-1[1].3.3-Linux_glibc21-i386.tar.gz -C /var/tmp
cp -f /var/tmp/ZendOptimizer-1.3.3-Linux_glibc21-i386/data/4_2_1_comp/ZendOptimizer.so /usr/lib

첨부파일의 php.ini파일을 인스톨 명령으로 복사
install -m0644 PHP/php.ini-zend /etc/httpd/php.ini

echo "###########################################"
echo "#### 만약 php가속기로 PHPA 를 사용할 경우 ####"
echo "###########################################"

소스 압축해제
tar xzpf php_accelerator-1.3.2_php-4.2.1_linux_i686-glibc2.2.4.tgz -C /var/tmp

phpa파일을 소스에서 시스템으로 이동한뒤 링크건다(파일명이 넘 길어서 ^^)
cp -f /var/tmp/php_accelerator-1.3.2_php-4.2.1_linux_i686-glibc2.2.4/php_accelerator_1.3.2.so /usr/lib/
cd /usr/lib/
chown 0.www php_accelerator_1.3.2.so
ln -s php_accelerator_1.3.2.so php_accelerator.so

phpa관리자 유틸을 복사
cp -f /var/tmp/php_accelerator-1.3.2_php-4.2.1_linux_i686-glibc2.2.4/phpa_cache_admin /usr/sbin/
chmod 750 /usr/sbin/phpa_cache_admin
chown 0.www /usr/sbin/phpa_cache_admin

혹시나 chown 0.www <-- 요거 다알겠지만. 소유자를 0(루트로) 소유그룹을 아파치그룹(www)로 해주는것이다.
소유그룹이 아파치 그룹으로 안되어 있으면 phpa가 제대로 작동을 못한다.

phpa가 사용할 캐시 디렉토리로 /tmp/phpa로 하나 잡아주었다.
내가 첨부한 php.ini파일에 아래 디렉토리로 설정해두었다.
(설정 없으면 디폴트로 /tmp로 잡힌다.)
mkdir /tmp/phpa
chown www.www /tmp/phpa
chmod 1777 /tmp/phpa

첨부파일의 php.ini파일을 인스톨 명령으로 복사
install -m0644 PHP/php.ini-phpa /etc/httpd/php.ini

phpa가 잘 작동되는가 확인 사살.. ^^;
phpa_cache_admin -vm
잘은 모르는데.. 메모리 사용률 관련된 내용이 출력될것이다.

혹시 적용이 됐는지 웹으로 확인
<?
         var_dump($GLOBALS['_PHPA']);
?>
이 문장이 들어간 웹페이지를 작성해서 웹으로 띄워서
array(3) { ["ENABLED"]=> bool(true) ["iVERSION"]=> int(10303) ["VERSION"]=> string(5) "1.3.3"
이거 비슷한 메세지가 나오면 잘 설치가 된 것이다.
안됐다면 null 이런식으로 나올것이다.

아니면 아래와 같은 내용의 페이지를 작성해서 확인
<?
      phpinfo();
?>

This program makes use of the Zend scripting language engine:
     Zend Engine v1.2.0, Copyright (c) 1998-2002 Zend Technologies
     with the ionCube PHP Accelerator v1.3.3, Copyright (c) 2001-2002, by Nick Lindridge
맨 위에 박스 밑부분에 이런 내용이 뜬다.

아파치 설정파일에 문법에 이상이 없나 체크
httpd -t


-------------------  레진과 아파치 스타트  ------------------
어떤 레진 유저 그룹에 가서 알게된건데...
레진을 먼저 시작하고 아파치를 시작하는것이 맞는순서라고 한다.
재시작시도 마찬가지고...
나는 두개를 동시에 여러번 재시작해서 잘은 모르겠다.

echo "     ####################################"
echo "     ####    아파치와 레진 시작순서     ####"
echo "     #### 1. resin  --> resin start  ####"
echo "     #### 2. apache --> httpd start  ####"
echo "     ####################################"

레진과 아파치 리스타트
/etc/rc.d/init.d/resin restart
/etc/rc.d/init.d/httpd restart
-----------------------------------------------------------

-------------------  톰캣과 아파치 스타트  ------------------
톰캣 역시 먼저 톰캣을 먼저 시작해야 한다.
그런 다음 아파치를 시작해야 제대로 jsp 페이지가 뜬다.
이순서를 잘지키여 하며 나중에 재시작을 할때도 이순서로 하면 된다.

echo "     #####################################"
echo "     ####    아파치와 톰캣 시작순서      ####"
echo "     #### 1. tocmat --> tomcat start  ####"
echo "     #### 2. apache --> httpd start   ####"
echo "     #####################################"

톰캣과 아파치 리스타트
/etc/rc.d/init.d/tomcat restart
/etc/rc.d/init.d/httpd restart
-----------------------------------------------------------