오늘은 httpd.conf 설정에 대해 한번 알아 보도록 할까요?

예전에 야휴 코리아를 면저보러 갔었는데요 거기 개발팀장이 httpd.conf 에 생각 나는 셋팅 값들을 나열하라고 하데요. 셋팅은 하지만 기억력이 별로 않좋은 저로서는 식은 땀이 뚝뚝 결국 낙방을 하였답니다.  ㅋㅋㅋ
여러분도 중요한 셋팅 몇 개정도는 기억하고 있어야 나도 개발자구나 하고 말할수 있을꺼 같은데요 .. ㅋㅋㅋ

아파치의 설정은 3개의 section 으로 나울수 있습니다.
Section 1 : Global Environment
Section 2: 'Main' server configuration
Section 3: Virtual Hosts

Section 1 : Global Environment


ServerType standalone

 - apache웹서버가 운영되는 형태 (단독 실행 웹서버로 동작함)

ServerRoot "/usr/local/apache"

 - apache가 설치된 경로

PidFile /usr/local/apache/logs/httpd.pid

 - apache가 실행될때의 pid값을 가지고 있는 Pid파일의 경로

ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard

 - apache scoreboard 파일이 있는 경로

Timeout 300

 - 클라이언트가 서버에 요청을 한뒤 클라이언트에서 아무런 응답이 없어서 오류로 처리하기까지의 대기 시간

KeepAlive On

 - 서버에 한번 연결을 했던 클라이언트가 다시 연결 요청을 할 것이라고 생각하고, 클라이언트의 요청을 처리하고 나서 연결을 끊지 않고 유지한다는 설정으로, 클라이언트가 다시 요청을 했을 때 서버와의 접속요청 절차를 거치지 않아도 되므로, 접속 속도가 향상된다. Off에 비해서 20-30% 정도의 성능 향상을 기대할 수 있다. 단 동시 접속자가 많을경우에는 메모리가 충분해야 한다. Off로 하였을 경우 On보다 많은 동시 접속자를 처리할 수 있지만, 매회 연결 때마다 서버와의 통신을 해야 하므로 접속 속도도 늦고, cpu에 로드가 발생한다. 하지만 검색엔진 등의 접속자가 아주 많고, 단일 접속만 하고 접속을 끊는 사이트에서는 Off로 사용하는 것이 오히려 도움이 된다.

MaxKeepAliveRequests 100

 - 서버가 클라이언트와의 접속을 유지하면서 최대 클라이언트로부터 받을 수 있는 요청의 수이다. 즉 한번 연결 후에 클라이언트에서 100번의 요청을 받았다면 자동으로 설정을 끊는것이다. 0으로 설정을 하는 것은 클라이언트에서 스스로 접속을 끊을 때까지 모든 요청을 받는다는 것이다 웹사이트가 복잡하게 되어있는 웹 서버에서는 이 값을 늘여주는 것이 좋다.

KeepAliveTimeout 15

 - 접속이 유지된다고 해도 하루 종일 되어있다면 동시 접속자 제한에 걸려서 웹서버의 접속을 할 수 없게 된다. 이때 설정해주는 값으로 지정된 시간동안 요청이 없으면 연결을 서버에서 연결을 끊어버리게 되어 다른 접속자가 웹서버에 접속할 수 있도록 설정해 주는 것이다. ( 동시 접속자가 많을때 웹서버 성능을 너무 떨어뜨리지 않게 하기 위해서 KeepAlive On으로 설정해놓고, 이 값을 줄여주는 방법도 있다.)

MinSpareServers 5 ( 접속자가 많은 경우 10-15 정도로 설정 )

 - apache는 클라이언트로부터 요청을 받으면 자식 프로세서를 하나 생성하여 그 요청에 응답을 하도록 되어있다. 만약 생성된 프로세서가 없다면 접속시에 지연시간이 발생하므로 속도 증진을 위해서 미리 여분의 응답용 자식 프로세서를 생성해 놓는 것이다.

MaxSpareServers 10

 - 최대로 만들 수 있는 자식 프로세서의 수를 지정한다. ( 접속자가 많을 경우 40-50으로 설정)

StartServers 5

 - 서버가 시작시에 만들어낼  응답 프로세서의 수를 지정 (MinSpareServers와 동일하게 설정)

MaxClients 150

 - 최대 접속할수 있는 동시 접속자수 (호스트웨이에서는 1024까지 확장할수 있도록 컴파일 됨)

