로그인
Sign in
1. httpd 란?

시스템이 웹 서비스를 할 수 있도록 해주는 데몬입니다. 이러한 데몬에는 apache, NCSA, netscape 등등이 있습니다. 여기서는 가장 널리 쓰이고 있는 apache web daemon의 설치와 설정에 대해서 알아봅니다.

2. apache source 구하기

Apache web daemon의 소스는 www.apache.org에 가면 최신 버젼을 다운 받을 수 있습니다.

3. 컴파일과 설치하기

1.3.x 버젼에 오면서 컴파일과 설치가 쉬워졌습니다. configure를 실행한 후 make를 하여 컴파일 합니다.

# ./configure
# make
          
컴파일이 무사히 끝났다면 루트 권한으로 make install 해서 설치합니다.

# make install
          
configure에서 명시적으로 설치될 경로를 설정하지 않았다면 /usr/local/apache에 apache가 설치되게 됩니다.

4. httpd 설정하기

이제 apache httpd의 설정에 들어갑니다. 설정 파일은 /usr/local/apache/etc 에 있습니다.(/usr/local/apache에 apache가 설치되었다고 가정.) 설정 파일은 세개로 나뉘어 있는데 다음과 같습니다.
    
httpd.conf - httpd의 시스템 관련 부분 설정
access.conf - httpd를 통해 액세스 할 수 있는 경로와 수위 설정
srm.conf - httpd 환경 설정

각 설정 파일에서 중요한 설정 부분을 알아 봅니다.

httpd.conf

ServerType

standalone/inet
standalone으로 설정하면 데몬이 독립적으로 돌아가며, inet으로 설정하면 inetd에 의해 호출되어 돌아가게 됩니다.
(/etc/inetd.conf에 설정 필요.) 일반적으로 standalone으로 하는 것이 무난하며, inet으로 설정할 경우 apache의 기능 일부를 사용할 수 없습니다.

Port
Port는 외부에서 서비스 신청이 들어올 때 신청을 받는 곳입니다. 1024보다 작은 포트를 사용하기 위해서는 httpd를 처음에 루트 권한으로 실행합니다.일반적으로 80 또는 8080 포트를 사용합니다.

HostnameLookups
on/off
이 기능은 IP를 hostname으로 바꿀 지를 결정합니다. off일 경우 request를 했던 시스템의 IP가 log에 기록되지만, on으로 설정을 변경하면 시스템의 hostname이 기록되게 됩니다. 이 기능은 또한 httpd가 cgi등에 넘겨주는 환경변수에도 영향을 줍니다. on일 경우 REMOTE_HOST변수가 유효하지만 off일 경우 REMOTE_ADDR변수만 유효합니다.

User
nobody
외부의 request에 대해 실행되는 httpd의 child process의 소유자를 뜻합니다. 보안상 아무런 권한이 없는 nobody 또는 그에 상응하는 ID를 줍니다.

Group
nobody
User와 마찬가지로 아무런 권한이 없는 group ID를 부여합니다.

ServerAdmin
webadmin@yourhost.domain.com
웹 서버 관리자의 e-mail 주소를 적습니다.

ServerRoot
/usr/local/apache
apache 웹 서버가 설치된 경로를 뜻합니다.

ErrorLog
/usr/local/apache/var/log/error_log
웹 서비스 중 발생하는 에러를 로그로 남길 경로를 설정합니다.

LogLevel
warn
로그로 남길 에러의 수준을 결정합니다. 수준은 syslog 에서 쓰이는 모든 경우가 가능합니다.(debug, info, notice, warn, error, crit, alert, emerg)


access.conf

access.conf의 형식은 다음과 같습니다.

< Directory {path}>
Options {options}
[AllowOverride {options}]
[order allow,deny]
[allow from {hostname or IP address}]
[deny from {hostname or IP address}]

                      

정의 적용 범위는 path에 적어준 경로의 하위 모든 디렉토리에 해당합니다. 그러므로 가장 상위 디렉토리에 대한 설정을 먼저 해 준 후, 차례로 하위 디렉토리들에 대한 설정을 해 줍니다. Options는 option들을 설정해 주는 부분이며 AllowOverride는 path에 지정된 디렉토리 내에 .htaccess와 같은 파일에 의해 access 설정이 override될 수 있는지를 결정합니다.

