apache config

OS/리눅스 & 유닉스 2012. 3. 20. 09:34
http://cafe.naver.com/q69/8248

2. apache의 환경 설정(1)

◎ ServerType standalone


서버의 실행 타입을 설정하는 부분이다. 타입은 standalone과 inetd 두가지 방식이 있다.
standalone은 데몬이 항상 떠 있어서 사용자의 요청이 있을 경우 바로 반응을 나타내지만, 항상 메모리를 차지하고 있다는 단점이 있다.
inetd는 inetd라는 프로세스에 의해 필요할 때만 apache 데몬이 불러들여지는 것이다. 따라서 반응은 느리지만 항상 떠 있지 않으므로 필요없는 메모리는 차지하지 않고 있다.
보통 웹서버는 많은 사람들의 요청이 계속 이어지는 데몬이므로 standalone을 많이 쓴다.



◎ ServerRoot "apache가 설치된 디렉토리"


아파치 서버의 루트디렉토리이다. 아파치 프로그램의 웹문서가 위치하는 DocumentRoot와 구분지을 필요가 있다.



◎ Timeout 300


서버나 클라이언트의 통신장애로 인해 클라이언트에서 완벽한 처리를 하지 못할때 연결을 해제하기 위한 설정시간이다.



◎ KeepAlive On


클라이언트가 서버에 접속 후 일정시간동안 접속을 유지할 것인지의 여부를 정하는 것이다. 일정시간 접속이 없으면 접속을 해제하며, 일정 시간내에 다른 요청이 있을 경우에는 접속을 계속 유지한다.
시간 설정은 KeepAliveTimeout 옵션으로 설정한다.



◎ MaxKeepAliveRequests 100


KeepAlive 최대 접속 수이다.



◎ KeepAliveTimeout 15


KeepAlive를 유지할 시간이다. 한번의 접속 후 이 시간동안 또 다른 접속이 없을 경우에는 접속은 끊어진다.



◎ MinSpareServers 5


최소 예비 프로세스이다. 아무리 접속이 없다 하더라도 여기에 설정한 개수만큼의 프로세스는 떠 있게 된다. Root 권한으로 떠 있는 것을 제외한 nobody 권한으로 떠 있는 것만을 가르킨다.



◎ MaxSpareServers 10


필요없이 아파치 프로세스가 많이 떠 있을 경우에는 이 설정값에 맞게 프로세스 개수를 줄인다. 이 역시 nobody 권한으로 되어 있는 프로세스만 해당한다.



◎ StartServers 5


아파치가 처음 실행 될 때 뜨게 되는 프로세스 개수이다. 만일 이 설정값이 MinSpareServers 값보다 작을 경우에는 실행 후 바로 MinSpareServers에서 설정한 개수 만큼 프로세스가 생성되므로 값을 MinSpareServers와 같거나 크게 설정하는 것이 좋다.



◎ MaxClients 150


최대 동시 접속자 수이다. 최대값은 255이며 더 늘리기 위해서는 아파치 소스의 httpd.h를 수정 후 다시 컴파일 해야 한다.



◎ MaxRequestsPerChild 0


아파치의 자식 프로세스가 처리할 수 있는 최대 요청 처리 건수이다. 0으로 설정해 두면 요청건수에 제한을 두지 않는다는 의미이다.



◎ Port 80


아파치가 사용할 포트이다.



◎ User nobody
◎ Group nobody


아파치가 자식 프로세스를 사용할 때 사용할 소유자와 소유그룹을 설정한다. 기본설정을 그대로 쓰는 것이 좋다.



◎ ServerAdmin webmaster@domain


아파치 서버관리자 이메일을 설정하는 곳이다.



◎ ServerName domain


서버의 이름을 설정한다.



◎ DocumentRoot "/usr/local/apache/htdocs"


웹문서가 위치할 경로를 절대경로러 써 넣는 곳이다.



<Directory />
  Options FollowSymLinks
  AllowOverride None
</Directory>

시스템 루트 디렉토리 밑에 적용될 점들을 나열한다.


<Directory "/usr/local/apache/htdocs">
  Options FollowSymLinks MultiViews
  Order allow,deny
  Allow from all
</Directory>

DocumentRoot 밑에 적용될 점들을 나열한다.


<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>

각 계정별 디렉토리 밑에 적용될 점들을 나열한다.


◎ Options

- FollowSymLinks : 실볼릭 링크를 허용한다.
- SymLinksIfOwnerMatch : 링크를 허용하지만 링크 하고자 하는 사용자의 소유로 되어 있는 것만 링크 가능하다.
- ExecCGI : CGI 실행을 허용한다.
- Includes : SSI(Server Side Includes)를 허용한다.
- IncludesNOEXEC : SSI를 허용하지만 "#exec" 와 "include"로 정의한 CGI 실행은 거부한다.
- Indexes : 웹 서버의 디렉토리에 접근 했을 때 DirectoryIndex 지시자로 설정한 파일이 없을 경우 디렉토리안의 파일 목록을 보여준다. 이 옵션을 넣게 되면 해당 디렉토리안의 파일 목록이 보이게 되므로 보안상 보여주지 않는 것이 좋다.
- MultiViews : 클라이언트의 요청에 따라 적절하게 페이지를 보여준다.
- None : 모든 설정을 부정한다.
- All : MultiViews를 제외한 옵션을 의미한다.