MaxRequestsPerChild 0

 - 자식 프로세서 하나당 처리할 수 있는 최대 요청수. default 0으로, 자식 프로세서가 죽지 않으므로 속도향상을 기대할 수는 있으나, 잘 못된 프로그래밍이나 코드 수행으로 인해서 문제가 발생할 경우에는 서버 전체에 부하를 유발할 수가 있다. (보통 300 정도로 설정하고, 사이트가 복잡 하거나 요청이 많아야 할경우에는 500-1000 등으로 수치를 올려준다.)

Section 2: 'Main' server configuration


Port 80

 - apache Webserver가 사용하게될 포트 지정

User nobody

 - apache 데몬이 실행될때 소유권자

Group nobody

 - apache 데몬이 실행될때 그룹 소유권자

ServerAdmin root@fduser.org

 - 서버의 관리자 ( 관리할 사람의 이메일을 적어놓는다. )

ServerName manpage.co.kr

 - 서버의 이름, 호스트명

DocumentRoot "/usr/local/apache/htdocs"

 - apache 웹서버의 기본 홈 디렉토리

<Directory /home/-/public_html>

   AllowOverride FileInfo AuthConfig Limit

   Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

</Directory>

 - /home/-/public_html 디렉토리에 대한 디렉토리 옵션을 나타낸다.

 디렉토리 옵션에는 그 종류가 여러 가지가 있으며, 다음에 자세히 알아보기로 한다.

<IfModule mod_dir.c>

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

</IfModule>

 - 클라이언트가 웹서버에 대한 요청이 있을때 해당 도메인이 디렉토리 안에서 가장 먼저 읽을 파일을 지정한다.

DefaultType text/plain

 - 서버에서 사용되는 문서 중 MIME type으로 알수 없는 문서에 대해 기본 적용할 기본 MIME type을 설정한다. 서버에 문서파일이 많을때 text/plain을 사용하며 바이너리나 실행파일이 많을 경우 application/octet-stream을 적용해준다.

HostnameLookups Off

 - 접속하는 서버들의 IP DNS에게 질의하는 옵션, 만약 On으로 설정시에는 IP DNS서버에 질의해서 로그에 기록하므로 시간이 오래 걸리게 된다. 성능향상을 위해서 Off 적용

ErrorLog /usr/local/apache/logs/error_log

 - 서버의 기본 error_log를 기록하는 파일의 경로

LogLevel warn

 - log를 기록하는 level을 정한다. 로그를 기록하는 level debug, notice, warn, error, crit, alert, emerg 가 있으며, debug쪽에 갈수록 사소한 문제까지도 로그에 기록하므로 로그의 크기가 커지게 되고, emerg쪽으로 갈수록 비상시의 문제 발생시에만 로그에 기록이 되므로 로그의 크기가 그다지 커지지는 않는다. default로는 warn이며, 필요시에 따라 로그 기록하는 level을 변경할 수가 있다.

CustomLog /usr/local/apache/logs/access_log common

 - 서버의 기본 접속 기록에 대한 로그파일의 경로이다.

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

AddType application/x-httpd-php-source .phps

 - 위 두 라인은 php를 사용할 때 필요한 옵션이다.

AddHandler cgi-script .cgi

 - cgi를 사용하고자 할때 사용

AddType text/html .shtml

AddHandler server-parsed .shtml

 - 위 두 라인은 shtml을 사용하고자 할때 사용

Section 3: Virtual Hosts


NameVirtualHost 210.109.102.xxx

 - 이름기반 가상호스팅을 사용한다.

<VirtualHost 210.1091.02.xxx>

 - 한 아이피에 여러개의 도메인을 사용하고자 할때 설정하는 것으로 이곳에 IP대신에 도메인 이름을 적용해도 무방하다.
  
ServerAdmin fd@fduser.org

   - 해당 도메인을 관리자의 이메일

   ServerName fduser.org

   - 해당 도메인의 도메인 명

   ServerAlias www.fduser.org

   - 해당 도메인의 별칭

   DocumentRoot /home/fd

   - 해당 도메인의 홈 디렉토리

   ErrorLog logs/fduser.org-error_log

   - 해당 도메인의 에러상황이 쌓이는 로그파일

   CustomLog logs/fduser.org-access_log common

   - 해당 도메인의 정상적인 접속 상황이 쌓이는 로그파일
</VirtualHost>

설정

트랙백

댓글