Apache extra 내부파일 설명 및 설정

| 2018년 3월 27일 | 0 Comments

extra 디렉토리

Apache의 설치 경로로는 (/usr/local/apache)이며,extra 디렉토리는 Apache의 설정 파일의 경로의 하위 디렉토리인 /usr/local/apache/conf 하위 디렉토리에 있습니다.

extra 내부 파일 설명

파일

파일 특징

httpd-autoindex.conf

* 디렉토리의 내용을 어떻게 로딩할 것인가에 관한 설정 파일

httpd-dav.conf

* WebDAV에 관한 아파치 설정 파일

httpd-default.conf

* 웹 서버의 기본 설정 사항들이 설정되어 있는 설정 파일

httpd-info.conf

* 아파치 실행 상태 정보 모니터링을 설정하는 설정 파일

httpd-languages.conf

* 언어 설정에 관한 아파치 설정 파일

httpd-manual.conf

* 아파치 웹 서버의 메뉴얼 제공에 대한 설정 파일

httpd-mpm.conf

* MPM spercific에 대한 설정 파일

httpd-multilang-errordoc.conf

* 콘텐츠 협상을 통한 에러 문서 설정 파일

httpd-ssl.conf

* SSL 지원을 위한 아파치 설정 파일

httpd-userdir.conf

* 사용자 홈 디렉토리에 관한 설정 파일

httpd-vhosts.conf

* 아파치 가상호스트에 대한 설정 파일

 

위의 표에 있는 파일들 중 httpd-autoindex.conf, httpd-default.conf,  httpd-mpm.conf에 대해 설명해드리겠습니다.

 

httpd-autoindex.conf 설명 및 설정 방법

Httpd-autoindex.conf의 설정을 적용시키기 위해선 httpd.conf 파일에 직접 설정을 해주거나 httpd.conf파일에서 include를 이용하여 autoindex.conf 설정 파일을 참조하여 설정이 가능합니다.

indexOption이 활성화 되려면 웹 브라우저에서 디렉토리 리스트가 보이게 설정이 필요합니다.

Options indexes를 이용해 indexes 웹서버의 디렉토리 젒근 시 지정한 파일이 존재하지 않을 경우 디렉토리의 파일 목록 리스트를 보여줍니다.

vi 편집기를 이용하여 /usr/local/apache/conf/extra/httpd-autoindex.conf 파일 내용을 확인해보면

IndexOptions는 디렉토리 목록을 표시 할 때 어떻게 보여줄 것인가를 결정하는 지시자입니다.

FancyIndexing : 디렉토리의 fancy 목록을 만듭니다.

FancyIndexing 옵션만 적용했을 때 보여지는 디렉토리 목록입니다.

FoldersFirst : 이 옵션을 사용하면 하위 디렉토리 목록이 항상 먼저 나오고, 디렉토리에 있는 일반 파일들이 뒤에 나옵니다.

기본적으로 목록은 파일과 하위 디렉토리로 나뉘고, 각각의 순서를 정리하여 하위 디렉토리들을 먼저 보여줍니다.

이 옵션은 FancyIndexing을 함께 사용할때만 효과가 있습니다.

HTMLTable : FancyIndexing 옵션은 간단한 HTML표로 fancy 디렉토리 목록을 만듭니다.

이 옵션은 오뢔된 브라우저에 지원이 안될 수 있으며 utf-8 사용 플랫폼에서 파일명이나 설명문의 읽기 순서가 다를 때 특별히 유용합니다.

VersionSort : VersionSort는 버전 번호를 포함한 파일명을 정렬합니다. 문자 부분은 정상적인 순서를 정렬하지만, 파일과 설명에 있는 숫자 부분은 숫자 값으로 비교합니다.

IgnoreCase : 이 옵션을 사용하면 대소문자를 구별하지 않고 이름을 정렬합니다.

 

Alias 설정 부분입니다.

– Alias는 크게 두가지 목적을 위해 사용합니다.