◎ AllowOverride


AllowOverride는 클라이언트의 디렉토리 엑세스 제어에 관한 설정이다. AllowOverride 는 아래에 나올 AccessFileName 지시자와 관련이 있다.
AccessFileName에서 설정한 파일을 참고로 엑세스를 제어한다.

◎ DirectoryIndex index.html index.htm index.php index.php3


주소를 칠 때 디렉토리까지만 입력했을 경우 자동으로 찾아주는 페이지를 설정하는 부분이다. 위의 경우 index.html 파일이 없을 경우에는 index.htm을 index.htm 파일도 없을 경우에는 index.php를 찾아준다.
이 기능을 이용하면 메인페이지의 이름을 변경하지 않고 인트로 페이지를 생성할 수 있다.




◎ AccessFileName .htaccess


지난번에 다루었던 디렉토리 엑세스 관련 내용이다. 디렉토리 엑세스 권한에 관련된 파일의 이름을 설정하는 옵션이다.



◎ HostnameLookups Off


아파치의 로그 파일에 보면 어디서 접속했는지 아이피가 기록된다. 이 설정을 On으로 하게 되면 Dns에 질의를 한 후 아이피를 도메인으로 변환하여 기록하게 된다. 따라서 아파치의 속도가 느려질 수 있다.




◎ ErrorLog /usr/local/nanulHome/nanulCore/apache/logs/error_log


아파치의 에러 로그 기록파일 옵션이다.




◎ 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


로그 기록 형식을 정의한다. 기본으로 4가지가 설정되어 있다. common은 일반적인 기록, referer는 이전 사이트의 주소, agent는 접속자의 OS, 브라우져 등을 기록한다.




◎ CustomLog /usr/local/nanulHome/nanulCore/apache/logs/access_log common

# If you would like to have agent and referer logfiles, uncomment the
# following directives.
#
#CustomLog /usr/local/nanulHome/nanulCore/apache/logs/referer_log referer
#CustomLog /usr/local/nanulHome/nanulCore/apache/logs/agent_log agent


아파치 엑세스 로그 파일에 대한 설정옵션이다. 주석문에서도 알 수 있듯이 접속자의 이전경로, 브라우져, OS 등을 알고 싶다면 common대신에 다른 로그기록 형식을 지정해 줄 수 있다.




◎ Alias /icons/ ""/usr/local/apache/icons/"


디렉토리를 alias 시켜준다. 만일 aaa.com이란 도메인 밑에 icons라는 디렉토리에 웹에서 접근할려고 한다면 apache는 /usr/local/apache/icons/라는 디렉토리로 alias 시켜 준다.
앞의 "/icons/"는 웹상에서의 경로 즉 Document Root이며 "/usr/local/apache/icosn/" 경로는 시스템 경로이다.




◎ ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"


alias와 같은 형태이고 스크립트를 실행시킬 디렉토리를 alias 시켜준다.




◎ IndexOptions FancyIndexing


옵션에서 Indexes 옵션을 줄 경우 해당 디렉토리가 보인다고 지난번 강좌에서 이야기 했었다. 이때 이 옵션이 설정되어 있으면 파일의 크기, 생성날짜 등을 보여주게 된다.
물론 Indexes 기능을 사용하지 않을 경우에는 상관없다.




◎ DefaultIcon /icons/unknown.gif


디렉토리 내의 파일을 보여줄 때 해당 파일과 매칭되는 아이콘이 없을 경우 보여주는 아이콘이다.




◎ AddType application/x-httpd-php .php .inc .html .php3 .htm


확장자가 php가 아닌 파일도 php로 인식해서 실행시킬 수 있도록 확장자를 이곳에 등록시킬 수 있다. 참고로 db 커넥션 파일의 확장자를 inc로 하는 경우가 많으므로 inc 역시 웹상에서는 보이지 않도록 이곳에 등록해 주는 것이 좋다.
등록하지 않을 경우에는 웹브라우져에 해당 파일의 경로를 적어주면 브라우져 상에서 내용이 바로 보여지게 되므로 매우 위험하다.




ErrorDocument 500 "The server made a boo boo."
ErrorDocument 404 /missing.html
ErrorDocument 402 http://some.other_server.com/subscription_info.html


아파치 서버에러가 발생시에 보여줄 페이지를 설정할 수 있다. 기본은 주석처리 되어 있으므로 기본 페이지를 보여주게 된다. 하지만 이 옵션을 설정하게 되면 에러시 서버관리자가 원하는 페이지를 보여줄 수 있다.
보여주는 형식은 텍스트, 서버내 특정 html 또는 CGI 페이지, 다른 서버에 있는 페이지 등이 있다.

'OS > 리눅스 & 유닉스' 카테고리의 다른 글

awk 외부 변수 참조  (0) 2012.03.20
쉘 (shell) 프로그래밍  (0) 2012.03.20
httpd.conf(apache)  (0) 2012.03.20
아파치 접속자 수  (0) 2012.03.20
ANSI Escape Sequences: Colours and Cursor Movement  (0) 2012.03.16
: