RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'apache 1.3'에 해당되는 글 1

출처 : 대전국제IT교육센터 정성재 강사

 

1. 아파치란?
인터넷상에서 우리는 보통 www이라고 치면서 접속한다. www이라고 치면서 들어갈 때 우리는 특별한
프로토콜을 이용하게 되는데 그 프로토콜이 HTTP이다. 이 HTTP프로토콜을 리눅스(유닉스)에서는 보
통 httpd라는 데몬으로 서비스하며, 보통 우리는 Webserver라고 부른다. 이러한 Webserver중에서 가
장 대표적인 것이 Apache이다.


2. apache 설치
(1) 기존의 아파치 버전을 확인한다.
    rpm -qi apache
(2) 최신버전의 아파치파일을 다운받는다.
   apache_1.3.26.tar.gz을 다운받아 /usr/local/src에 위치시킨다.
(3) 압축을 푼다.
   tar zxvf apache_1.3.26.tar.gz
(4)기존의 인스톨된 apache제거하기
   1) 아파치 데몬을 정지시킴 : /etc/rc.d/init.d/httpd stop
   2) 인스톨된 아파치를 찾는다. : rpm -qi apache
   3) 찾아진 아파치를 모두 제거한다.
     예) rpm -e apache --nodeps
     (참고) 기존의 아파치를 rpm -e 명령으로 제거해도 리눅스배포판에 따라 몇몇의 디렉토리나
           파일이 제거 안 될 수도 있다. 이 경우에는 일일히 수동으로 제거해준다. 물론 제거하지
           않아도 시스템의 공간을 조금 차지하고 있을뿐 큰 지장은 없다.
(5) 설치한다. (여기서는 그냥 아파치만 설치하는 것으로 한다.)
   1) cd apache_1.3.26
   2) ./configure --prefix=/usr/local/apache
   3) make
   4) make install
   (참고) ./configure에 관련된 옵션을 확인하려면 ./configure --help명령을 내리면 된다.
(6) 아파치의 디렉토리구조
   1) 개요: 아파치를 설치하게 되면 /usr/local/apache디렉토리 아래에 bin, cgi-bin, conf,
           htdocs, libexec, logs, icons, include, proxy, man 디렉토리로 구성되며, conf디렉토리
           에 아파치 웹서버의 주 설정파일인 httpd.conf파일이 들어있다.
   2) 디렉토리설명
     ㄱ. /bin : apache사용시에 필요한 유틸리티들이 위치하는 디렉토리
     ㄴ. /cgi-bin : cgi 스크립트가 들어있는 디렉토리
     ㄷ. /conf : apache의 여러가지 환경 설정파일이 들어있는 디렉토리(httpd.conf)
     ㄹ. /icons : apache에서 사용되는 아이콘들이 들어있는 디렉토리
     ㅁ. /logs: apache서버 운영시 발생하는 여러 log들이 위치하는 디렉토리
     ㅂ. /htdocs : 웹문서들이 위치하는 기본 디렉토리이다.
     ㅅ. /include: 헤더파일들이 위치하는 디렉토리이다.
     ㅇ. /man : man 페이지에 추가할 수 있도록 만들어 놓은 파일관련 디렉토리이다.

(참고) apache관련 항목 man 명령의 메뉴얼로 등록하기
1. 설명
  /usr/local/apache/man 디렉토리에 보면 man용 메뉴얼파일이 있다. 추가로 설치한 응용프로그램들