path
access관련 설정을 할 경로를 적습니다.

options
옵션에는 다음과 같은 것들이 있습니다.
All
  None, MultiViews를 제외한 모든 옵션
Indexes
  URL을 디렉토리까지만 주었을 경우, 웹 서버는 기본적으로
  설정된 파일(e.g. index.html)을 찾습니다. 만약 이 파일이 존재하
  지 않을 경우 Indexes설정이 되어 있으면 디렉토리의 내용을 형식을
  갖춘 모양으로 출력해 줍니다.
Includes
  server side include 기능을 사용할 수 있도록 설정  
FollowSymLinks
  심볼릭 링크를 따라가도록 설정
ExecCGI
  cgi를 실행할 수 있도록 설정
MultiViews
  브라우저에서 보내오는 환경 변수들(e.g. Content-type, Content-language,    Content-encoding...)에 따라 서버가 보내는 내용을 달리 할 수 있도록 합
  니다.
SymLinksIfOwnerMatch
  심볼릭 링크 파일의 소유자와 심볼릭 링크가 가리키는 파일의 소유자가
  같을 경우에만 링크를 따라가도록 합니다.
None
  어떠한 기능도 허용하지 않도록 설정
order
  allow를 먼저 체크할 지 deny를 먼저 체크할 지 결정합니다.
allow
  접근을 허용할 host의 hostname 또는 IP address를 적습니다.
  여러 host를 지정할 경우 host 수 만큼 allow from {hostname}의
  형식으로 적어 줍니다.
deny
  접근을 거부할 host의 hostname 또는 IP address를 적습니다.

예)
  
  Options FollowSymLinks
  AllowOverride None
  

  
  Options FollowSymLinks Includes Indexes
  AllowOverride None
  order allow,deny
  allow from all
  deny from ugly.kids.com
  

  
  Options ExecCGI
  AllowOverride None
  order allow,deny
  allow from all
  deny from hackers.club.com
  

  
  Options All
  AllowOverride None
  order deny,allow
  deny from all
  allow from pretty.girl.net
  
                      
주) access.conf의 끝부분에는 다음과 같은 설정이 있습니다.

  #
  #deny from all
  #ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
  #
                      
이것은 apache 1.1이전 버젼에 있던, phf cgi 프로그램의 버그를 이용한 해킹 시도 체크하기 위해 설정해 놓은 부분입니다. 주석표시를 제거해 주면 외부에서 phf로 시작되는 cgi 프로그램을 request할 경우 apache daemon이 access를 거부하고 http://phf.apache.org/phf_abuse_log.cgi를 호출하도록 합니다. 여기서 Location은 DocumentRoot에 대한 상대적 경로를 지정할 때 쓰이는 태그입니다.

srm.conf

DocumentRoot
  /usr/local/apache/share/htdocs
  hostname만 적었을 때 호출되는 페이지의 경로를 뜻합니다. 즉,
  http://vishnu.snu.ac.kr 이라고 주소를 적었을 때 나타나게 될
  페이지의 경로입니다.

UserDir
  public_html
  일반 사용자가 자신의 홈페이지를 만들고자 할 때 홈페이지를
  뜻하는 디렉토리의 이름을 적습니다. 일반적으로 public_html이
  많이 쓰입니다.

DirectoryIndex
  index.html
  명시적으로 html파일의 이름을 주지 않고 디렉토리 이름만 주었을
  경우 디렉토리 내에게 기본적으로 찾는 파일의 이름을 적습니다.
  일반적으로 index.html이 많이 쓰입니다.

AccessFileName
  .htaccess
  access.conf에서 설정한 options을 override할 때 쓰이는
  파일명을 적습니다. (access.conf에서 AllowOverride에서
  override할 수 있도록 설정된 option에 대해서만 override가
  가능합니다.)

DefaultType
  text/plain
  httpd는 기본적으로 파일의 확장자와 파일 내부에 있는
  ContentType 태그를 통해 파일의 종류를 파악합니다. 만약
  특별히 이런 내용이 주어져 있지 않다면 DefaultType으로 그
  파일을 읽어들입니다. default로 설정되어 있는 text/plain은
  일반적인 ascii파일처럼 읽어들인다는 뜻입니다.

