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
addicon과 AddIconByType 설정 부분은 디렉토리 목록을 표시할 때 아이콘 이미지 파일을 파일 이름 또는 확장자들에 따라서 어떻게 보여줄것인가를 설정하는 부분입니다.
예를들어 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라면 아파치는 클라이언트에 의해 제공되는 Hostname과 Port를 사용합니다.
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의 스레드, 메모리 용량 등 하드웨어적인 부분까지도 고려해야 하며, 고려를 하지 않은 채 임의로 수치를 늘린다면 오히려 성능이 떨어질 수도 있습니다.
기본 값을 토대로 하여 조금씩 수치를 늘려가면서 점검을 해야됩니다.