의 메뉴얼페이지가 위치하는 /usr/local/man디렉토리에 등록하면 man 명령으로 메뉴얼페이지를 확인
할 수 있다.
2. 방법
  cp /usr/local/apache/man/man1/* /usr/local/man/man1
  cp /usr/local/apache/man/man8/* /usr/local/man/man8

3. apache의 환경설정
(1)apache의 환경설정파일
   예전의 apache서버에서는 환경 설정파일이 3가지로 나뉘어 있었다. 각각 웹서버 프로세스에 관련
  된 내용을 다루고 있는 ServerConfig파일(보통 httpd.conf)와 서버에 제공하고자 하는 자원들에
  관련된 ResourceConfig파일(보통 srm.conf), 서버에 접근을 제한하고자 하는 항목들을 가지고 있는
  AccessConfig파일(보통 access.conf)이었다. 그러나, 현재의 apache서버에서는 ServerConfig파일인
  httpd.conf파일에 모든 기능을 내포하고 있다.

(2) httpd.conf : apache에 관한 전반적인 환경설정을 하는 파일로서 '#'으로 시작되는 라인은 주석
                (comment)처리되어 실제 설정과는 관계없는 line이 된다.
   1) 구성
    ㄱ. Global Environment: 아파치를 전반적으로 제어하는 부분(전체환경설정)
    ㄴ. Main Server Configuration: 가상호스트에서 처리되는 않는 요청을 모두 처리해주는 주서버
                                  또는 기본 서버의 작동을 제어하는 부분(메인서버 환경설정)
    ㄷ. Virtual Host: 다른 IP와 호스트 이름을 처리하는 가상호스트 설정부분
   2)주요설정 : httpd.conf파일은 세가지 섹션 설정으로 구성되어 있다.
    ### Section 1: Global Environment
     -ServerType standalone : 서버 타입을 어떤 방식으로 운영할 것인지 설정하는 부분이다. 두가
                             지 방법을 선택할 수 있다. 슈퍼데몬인 inetd에 의하여 작동되냐 아니
                             면 단독(standalone)이냐로 설정하는데 linux는 응답속도가 빠른 stan
                             dalone 으로 동작한다. 기본값이다.
     -ServerRoot "/usr/local/apache": 웹서버가 설치되는 디렉토리를 나타낸다. 이 곳에 환경설정
                                     파일, log파일, 에러파일, 실행바이너리 등이 위치한다.
     -PidFile /usr/local/apache/logs/httpd.pid : 서버가 시작할 때 자신의 프로세스 ID를 기록할
                                                파일을 나타낸다.
     -ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard 
       : Internal server process정보를 기록할 때 사용한다. 모든 아키텍쳐에서 요구되는 것은 아
        니며, 필요한 경우 아파치 실행 프로세스의 값이 겹치지 않도록 해주면 된다.
     -Timeout 300 : 받기/보내기 타임 아웃 시간을 설정한다.
     -KeepAlive On : 지속적인 접속을 허가할 것인지 말 것인지를 설정하는 부분이다. 즉, 하나의
                    프로세스가 실행됐을 때 처음부터 끝까지 이 프로세스를 요청한 사용자에게 작
                    업을 할 수 있도록 하는 기능이다. 이것을 사용하는 이유는 성능저하 때문인데,
                    예를 들면 자식프로세서가 한 가지 일만 처리하고 죽는 것이 아니라 다음의 일
                    도 처리함으로써 성능 향상을 꾀한다. 활성값은 Off이다.
     -MaxKeepAliveRequests 100 : KeepAlive가 설정되어 있을 때, 지속적인 접속 기간 동안 처리할
                                수 있는 요청 갯수를 설정하는 부분이다. 클라이언트의 요청을 몇
                                번이나 처리하고 다시 처음 상태로 돌아가는지를 설정한다. 최대
                                요청갯수 0을 넣으면 무한대이다. 높은 성능을 내기 위해서는 높은
                                값을 써 넣는다.
     -KeepAliveTimeout 15 : keepAlive가 설정된 상태에서 클라이언트의 요청이 타임 아웃되는 시간
                           을 나타내며 초단위이다.
     -MinSpareServers 5
      MaxSpareServers 10
       : 클라이언트에서 요청이 있을 경우 아파치 웹서버는 현재 부하에 맞게 자동으로 대응한다.
        따라서, 이 값들을 처리할 수 있는 프로세스를 충분히 여유있게 유지할 수 있는 값이다. 아
        파치 서버는 주기적으로 몇 개의 서버가 요청 대기 상태인지를 점검한다. MinSpareServers
        보다 적으면 여유 서버 프로세스를 생성하며, MaxSpareServers보다 많다면 불필요한 프로세
        스를 제거한다.
     -StartServers 5 : 처음 서버를 시작할 때 시작하는 프로세스 수치이다.
     -MaxClients 150 : 웹서버에 접속할 수 있는 최대 클라이언트의 수치를 결정한다. 즉, 동시접
                      속자의 수를 제한하는 값이다. 주의점은 운영체제상에서 만들어 낼 수 있는
                      프로세스 개수가 150개인데 그 이상의 수치를 이곳에 적는다면 서버에 과부
                      하가 걸릴 수도 있으니 주의해야 하며, 서버상에서의 최대 프로세스의 개수
                      를 서버 성능에 맞게 조절해야 한다. 최신 버전인 경우에는 1024가 기본값
                      이다.
     -MaxRequestsPerChild 0 : 자식 프로세스가 죽기전에 처리할 수 있는 요청 개수이다. 한 프로세
                             스가 너무 오랫동안 사용되면 메모리, 자원 낭비가 될 수 있으므로
                             자식 프로세스는 자동으로 죽는다.


    ### Section 2: 'Main' server configuration
     -Port 80 : standalone서버 방식에서 기본으로 사용하는 포트를 나타낸다. 포트번호가 1023보다
               낮을 경우에는 httpd데몬을 루트권한으로 실행해야 한다.
     -User nobody
      Group nobody
       : nobody라는 사용자와 그룹을 가진 사용자들의 요청에 의해 웹서버가 실행되게 된다. httpd
        가 다른 사용자 또는 그룹 권한으로 실행하게 하려면 우선은 httpd가 root사용자 권한으로
        실행되고 나서 설정한 다음에 사용자권한으로 전환한다.
     -ServerAdmin
root@posein.com : 서버에 문제가 발생했을 경우 보낼 관리자의 이메일주소를 적
                                   는다.
     -ServerName posein.com : 서버의 도메인이름을 적는다. 만약 도메인이 없을 경우에는 IP를 적
                             는다. 실제 이름이 아닌 가상의 이름도 가능하다.
     -DocumentRoot "/usr/local/apache/htdocs": URL상의 서버 root문서가 위치하는 디렉토리를 적
                                              는다.

     - <Directory /usr/local/apache/htdocs>
           Options Indexes FollowSymLinks
           AllowOverride None
           Order allow,deny
           Allow from all
       </Directory>
        => 특정 디렉토리를 제어할 때 사용하는 지시자를 <Directory /> ... </Directory>의 형태로
          작성하며, 각각의 디렉토리에 관한 권한등의 여러 설정등을 한다.
          * Options
            NONE : 어떤 옵션도 이용할 수 없으므로 모든 접근을 거부
            ALL : MultiViews 옵션을 제외한 모든 옵션을 부여
            Indexes : URL에 지정된 디렉토리에(index.html 같은) 지정된 파일이 없을 경우 디렉토
                     리의 파일목록을 보여주는 옵션
            Includes : 서버측의 추가적인 정보를 제공(SSI:Server Side Includes)
            FollowSymLinks : 디렉토리의 심볼릭 링크 사용 가능
            ExecCGI : CGI 스크립트를 실행할 수 있도록 함
            IncludesNOEXEC : SSI는 허용하지만 #exec 명령과 CGI 스크립트 #include 불허
            MultiViews : All 옵션이 설정되었을 때만 지정된 목록의 multiviews를 허용하는 것으로
                        유사한 파일이름을 찾아주는 기능을 실행한다. 예를 들면 index라고만 입력하
                        더라도 index.*를 찾아서 보여준다.
          * AllowOverride: 사용자 인증에 관련된 지시자로 클라이언트가 웹서버의 특정 디렉토리에
                          접근할 때 해당 디렉토리에 있는 유저 인증 파일인 .htaccess 파일을
                          읽게 되는데, 여기를 None으로 설정하면 아파치 서버는 이 파일을 무시
                          하게 된다.
           None : AllowOverride를 사용하지않는다. 즉 유저 인증파일을 사용하지 않는다.
           All : httpd.conf파일의 AccessFileName 지시자로 설정한 파일을 사용하며 또한 지시자를
                사용할 수 있다.
           AuthConfig : AccessFileName 지시자에 명시한 파일에 대해서 사용자 인증 지시자 사용을
                       허락한다. AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName,
                       AuthType, AuthUserFile, require등을 사용할 수 있다.
           FileInfo : AccessFileName 지시자로 설정한 파일에 대해서 문서 유형을 제어하는 지시자
                     사용을 허락한다. AddEncoding, AddLanguage, AddType, DefaultType, ErrorDo
                     cument, LanguagePriority등을 사용할 수 있다.
           Indexes : AccessFileName 지시자로 설정한 파일에 대해서 디렉토리 Indexing을 제어하는
                    지시자 사용을 허락한다. AddDescription, AddIcon, AddIconByEncoding, AddIco
                    nByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgno
                    re, IndexOptions, ReadmeName등을 사용할 수 있다.
           Limit : AccessFileName 지시자로 설정한 파일에 대해서 호스트 접근을 제어하는 지시자
                  사용을 허락한다. Allow, Deny, order 등을 사용할 수 있다.
           Options : AccessFileName 지시자에 명시한 파일에 대해서 Options 그리고 XBiHack 등과
                    같은 지시자 사용을 허락한다. Options, XBitHack등을 사용할 수 있다.
          * Order
            => Order명령은 해당 디렉토리에 대한 IP, DNS 필터링의 순서를 설정한다. Allow는 호스
              트 접근을 허락하며, Deny는 접근을 불허한다. Allow from all은 모든 호스트로부터의
              접근을 허락한다는 뜻이며, Deny from all은 모든 호스트로부터의 요청을 거부한다는
              뜻이다.
                예) Order deny, allow
                    Deny from all
                    Allow from 호스트명

     - #<Directory /home/*/public_html>

       #    AllowOverride FileInfo AuthConfig Limit
       #    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
       #    <Limit GET POST OPTIONS PROPFIND>
       #        Order allow,deny
       #        Allow from all
       #    </Limit>
       #    <LimitExcept GET POST OPTIONS PROPFIND>
       #        Order deny,allow
       #        Deny from all
       #    </LimitExcept>
       #</Directory>

         => 개인 홈페이지 디렉토리에 대한 접근 권한을 설정한다. <Limit> </Limit>로 각각의 접근
           을 제어할 수 있다.

     -<IfModule mod_userdir.c>
          UserDir public_html
      </IfModule>
       => 사용자의 개인 홈페이지의 문서가 위치하는 디렉토리명을 적는다. 기본값이 public_html
         이지만, 너무 길다고 생각되면 www나 web등으로 바꿔도 된다.

     -<IfModule mod_dir.c>
          DirectoryIndex index.html index.php
      </IfModule>

       => 디렉토리의 인덱스파일(처음열리는 파일)로 사용할 파일이름을 적는다. 기본 index.html에
         index.htm, index.php, index.php3 index.shtml등을 추가하도록 한다.

     - AccessFileName .htaccess
        => 각각의 디렉토리의 접근을 제어하는 정보를 가진 파일 이름을 지정하며 웹 클라이언트들
          이 .htaccess파일을 볼 수 없도록 설정한다. 여기에서 사용하는 .htaccess는 권한정보를
          가지고 있으므로 보안유지 차원에서 접근을 허용해서는 안된다. 즉, 파일을 제어하려는
          디렉토리에 넣어 사용한다.

     - <Files ~ "^\.ht">
           Order allow,deny
           Deny from all
           Satisfy All
       </Files>
         => 웹 클라이언트들에게 .htaccess파일을 볼 수 있는지 여부를 결정한다.

     - #CacheNegotiatedDocs
        => 아파치는 기본적으로 협상된 문서에 대해서는 "Pragma: no-cache" 내용을 보내는데 이 설
          정은 프록시 서버들이 문서를 캐시하지 못하게 요청한다. '#'를 제거하고 옵션을 실행하면
          모든 프록시가 문서를 캐시할 수 있게 한다.

     - UseCanonicalName On : 아파치가 자신의 URL 생성시 어떤 특정한 법칙에 따라 생성을 하도록
                            지정하는 지시자이다. On이면 서버이름과 포트를 이용한 명칭을 생성
                            하고, Off이면 클라이언트에게 제공하는 호스트이름과 포트를 생성하면
                            된다.

     - <IfModule mod_mime.c>
           TypesConfig /usr/local/apache/conf/mime.types
       </IfModule>
        => mine.types파일 또는 이에 해당하는 파일을 찾을 위치를 결정한다. MIME은 Multipurpose
          Internet Mail Extension의 약자로 클라이언트 브라우저에게 어떠한 유형의 자료를 전송
          할 것인지를 조절해 주는 기능이다.

     - DefaultType text/plain : 파일 확장자를 정의해 두는 것으로 MIME타입을 알 수 없는 문서에
                              대하여 사용할 기본 MIME타입을 설정한다. 기본값은 text/plain이며,
                              이 값으로 설정하면 Mime Type을 결정하지 못할때는 기본 텍스트문
                              서 결정한다. 주로 서버에 문서 파일이 많을 경우에 사용한다. 웹 브
                              라우저상에서 실행 프로그램이나 이미지 등 바이너리인 경우 웹브라
                              우저가 바이너리라고 해석하게 하기 위해서 "application/octet-str
                              eam" 과 같은 형식을 적어주어야 한다. 이것은 웹브라우저가 실행파
                              일 등을 텍스트문서로 착각하고 브라우저상에 표시하지 않게 하기
                              위함이다.

     - <IfModule mod_mime_magic.c>

           MIMEMagicFile /usr/local/apache/conf/magic
       </IfModule>
         => mod_mime_magic 모듈을 사용할 경우 해당 파일의 내용으로 파일 타입 힌트를 얻는 역할
           을 한다. MIMEMagicFile명령은 암시를 정의하는 모듈이 어디에 위치하고 있는지를 알려
           주는 것으로 이것을 사용하기 위해서는 해당 모듈을 탑재해야 한다.

     -HostnameLookups Off : 클라이언트에서의 접속 이름 또는 IP주소만을 기록할 지를 여부를 체크
                           한다. 예를 들면 posein.com은 On값이 되며, 192.168.0.1은 Off값이다.

     - ErrorLog /usr/local/apache/logs/error_log
       => 웹서버가 에러가 발생했을 경우 에러에 관한 기록파일을 설정한다. 참고로 <VirtualHost>
         지시자에서 ErrorLog 설정을 하지 않았다면 여기에서 언급한 설정을 따른다. 로그 파일의
         경우는 계속해서 사용량이 증가하므로 수시로 용량을 줄여야 한다.

     - LogLevel warn
        => 로그메시지의 크기를 제어하는 부분이다. 옵션에는 debug, info, notice, warn, error,
          crit, alert!, emerg 등이 있다.

     - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
       LogFormat "%h %l %u %t \"%r\" %>s %b" common
       LogFormat "%{Referer}i -> %U" referer
       LogFormat "%{User-agent}i" agent
        => CustomLog 지시자에서 사용할 별명을 정의하는 곳으로 각각의 의미는 다음과 같다.
          %h : 호스트명
          %l : 리모트 로그이름
          %u : 사용자 인증에 사용된 유저명
          %t : 시간
          %r : 요청한 내용의 첫번째 줄
          %s : 서버상태
          $b : 전송량(헤더 포함) -바이트수
          %{헤더} : 요구된 헤더 내용
          %U : 요구한 URL

     - CustomLog /usr/local/apache/logs/access_log common
        => 클라이언트들이 웹서버에 접근한 정보를 기록해 주는 access_log 파일의 위치를 설정한
          다. <VirtualHost> 지시자에서 이 설정 부분이 없을 경우 여기서 설정한 위치로 모
          두 저장된다. 가상 호스트별로 따로 접근 로그파일을 만들고 싶으면 이 설정을 각각의
          <VirtualHost> 지시자 안에 넣으면 된다.

     - #CustomLog /usr/local/apache/logs/referer_log referer
       #CustomLog /usr/local/apache/logs/agent_log agent
         => 브라우저(agent)와 접속자(referer) 기록 파일을 갖고자 한다면 위 주석을 제거한다.

     - #CustomLog /usr/local/apache/logs/access_log combined
         => access, agent, referer 정보를 하나의 파일에 모두 저장하기를 원한다면 combined 옵션
           을 이용한다.

     - ServerSignature On
        => 아파치 서버가 생성하는 페이지(에러문서, FTP 디렉토리 list, mod_status, mod_info
          output, CGI 생성 문서 제외)에 서버 버전과 가상호스트 이름을 포함하는 행을 넣는 것을
          설정한다. 옵션에는 On | Off | Email 등이 있고 On으로 설정하면 서비스중인 가상호스트
          의 이름과 서버 버전을 포함한 라인을 보여주고, Email의 경우 ServerAdmin으로의 mailto:
          링크도 포함된다.

     - # EBCDICConvertByType  On=InOut text/* message/* multipart/*
       # EBCDICConvertByType  On=In    application/x-www-form-urlencoded
       # EBCDICConvertByType  On=InOut application/postscript model/vrml
       # EBCDICConvertByType Off=InOut */*
        => EBCDIC 코드 셋을 사용하는 메인프레임을 위한 설정이다. EBCDIC는 IBM이 대형운영체계
          에서 사용하기 위해 개발한 알파벳 및 숫자를 위한 바이너리 코드를 말한다. EBCDIC는
          IBM S/390 서버의 운영체계인 OS/390에서 사용되는 텍스트파일용 코드로서 많은 회사들이
          자기 회사의 오래된 응용프로그램과 데이터베이스를 위해 아직도 사용하고 있다. 그러나
          IBM PC나 위크스테이션용 운영체계에서는 텍스트 표현방법에 있어 자신들의 고유한 체계인
          EBCDIC 대신 산업계 표준인 ASCII를 사용한다. EBCDIC 파일내에서 각 알파벳이나 숫자는
          8비트의 이진수로 표현되므로 총 256개의 문자가 정의된다.

     - Alias /icons/ "/usr/local/apache/icons/"
        => 웹 문서 루트 디렉토리(DocumentRoot dir)외의 다른 디렉토리에서도 문서를 저장할 수
          있게 해 주는 별칭을 설정하는 부분으로 별칭의 설정은 Alias /별칭/ "path"하면 된다.
          디렉토리 설정은 앞에서 사용한 옵션을 사용하면 되고, 별칭은 하나 이상 여러 개를 만들
          어 사용 가능하기 때문에 필요한 만큼 만들어 사용하면 된다.

     - IndexOptions FancyIndexing
        => 디렉토리 목록을 표시해 줄 때 표준으로 보여줄 것인지, 아니면 파일에 대한 약간의 정보
          를 추가해서 표시해 줄 것인지를 결정한다. 만약 표시한 파일이 존재하지 않을 경우 디렉
          토리와 파일들의 목록을 보여줄 때 디렉토리와 속성에 따른 아이콘을 사용할 지 여부를
          설정한다.

     - AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

       AddIconByType (TXT,/icons/text.gif) text/*
       AddIconByType (IMG,/icons/image2.gif) image/*
       AddIconByType (SND,/icons/sound2.gif) audio/*
       AddIconByType (VID,/icons/movie.gif) video/*

       AddIcon /icons/binary.gif .bin .exe
       AddIcon /icons/binhex.gif .hqx
       AddIcon /icons/tar.gif .tar
       AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
       AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
       AddIcon /icons/a.gif .ps .ai .eps
       AddIcon /icons/layout.gif .html .shtml .htm .pdf
       AddIcon /icons/text.gif .txt
       AddIcon /icons/c.gif .c
       AddIcon /icons/p.gif .pl .py
       AddIcon /icons/f.gif .for
       AddIcon /icons/dvi.gif .dvi
       AddIcon /icons/uuencoded.gif .uu
       AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
       AddIcon /icons/tex.gif .tex
       AddIcon /icons/bomb.gif core

       AddIcon /icons/back.gif ..
       AddIcon /icons/hand.right.gif README
       AddIcon /icons/folder.gif ^^DIRECTORY^^
       AddIcon /icons/blank.gif ^^BLANKICON^^
         => IndexOptions에서 FancyIndexing으로 설정되어 있을 경우에 사용되며 각각의 파일 및
           확장자에 따른 아이콘의 모양을 정해준다.

     - DefaultIcon /icons/unknown.gif
         => 앞에서 설정되어 있지 않은 파일에 대하여 사용하는 아이콘이다.

     - #AddDescription "GZIP compressed document" .gz
       #AddDescription "tar archive" .tar
       #AddDescription "GZIP compressed tar archive" .tgz
         => 서버에서 만들어지는 인덱스에 있는 파일 뒤에 짧은 주석을 달 수 있도록 한다. 위의
           경우에는 확장자가 .gz이면 "GZIP compressed document"라는 설명을 보여주게 된다.

     - ReadmeName README
       HeaderName HEADER
        => 서버가 디렉토리 목록 뒤에 붙여넣을 README 파일의 이름을 설정하며, HeaderName은 디렉
          토리 인덱스 앞에 내용을 넣을 파일의 이름을 설정한다. 즉, 디렉토리 목록을 보여줄 때
         화면 아래부분에 간단한 설명이 들어갈 파일을 지정한다. 예를 들면, 서버는 처음 name.ht
         ml 파일을 찾고 존재하면 그 내용을 포함한다. 만약 파일이 존재하지 않는다면 name.txt를
         찾고 txt내용을 포함한다.

     - IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
        => 디렉토리를 인덱스할 때 파일을 보이지 않게 설정하는 부분이다.

     - AddEncoding x-compress Z
       AddEncoding x-gzip gz tgz
        => 일부 브라우저에서 전송을 받으면서 정보를 압축해제할수 있도록 허용할 때 사용하는 것
          으로 모든 브라우저에서 이 기능을 지원하지는 않는다.

     - AddLanguage da .dk
       AddLanguage nl .nl
       AddLanguage en .en
       AddLanguage et .ee
       AddLanguage fr .fr
       AddLanguage de .de
       AddLanguage el .el
       AddLanguage he .he
       AddCharset ISO-8859-8 .iso8859-8
       AddLanguage it .it
       AddLanguage ja .ja
       AddCharset ISO-2022-JP .jis
       AddLanguage kr .kr
       AddCharset ISO-2022-KR .iso-kr
       AddLanguage nn .nn
       AddLanguage no .no
       AddLanguage pl .po
       AddCharset ISO-8859-2 .iso-pl
       AddLanguage pt .pt
       AddLanguage pt-br .pt-br
       AddLanguage ltz .lu
       AddLanguage ca .ca
       AddLanguage es .es
       AddLanguage sv .sv
       AddLanguage cz .cz
       AddLanguage ru .ru
       AddLanguage zh-tw .tw
       AddLanguage tw .tw
       AddCharset Big5         .Big5    .big5
       AddCharset WINDOWS-1251 .cp-1251
       AddCharset CP866        .cp866
       AddCharset ISO-8859-5   .iso-ru
       AddCharset KOI8-R       .koi8-r
       AddCharset UCS-2        .ucs2
       AddCharset UCS-4        .ucs4
       AddCharset UTF-8        .utf8
         => 문서의 언어를 표시한다. 즉, 내용 협상 과정을 통해 브라우저가 이해하는 언어의 문서를
           제공할 수 있다. 폴란드어의 경우 펄과 구분하기 위해 pl .po로 포기한다.

     - <IfModule mod_negotiation.c>

           LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
       </IfModule>
         => 내용 협상 과정에서 같은 순위를 가질 때 어느 언어에게 우선권을 부여할 것인지를 설정
           한다. 설정은 내림차순으로 나열한다.

     - AddType : 추가적으로 지원될 파일들을 적는다.
       예) php4를 사용할 경우
         AddType application/x-httpd-php .php .htm .html .inc .php4 .php3
         AddType application/x-httpd-php-source .phps
          => 즉 mime.types의 수정없이 mime을 설정가능하게 해준다.

     - #AddHandler cgi-script .cgi
        => 특정 파일 확장자나 처리기에 연결하거나 특정 파일 타입에 특정 동작 연결을 설정하는
          부분이다. 즉, 어떤 파일 확장자를 파일 종류와 무관하게 작동할 수 있게 "Hander"에 결
          합되도록 설정해 주는 것이다.

     - # Format: Action media/type /cgi-script/location
       # Format: Action handler-name /cgi-script/location
        => 매칭되는 파일이 불려질 때마다 해당 미디어 타입에 맞는 스크립트를 실행할 수 있으며,
          이 설정은 자주 사용되는 CGI 파일 프로세서에 대해 반복적으로 URL을 사용하지 않아도
          된다.

     - #MetaDir .web
        => MetaDir은 아파치가 메타 정보 파일을 찾을 디렉토리 이름을 말하는 것으로 이 파일에는
          문서를 보낼 때 추가할 추가 HTTP 헤더 정보가 있으며, MetaSuffix는 메타정보를 가지고
          있는 파일의 접미어를 설정한다.

     - # Customizable error response (Apache style)
       #  these come in three flavors
       #
       #    1) plain text
       #ErrorDocument 500 "The server made a boo boo.
       #  n.b.  the single leading (") marks it as text, it does not get output
       #
       #    2) local redirects
       #ErrorDocument 404 /missing.html
       #  to redirect to local URL /missing.html
       #ErrorDocument 404 /cgi-bin/missing_handler.pl
       #  N.B.: You can redirect to a script or a document using server-side-includes.
       #
       #    3) external redirects
       #ErrorDocument 402 http://some.other-server.com/subscription_info.html
       #  N.B.: Many of the environment variables associated with the original
       #  request will *not* be available to such a script.
         => 존재하지 않는 페이지를 요청받을 경우 또는 해당 디렉토리의 퍼미션이 없을 경우 보여
           주는 에러 메시지설정이다. 관리자 임의로 다음 3가지 중 선택해서 출력해 줄 수 있다.
             1) plain text - 보통 텍스트 화면
             2) local redirects - 내부 URL로 방향 전환
             3) external redirects - 외부 URL로 방향 전환

     - BrowserMatch "Mozilla/2" nokeepalive
       BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
        => HTTP 응답 방식을 수정한다. 첫번째 지시자는 Netscape 2.x와 유사한 브라우저에 대해
          KeepAlive기능을 사용하지 못하게 하는 설정이다. 두번째 지시자는 HTTP/1.1을 잘못 구현
          301,302(redirect)응답에 대해 KeepAlive를 제대로 지원하지 못하는 MS Explorer 4.0b2를
          위한 설정이다.

     - BrowserMatch "RealPlayer 4\.0" force-response-1.0
       BrowserMatch "Java/1\.0" force-response-1.0
       BrowserMatch "JDK/1\.0" force-response-1.0
         => HTTP/1.1 응답도 제대로 처리하지 못해 HTTP/1.1 spec를 위반하는 브라우저에 대해
           HTTP/1.1응답을 하지 않게 하는 설정이다.

     - #<Location /server-status>
       #    SetHandler server-status
       #    Order deny,allow
       #    Deny from all
       #    Allow from .your-domain.com
       #</Location>
         => 서버 상태정보를 허용할 서버이름을 적어준다. 이 설정을 하면 웹브라우저를 이용하여
           http://localhost/server-status 라고 입력하면 웹서버의 상태를 파악할 수 있다.

     - #<Location /server-info>
       #    SetHandler server-info
       #    Order deny,allow
       #    Deny from all
       #    Allow from .your-domain.com
       #</Location>

         => 원격 서버의 환경 설정을 보고받을 수 있다. 주의할 점은 mod_info.c가 로드되어 있어야
           한다. http://localhost/server-info 라고 입력하면 서버의 환경 설정을 확인할 수 있다.

     - #<Location /cgi-bin/phf*>
       #    Deny from all
       #    ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
       #</Location>
         => 전 1.1버전에 있던 버그를 악용하려는 사람이 있는데, #를 제거하면 버그를 이용한 공격
           이 있을 때 phf.apache.org상의 기록 스크립터로 방향 전환을 시키게 한다. 또 다른 방법
           은 직접 support/php_abuse_log.cgi스크립트를 이용해 사용자 스스로가 저장하는 것이다.

     - #<IfModule mod_proxy.c>
       #    ProxyRequests On
     
       #    <Directory proxy:*>
       #        Order deny,allow
       #        Deny from all
       #        Allow from .your-domain.com
       #    </Directory>

         => 프록시 서버 사용을 설정하는 부분으로 프록시 서버 모듈을 포함했을 경우 #를 제거하면
           프록시 서버사용이 가능하다.

     - #    ProxyVia On
        => HTTP/1.1 "Via:"헤더를 처리할 지 여부를 설정하는 부분이다. 옵션에는 Off | On | Full
          | Block 등이 있으며 Full은 서버 버전을 포함하며, Block은 나가는 모든 자료에 "Via"를
          제거한다.

     - #    CacheRoot "/usr/local/apache/proxy"
       #    CacheSize 5
       #    CacheGcInterval 4
       #    CacheMaxExpire 24
       #    CacheLastModifiedFactor 0.1
       #    CacheDefaultExpire 1
       #    NoCache a-domain.com another-domain.edu joes.garage-sale.com
        => 캐쉬 기능을 enable하기 위해서는 #을 제거한다.


    ### Section 3: Virtual Hosts : 가상 도메인을 설정하는 부분으로 웹호스팅할 경우에 설정한다.
     -NameVirtualHost : 한 서버에서 여러도메인을 사용할 경우 설정해야 한다.
     예) 192.168.1.125라는 IP하나를 가지고 서버를 구축하여 abc.co.kr이라는 도메인을 웹호스팅
        할 경우의 설정
        NameVirtualHost 192.168.1.125
        ------------------------------------
       <VirtualHost 192.168.1.125>
          ServerAdmin
admin@abc.co.kr
          DocumentRoot /home/abc/www
          ServerName www.abc.co.kr
          ServerAlias *.abc.co.kr                   // abc.co.kr앞에 붙는 모든 2차도메인을 모
                                                    //두 abc.co.kr이라는 홈페이지가 열리도록
                                                    //설정을 할 때 쓴다.
          ErrorLog logs/abc-error-log
          CustomLog logs/abc-access_log common
       </VirtualHost>

4. apache의 실행
(1) 데몬파일을 이용한 실행
  /usr/local/apache/bin/httpd stop 한 후에 /usr/local/apache/bin/httpd start한다.
   또는
  /usr/local/apache/bin/httpd restart
(2) 스크립트파일을 이용한 실행(권장)
  /usr/local/apache/bin/apachectl stop 한 후에 /usr/local/apache/bin/apachectl start한다.
   또는
  /usr/local/apache/bin/apachectl restart
(3) 부팅할 때마다 자동적으로 실행하도록 설정하기
  /etc/rc.d/rc.local파일에 /usr/local/apache/bin/apachectl start라고 추가한다.

5. httpd명령의 사용
(1) 사용법
   httpd [option] [command] [file_name]
(2) option
   -t : 환경파일인 httpd.conf의 파일설정을 점검한다.
   -f : 새로 설정한 conf파일이 있을 경우 그 설정파일로 아파치 데몬을 띄운다.
   -S : 현재 시스템에 설정되어 있는 가상 호스트를 보여준다.
   -l : 현재 컴파일된 모듈에 대한 목록을 보여준다.
(3) 사용예
   1) /usr/local/apache/bin/httpd -t  => 문법적으로 httpd.conf의 파일 설정을 점검한다.
      Syntax OK                       => 아무 이상이 없음을 나타낸다.
   2) /usr/local/apache/bin/httpd -f httpd_test.conf => httpd_test.conf파일의 설정대로 데몬을
                                                       띄운다.
(참고) apachectl 스크립트를 이용한 httpd.conf파일의 설정 점검
/usr/local/apache/bin/apachectl configtest


6. apache의 확인
(1) 데몬의 확인 : 아파치데몬이 떠 있는지 확인한다.
   [root@house apache]# ps -aux |grep httpd 또는 ps -aux |grep apache
    root      1515  0.0  1.2  3464 1652 ?        S    23:22   0:00 /usr/local/apache
    nobody    1516  0.0  1.6  3748 2064 ?        S    23:22   0:00 /usr/local/apache
    nobody    1517  0.0  1.3  3548 1720 ?        S    23:22   0:00 /usr/local/apache
    nobody    1518  0.0  1.3  3548 1720 ?        S    23:22   0:00 /usr/local/apache
    nobody    1519  0.0  1.3  3548 1720 ?        S    23:22   0:00 /usr/local/apache
    nobody    1520  0.0  1.3  3548 1720 ?        S    23:22   0:00 /usr/local/apache
    nobody    1523  0.0  1.3  3552 1740 ?        S    23:22   0:00 /usr/local/apache
     => 어떠한 명령을 가지고 실행했느냐에 따라 달라진다. 만약 정상적으로 작동한다면 아파치데몬
       의 리스트를 보여준다. 웹서비스 프로세스들은 초기에 구동된 httpd 데몬 1개만 root권한이고
       나머지는 nobody권한으로 데몬이 실행된다. 일반사용자들이 웹브라우저를 통해서 연결되는
       데몬은 nobody권한의 httpd이다.

우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
Tips! (1)
OpenSource (1)
«   2018/01   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
  1. 2012/12 (2)
  2. 2012/04 (3)
  3. 2012/03 (6)
  4. 2012/02 (6)
  5. 2012/01 (2)