첫번째는 documentroot 밖의 문서를 안쪽에서 사용하기 위해서이며

두번째는 긴 이름을 짧게 줄여서 사용하기 위해서입니다.

Alias 형식

Alias /별칭/ /절대경로/

httpd-autoindex.conf에 정의된 /usr/local/apache/icons/ 경로는 간단히 /icons/로 사용할 수 있습니다.

 

AddIcon, AddIconByType

addiconAddIconByType 설정 부분은 디렉토리 목록을 표시할 때 아이콘 이미지 파일을 파일 이름 또는 확장자들에 따라서 어떻게 보여줄것인가를 설정하는 부분입니다.

예를들어 AddIconByType (TXT,/icons/text.gif) text/* 라는 설정을 보면 모든 TXT파일은 설정파일에서 정의해준 /icon/디렉토리의 text.gif파일로 표시됩니다.

 

httpd-default.conf 설명 및 설정 방법

Timeout 60

클라이언트가 접속한 후 GET 요청을 받을 때 까지 기다리는 시간(/sec)

이 시간을 초과하게 되면 클라이언트 접속을 끊어버립니다.

네트워크 속도가 느리거나 서버의 성능이 낮을 수록 수치를 높게 설정합니다.

 

KeepAlive On/Off

프로세스가 요청을 처리하고 연결을 끊을 것인지 연결을 지속적으로 유지할 것인지 설정이 가능합니다.

Off로 설정 시 요청 처리후 연결을 종료하고, On으로 설정시 지속적으로 연결을 유지하게 됩니다.

 

MaxKeepAliveRequests 100

최대 응답할 수 있는 개수를 명시합니다.

0으로 지정하면 제한이 없습니다, 서버 성능 향상을 위해 가능한 높은 값이 좋습니다.

KeepAlive가 활성화 되어있을 때 유용합니다.

 

KeepAliveTimeout 5

아파치 서버는 같은 접속 상태의 클라이언트에서 지정한 시간()만큼 요청이 없을 때 접속을 끊게 됩니다.

 

UseCanonicalName ON/Off

아파치 프로세스가 자신의 URL Server_Name, Server_Port값을 어떠한 방식으로 설정할지 결정하는 지시어 입니다. 이 값이 Off라면 아파치는 클라이언트에 의해 제공되는 HostnamePort를 사용합니다.

On으로 설정한다면 아파치의 경우 ServerName으로 동작합니다.

 

AccessFileName .htaccess

각각의 디렉토리에 .htaccess 파일을 두어서 해당 디렉토리에 대하여 아파치의 설정값을 변경 할 수 있게 해줍니다. AllowOverride 지시어와 같이 동작합니다.

 

ServerTokens Full

아파치의 응답 헤더를 어디까지 보여줄 것인지 설정하는 부분입니다.

보안상 prod사용을 권장합니다.

Prod

아파치 정보만 보여줍니다. ex) Apache

Major

아파치 주버전 정보까지 보여줍니다. ex) Apache/2

Minor

아파치 하위버전 정보까지 보여줍니다. ex) Apache/2.4

Min

아파치 모든버전 정보를 보여줍니다. ex) Apache/2.4.3

OS

아파치 버전과 운영체제 정보를 보여줍니다. ex)Apache/2.4.3 (Unix)

Full

아파치 버전, 운영체제, 모듈정보 모두를 보여줍니다. ex)Apache/2.4.3 (Unix) PHP 5.4.7

 

ServerSignature Off

ServerSignature 설정으로 Error 페이지등에서 보게되는 웹서버 꼬리말 정보를 숨길 수 있다.
물론 ErrorDocument 설정을 바꾸어 페이지로 꾸며서 숨길수도 있다.

HostnameLookups Off

로그기록시 도메인네임서버(On) 또는 아이피주소(Off)로 저장할 지 설정합니다.

On의 경우 DNS 질의를 하기 떄문에 성능저하를 불러올 수 있습니다.

 

httpd-mpm.conf 설명 및 설정 방법

1) mpm 확인

/usr/local/apache/bin/apachectl -l 을 이용하여 활성화된 mpm을 확인 할 수 있습니다.

Mpm 확인 후 해당 항목에 맞는 설정을 수정해주면 됩니다.

[root@pch extra]# /usr/local/apache/bin/apachectl -l

Compiled in modules:

core.c

mod_so.c

http_core.c

worker.c

 

2)mpm방식

-prefork 방식

하나의 자식 프로세스가 하나의 쓰레드를 갖는 구조이며, 자식 프로세스는 1024까지 늘릴 수 있습니다.

하나의 자식 프로세스는 하나의 연결을 담당하기 때문에 worker 보다는 많은 메모리를 사용합니다.

프로세스간 메모리를 공유하지 않기 떄문에 안정적입니다.

-worker 방식

자식 프로세스들이 여러 개의 쓰레드를 가질 수 있으며 각 쓰레드는 한 번에 한 연결을 담당합니다.

prefork보다 메모리 사용량이 적으며, 통신량이 많은 서버에 적합합니다. 쓰레드간에 메모리를 공유하기 때문에 리소스 경합이 발생할 경우 문제가 생길 가능성이 커집니다.

 

-Event 방식

활성 처리가 있는 연결에 대해서만 스레드를 사용하려는 worker mpm의 변형입니다.

아파치 2.4부터 지원하고 있습니다.

 

3) mpm 설정 옵션

-StartServers

시작할 자식 프로세스의 수입니다. 프로세스의 수가 로드에 따라 동적으로 제어되므로 일반적으로 조정할 이유가 없습니다.

-MinSpareServers

예비로 유지되는 서버 프로세스의 최소 수입니다. MinSpareServers가 유휴 상태보다 적은 경우 부모 프로세스는 새 자식 프로세스를 생성합니다.

-MaxSpareServers

예비로 유지되는 서버 프로세스의 최대 수입니다. MaxSpareServers 수치보다 더 많은 프로세스가 유휴 상태이면 부모 프로세스가 초과되는 프로세스를 중지시킵니다.

-MaxRequestWorkers(이전 버전에서는 MaxClient라는 이름을 사용)

동시에 처리할 수 있는 최대 연결 수입니다. 기본적으로는 256까지 사용가능하며, 컴파일 전에 파일을 수정(./server/mpm/prefork/prefork.c)하면 1024까지 올릴 수 있습니다.

-MaxConnectionsPerChild

서버 프로세스가 종료되기 전에 제공되는 최대 연결 수입니다. 0의 경우 제한이 없다라는 의미입니다.

-ThreadsPerChild(worker, event에만 존재하는 옵션)

각 서버 프로세스의 worker 스레드의 일정한 수를 의미합니다.

 

mpm 기본값 및 설정 시 주의사항

-prefork

<IfModule mpm_prefork_module>

StartServers 5

MinSpareServers 5

MaxSpareServers 10

MaxRequestWorkers 250

MaxConnectionsPerChild 0

</IfModule>

 

-worker

<IfModule mpm_worker_module>

StartServers 3

MinSpareThreads 75

MaxSpareThreads 250

ThreadsPerChild 25

MaxRequestWorkers 400

MaxConnectionsPerChild 0

</IfModule>

 

-event

<IfModule mpm_event_module>

StartServers 3

MinSpareThreads 75

MaxSpareThreads 500

ThreadsPerChild 50

MaxRequestWorkers 800

MaxConnectionsPerChild 0

</IfModule>

 

설정시 주의사항

mpm 설정시 무조건 수치를 높인다고 해서 성능이 향상되지는 않습니다.

cpu의 스레드, 메모리 용량 등 하드웨어적인 부분까지도 고려해야 하며, 고려를 하지 않은 채 임의로 수치를 늘린다면 오히려 성능이 떨어질 수도 있습니다.

기본 값을 토대로 하여 조금씩 수치를 늘려가면서 점검을 해야됩니다.

 

 

 

Category: LINUX

About the Author ()