CAFE

[Unix/Linux관련]

아파치를 inetd로 실행하기.....

작성자김철민|작성시간03.06.12|조회수128 목록 댓글 0
글쓴이: 산이
글쓴날: 2000-02-20 18:52:58

제목: [팁]아파치를 inetd로 실행하기.....(전면 수정)
============================================
전면 수정에 앞서서..

먼저
댓글을 달아주신 [김정균]님, [fith]님, 그리고 [조성옥]님께
감사의 말을 전합니다.

아파치 웹 서버를 inetd로 동작하려는 대부분의 이유가
시스템 사양이 낮거나(작은 메모리) 비교적 트래픽이
발생하지 않은 경우에 사용하는 방법입니다.

standalone 모드 보다 반응 속도가 늦는 다는 점을
감안하셔야 합니다.

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

안녕하세요?
리눅스 채널의 산이입니다.

원고를 쓰다가 일 부분을 그대로 가져왔습니다.

제가 테스트한 버전은
-알짜리눅스 6.1
-아파치 RPM 1.3.9
-아파치 소스 1.3.11

전에 1.19일 [조성욱]님께서 질문하셨는데
제가 안된다는 식으로 답변을 했습니다.
정정합니다.

설정파일에는 유닉스 플랫폼에서만 가능하다고 그랬는데.
리눅스는 유닉스가 아닌 유닉스 호환이기때문에
가능한것 같습니다.

실제로 접속해 본결과 별반 차이를 모르겠네요...
대기했다가(standalone) 실행한것하고 요청이 있을(inetd)시 실행한것외에
별반 차이가......

===============================================
[RedHat 6.1에서 아파치를 Inetd 모드로 실행하기]
===============================================

아파치 데몬을 중지한다.(시스템 부팅시 자동 실행하는 옵션도 없애준다.
ntsysv)

# /etc/rc.d/init.d/httpd stop
또는
# /usr/loacl/apache/bin/apachectl stop

아파치 설정 파일(httpd.conf)에서, ServerType을 inetd로 설정한다.

ServerType inetd

또한
standalone 모드에서 사용 가능한 지시자와 내용에
모두 주석을 처리해 놓습니다.

PidFile, ScoreBoardFile, KeepAlive, MaxKeepAliveRequests, KeepAliveTimeout,

MinSpareServers, MaxSpareServers, StartServers, MaxClients,
MaxRequestsPerChild, Port, User Group

/etc/services 파일에서 다음과 같이 수정합니다.

수정 전 :
www 80/tcp http # WorldWideWeb HTTP
수정 후 :
www 80/tcp http httpd # WorldWideWeb HTTP

참고 1.
오른쪽에 나오는 "http", "httpd"는 "www"라는 서비스 이름에 대한
별칭입니다. 실행 파일의 경로가 아님을 정정합니다.

때문에 굳지 httpd를 추가하지 않아도 가능합니다.
수정하지 않을 계획이라면 80/tcp에 해당하는 라인에서 최소한 서비스 이름을
다음에 나오는 inetd.conf 파일에 서비스 이름으로 설정해야 합니다.
저 같은 경우는 httpd를 추가했고 inetd.conf 파일에 httpd로서비스 이름을
설정했습니다.

참고 2.
man 페이지에 의하면,
포트 번호가 1024보다 작은 포트 번호는 오직 루트 레벨에서만 접근할 수 있다고

합니다. 이 포트를 'low numbered'로 부르더군요

/etc/inetd.conf 파일에서 다음을 추가한다.
이 파일에서 중요한 점은 각각의 아파치 웹 서버를 어떤 유저로 실행할
것인가입니다.
보안상 등의 유로 root로 실행하는 방법은 별로 좋지 않다고 [fith]님이 지적해
주셨습니
다.
따라서 root가 아닌 nobody나 다른 유저(비교적 권한이 낮은 /etc/passwd 파일의

저)로 변경해야 합니다. (user[.group] 형식임)

저 같은 경우에는 nobody로 설정했습니다.
nobody로 설정했기 때문에 아파치 웹 서버의 로그 파일을 nobody가 쓸 수 있는
퍼미션으로 조정해야 합니다.
대부분 저에게 질문하신 분들이 실패한 이유가 여기에 있습니다.

RPM으로 설치했을 경우에는
# chown -R nobody /var/log/httpd
# chmod 755 /var/log/httpd
# chmod 644 /var/log/httpd/*
로 조정하고 소스로 직접 컴파일하여 설치했을 경우에는
같은 방법으로 로그 디렉토리와 각각의 로그 파일의 퍼미션을 조정하기
바랍니다.

/etc/inetd.conf 파일의 수정내용

RPM 패키지로 설치했을 경우 :

방법 1. TCP Wrapper를 사용하지 않을 경우
httpd stream tcp nowait nobody /usr/sbin/httpd -f
/etc/httpd/conf/httpd.conf
방법 2. TCP Wrapper를 사용할 경우
httpd stream tcp nowait nobody /usr/sbin/tcpd /usr/sbin/httpd -f \
/etc/httpd/conf/httpd.conf

참고로 맨 왼쪽의 "httpd"는 /etc/services 파일에 설정한 서비스 이름입니다.
또한 "\"은 한줄에 계속 이어서 쓸 수 없을 경우에 사용합니다.
"-f"는 아파치 설정 파일을 지정하는 옵션입니다.

소스로 /usr/local/apache에 설치했을 경우 :

방법 1. TCP Wrapper를 사용하지 않을 경우
httpd stream tcp nowait nobody /usr/local/apache/bin/httpd -f \
/usr/local/apache/conf/httpd.conf

방법 2. TCP Wrapper를 사용할 경우
httpd stream tcp nowait nobody /usr/sbin/tcpd /usr/local/apache/bin/httpd
-f \
/usr/local/apache/conf/httpd.conf

Inetd를 재가동한다.

# /etc/rc.d/init.d/inet restart
Stopping INET services: [ OK ]
Starting INET services: [ OK ]
#

또는
# killall -HUP inetd

마지막으로 웹 브라우저로 접속 테스트해 봅니다.

------

이상입니다.................


다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