웹마스터 팁

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

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

아파치는 설치 순서가 아주 중요하다.
왜냐면 아파치는 모듈화 되어있기때문이다.
그리고 센드메일을 설치하는냐 큐메일을 설치하는냐에 따라 달라지고
jsp를 연동할시 tomcat엔진으로 사용하느냐 resin으로 사용하느냐에
설치법이 약간 달라지나 기본적인 설치 순서는 같다.
먼저 여기서 아파치 설치 순서를 짚고 넘어가려한다.

***************** 아파치 설치 순서 ***************************
        1. 선행 패키지들 설치
        2. 아파치 미리 한번 컴피그
        3. 아파치 인증서 생성
        4. mm 설치
        5. mod_ssl 설치(mm이 사전에 설치되어 있어야 한다고 한다.)
        6. mod_perl 설치
        7. resin이나 tomcat설치 및 아파치 컨넥터 설치(jdk + jdbc설치포함)
        8. php4 설치(메일과 디비 연동)
        9. 아파치 실 설치
        10. zend나 php엑셀레이터 설치
*************************************************************


**********************  아파치 연동 리스트  ****************************

  그리고 아래는 이제부터 아파치와 관련된 데몬들 필자가 연동할 리스트들이다.

  데이터베이스 서버   -  mysql, oracle, postgresql
  메일 서버          -  qmail, sendmail
  imap 서버         -  uw-imap2002, courier-imap(uw-imap2002 라이브러리도 설치)
  스크립트 언어      -  php4, tomcat, resin, mod_perl

  mm + mod_ssl + apache + 데이터베이스 서버 + 스크립트 언어 + zend + 메일 서버 + imap 서버

***********************************************************************


여기서 사용한 소스 버전은 작업할 당시 버전이다. 지금은 조금 업데이트
되었을것이나 크게 달라질건 없는것들이다. 상위 버전을 사용하고 픈
사용자는 상위버전을 받아서 사용해도 된다.
그러나 mod_ssl을 사용하는 경우는 아파치 버전과 mod_ssl버전을
맞게 써야하므로 주의하라. 자세한 버전 설명은 mod_ssl을 설치하는법에 서술했다.

아파치 설치를 위한 선행 조건
(Securing and Optimizing Linux v2.0참조)

1. SSL 암호화를 위해 openssl이 미리 깔려 있어야한다.
(mod_ssl을 이용하여 ssl 지원)

2. PHP4와 SQL데이터 베이스 연동을 위해 my-sql이 미리 깔려있어야 한다.

3. 아파치에서 RAM기반의 고성능의 세션캐시를 이용하고 싶다면 MM이 미리 설치되어야 한다.
(요놈을 깔면 아파치의 메모리 사용하는 면에서 속도가 더 향상된다고 합니다.)
저도 자세한건 모르겠네요.

4. 아파치에서 메일 기능을 사용하려면 센드메일이나 큐메일이 설치되어있어야 한다.
5. 아파치에서 php4의 imap과 pop기능을 이용하려면 imap과 pop이 설치되어있어야한다.
( 센드메일 -> imap2002, 큐메일 -> courier-imap, imap2002[라이브러리이용] )

6. png이미지 형식을 지원하려면 libpng 패키지가 설치되어있어야한다.
7. 폰트 파일을 열거나 관리할 수 있는 freetype패키지가 설치되어 있어야 한다.
8. gif 파일을 그리는 그래픽 라이브러리인 gd가 설치되어있어야한다.
9. 아파치가 펄 프로그래밍 언어를 mod_perl 패키지가 설치되어있어야 한다.

====  rpm으로 설치할 것들  ====

libjpeg
libpng
freetype
gd
aspell
pspell
libtool-libs

==============================

rpm -qa | grep 패키지명 으로 확인해서
위 목록 중 자신의 시스템에 안 깔린것이 있다면 아파치 설치전
레드햇 시디에 있는 rpm으로 설치해줘라. (rpm -Uvh 패키지명)