srm.conf에서는 cgi, ssi를 사용하기 위해 설정해 주어야 하는 부분도 포함하고 있습니다.

# To use CGI scripts:
# AddHandler cgi-script .cgi
  
cgi를 사용하기 위해서는 AddHandler앞의 주석표시를 없앱니다. 참고로 cgi-script .cgi는 확장자가 cgi인 파일을 cgi스크립트로 인식하겠다는 뜻입니다.

# To use server-parsed HTML files
# AddType text/html .shtml
# AddHandler server-parsed .shtml
                      
ssi기능을 사용하기 위해서는 AddType, AddHandler앞의 주석표시를 제거해
줍니다. 위 두 라인이 가지는 의미는 다음과 같습니다. 확장자가 shtml인 파일을 html 문서 파일로 인식하고, 확장자가 shtml인 파일에 대해서는 ssi 기능이
사용되었는지 파싱하여 처리하라는 뜻입니다. 만일 일반적인 html문서(확장자가 html인 문서)에 대해서도 웹 서버가 파싱처리를 하기를 원한다면 다음 줄을
추가해 줍니다.

AddHandler server-parsed .html
                      
5. httpd 띄우기

이제 모든 설정이 끝났으면 apache daemon을 띄우는 일만 남았습니다. 1.3.x버젼에 오면서 daemon을 시작하고 멈추고, 또 재시작하는 일이 매우 쉬워졌습니다. daemon을 시작하고자 하면 다음과 같이 합니다.

# /usr/local/apache/sbin/apachectl start
          
비슷한 방법으로 daemon을 재시작하고 멈출 수 있습니다. 여기서 재시작의 의미는 daemon에 HangUp(HUP) signal을 주는 것을 뜻합니다.

# /usr/local/apache/sbin/apachectl restart          (재시작)
# /usr/local/apache/sbin/apachectl stop             (정지)
            
6. debug

대부분 설정에 문제가 있어서 daemon이 제대로 실행되지 않으므로,  error_log를 잘보고 적절히 설정 파일을 수정해주면 문제를 해결할 수 있습니다.

조회 수 :
553
추천 수 :
26 / 0
등록일 :
2003.12.13
16:33:21 (*.193.52.140)
엮인글 :
http://bestceok.com/xe/index.php?mid=sun_faq&document_srl=2897&act=trackback&key=27d
게시글 주소 :
http://bestceok.com/xe/index.php?mid=sun_faq&document_srl=2897
List of Articles
번호 제목 글쓴이 날짜 조회 수
31 JetAdmin for Unix 설치과정과 Auto 모드로 한글 출력방법 하록 2003-12-13 908
30 Removing SUN Workshop 하록 2003-12-13 508
29 Hostname 변경후 컴파일시 Error 발생 하록 2003-12-13 496
28 Demo license 신청및 설치 하록 2003-12-13 525
27 컴파일러 설치후 환경 셋팅 하록 2003-12-13 466
26 T3 console cable 구성도 하록 2003-12-13 505
25 OpenBoot 3.x 명령어 요약 하록 2003-12-13 481
24 E3500에 4000Mhz/8M Cache CPU 장착시 참고사항 하록 2003-12-13 519
23 ntp client setup 하록 2003-12-13 824
22 rcp 명령어 사용법 [7] 하록 2003-12-13 2602
21 기가비트 이더넷 모드를 강제로 설정하는 방법 하록 2003-12-13 493
20 Apache와 PHP 연동 하록 2003-12-13 524
» Apache install & configuration 하록 2003-12-13 553
18 이더넷 카드 추가하기 하록 2003-12-13 454
17 hme interface speed 설정 하록 2003-12-13 492
16 하나의 네트웍 인터페이스에 여러개의 IP Address 부여 [4] 하록 2003-12-13 1046
15 E3500에서 Backup한 HDD로 부팅이 안될 때.. 하록 2003-12-13 493
14 Ultra5/10에 추가한 PGX 그래픽카드를 Default로 사용하려면 하록 2003-12-13 541
13 Clock TOD does not match TOD on any io board 하록 2003-12-13 546
12 INIT: Command is spawning too rapidly 하록 2003-12-13 436