이제 아파치를 설치하기 전에 먼저 프리 컨피그 작업을 한다.
왜 하느냐? 아직 다른 의존성 있는 패키지도 안 깔았는데...
그렇게 생각하는 사람이 있다.
아파치를 php와 연동하기 위해 php가 먼저 설치되어 있어야한다.
그러나 php설치시 아파치 소스 경로를 요구한다. 물론 tomcat과
resin등도 대부분의 아파치 모듈이 아파치 소스 경로를 요구하기
때문에 일단 소스를 풀고 먼저 기본 프리픽스만 주고 한번 컨피그해주는것이다.

apache-1.3.26 소스 다운
http://www.apache.kr.net/에서 유닉스 버전이라는 소스를 다운 받는다.

cd /var/tmp/ <-- 소스를 이곳으로 옮긴다.

압축해제
tar xfz apache-1.3.26.tar.gz -C /var/tmp
소스 디렉토리로 이동
cd /var/tmp/apache-1.3.26

다음 처럼 최고클라이언트(MaxClients) 접속수를 수정해준다.
큰 사이트의 경우 접속이 많을테니...
소스 디렉토리 아래의 src/include/httpd.h 파일을 수정
#define HARD_SERVER_LIMIT 256 이라는 부분을
#define HARD_SERVER_LIMIT 1024 으로 수정

아파치 프리 컨피그 컴파일 최적화 옵션및 프리픽스 정의

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

------------ 정적 모듈 사용(jsp 엔진 사용시 참조) ----------------------------
여기서 중요한 옵션은 CFLAGS="-DDYNAMIC_MODULE_LIMIT=0" 부분인데.
이것은 아파치를 컴파일할때 동적인 모듈을 0으로 한다. 즉 정적 모듈만을
사용하도록 한다는것이다. 이것은 아파치 실행속도를 높인다.
톰캣을 사용시 동적 모듈을 사용해야하는데라는 걱정은 마라.
나중에 아파치를 설치하면서 톰캣이나 레진같은 모듈은 컴파일시
정적 모듈로 포함되도록 추가시켜서 사용할거니까 정적 모듈로 사용하는
옵션을 사용해도 걱정할 필요없다.

참조 :  리눅서들 가운데 jsp연동에 어려움을 마니 느끼는거 같다.
        당연한것이 java를 잘 모르니까 일어나는 일같다.
        필자도 이부분 때문에 3달 넘게 새로깔고 삽질하면서 죽을뻔했다.
--------------------------------------------------------------------------

아파치 데몬 유저 추가 (www로 사용)
useradd -c "Apache Server" -u 80 -s /bin/false -r -d /home/httpd www

나는 ssl을 지원하는 것까지 하고 싶다.
만약 ssl을 지원하기 싫다면 그냥 설치를 똑같이 하고
나중에 ssl을 지원하는 아파치 설정에서 주석만 처리하고 써면 될것이다.
먼저 인증서를 만들어야한다. mod_ssl설치시 인증서 위치를
요구하기때문이다.

echo "#### www over ssl ####"

인증서 생성을 위한 랜덤 파일 생성
cd /usr/share/ssl
cp /var/log/boot.log /usr/share/ssl/random1
cp /var/log/cron /usr/share/ssl/random2
cp /var/log/dmesg /usr/share/ssl/random3
cp /var/log/messages /usr/share/ssl/random4
cp /var/log/secure /usr/share/ssl/random5

서버키를 랜덤파일들을 이용하여 암호화 하여 생성
openssl genrsa -rand random1:random2:random3:random4:random5 -out www.key 1024

인증 요구서를 생성.
openssl req -new -key www.key -out www.csr
나의 서버키를 가지고 인증요구서를 만든다.
이것을 ca서버(자신의 셀프ca서버)로 복사한다.
한대로 ca서버와 아파치를 구성할경우는
그냥 복사할 필요없다.

/usr/share/ssl/misc/sign www.csr
이렇게 셀프 ca가 인증하려하면 셀프 ca의 패스워드를 묻는다.
처음에 openssl설치시 사용한 셀프 ca의 패스워드를 넣어준다.
이로서 인증요청서를 이용하여 아파치의 인증서를 생성했다.
이제 인증 요청서는 필요없으니 삭제한다. 그리고 랜덤 파일도 삭제.

mv www.key private/
mv www.crt certs/
chmod 400 private/www.key
chmod 400 certs/www.crt
chown www.www private/www.key
chown www.www certs/www.crt
rm -f www.csr
rm -f random1 random2 random3 random4 random5