오늘은 대표적인 웹 서버중 하나인 아파치의 설정 옵션에 대해 알아보기로 하겠습니다.
많은 서버에서 이용되고 있는 아파치이지만 막상 conf 파일을 원활하게 조정하고
상황에 맞는 설정을 정확하게 해내기란 만만치 않은 것 또한 사실입니다.
이 글이 많은 웹서버 관리자분들께 자그마한 도움이 되었으면 좋겠습니다.
주된 아파치 설정은 apache/conf/httpd.conf에 저장됩니다.
httpd.conf의 내용을 알아보도록 하겠습니다.
■ 기본 설정
ServerRoot는 웹서버 설정, 로그, 바이너리 파일, 모듈들이 위치하는
디렉토리를 지정하는 지시자 입니다.
주의하실 점은 디렉토리 마지막에 슬래시(/)를 붙여선 안된다는 것입니다.
아파치 웹서버의 서비스 포트를 지정하는 부분입니다.
PHP나 아파치에서 지원하는 표준 모듈을 DSO(Dynamic Shared Object) 방식으로 적재하여 사용할 때 설정합니다.
웹 서버를 실행할 때 소유권을 갖게 되는 사용자와 그룹명을 지정해줍니다.
이 지시자에 설정되는 사용자와 그룹명은 실제 서버에 존재하는 사용자와 그룹명이어야 합니다.
웹문서 루트 디렉토리를 지정합니다. 인덱스 페이지가 저장되는 장소입니다.
아파치 서버가 접근하는 각 디렉토리에 어떤 서비스와 기능들을 허용 또는 삭제할 것인가를 설정합니다.
각 지시자들의 의미는 아래와 같습니다.
<Options 지시자>
옵션
| 설명
|
None
| 아무 옵션을 사용하지 않음
|
All
| 모든 옵션을 사용함
|
Indexes
| 웹사이트를 접속하였을 때 index.html이 없는 경우 웹서버 스스로 그 디렉토리의 파일들을 보여줄 것인가를 결정함. 보안상 사용하지 않는 것이 좋음
|
FollowSymLinks
| 서버가 디렉토리 안의 심볼릭 링크를 따를 것인지 결정
|
Includes
| 서버측의 SSI를 허용할 것인지 결정
|
ExecCGI
| 디렉토리 이하에 있는 CGI 스크립트 실행 허가
|
IncludesNOEXEC
| SSI 허용하지만, #exec명령과 스크립트 #incllude 불허
|
SymLinksIfOwnerMatch
| 대상 파일 또는 디렉토리가 심볼릭 링크 소유권자와 같은 소유권을 보유할 때 심볼릭 링크를 따르도록 지정
|
MultiViews
| 클라이언트 브라우저 기능에 따라 내용을 다르게 보냄
|
<AllowOverride 지시자>
설명
|
웹문서 디렉토리에서 접근제한 설정파일인 .htaccess 파일을 작동시킬 것인지 여부를 결정 None으로 설정시 .htaccess파일을 읽지 않음 웹서버에 사용자의 접근을 제한하고자 한다면 AllowOverride All로 정책을 준 후에 .htaccess파일을 생성
|
<Order 지시자>
옵션
| 설명
|
Order allow, deny
| 먼저 허용해 주고 나서 거부하는 순으로 작동
|
Order deny, allow
| 먼저 거부하고 나서 허용하는 순으로 작동 서버에 특정 호스트만 접근할 수 있도록 하고자 할 때 사용
|
<Allow from all / Deny from all >
옵션
| 설명
|
Allow from all
| 모든 호스트로부터의 요청을 허가
|
Deny from all
| 모든 호스트로부터의 요청을 거부
|
지정된 순서대로 html문서를 실행하여 클라이언트에 전달합니다.
지정되는 웹문서들은 반드시 웹서버 디렉토리에 존재해야 합니다.
■ 추가 설정
apache 2.2.x 버전에서는 모듈별로 별도의 파일로 구분되어 Include 지시자를 통하여
읽어올 수 있도록 세분화 되어 있습니다.
apache/conf/extra/ 디렉토리에 존재하는 설정파일 및 설명은 아래와 같습니다.
파일명
| 설명
|
httpd-autoindex.conf
| 자동 인덱스 기능과 알리어스, 아이콘 관련 설정
|
httpd-dav.conf
| WebDev 관련 설정
|
httpd-info.conf
| 아파치 웹 서버 상황 및 환경설정 관련
|
httpd-default.conf
| 기본 지시자 설정
|
httpd-mpm.conf
| 프로세스 설정
|
httpd-multi-ordoc.conf
| 서버 오류에 관련 설정
|
httpd-ssl.conf
| SSL 관련 설정
|
httpd-userdir.conf
| 사용자 디렉토리 관련 설정
|
httpd-vhosts.conf
| 가상호스트에 관련된 설정
|
1. 아파치 기본 설정 ( httpd-default.conf )
클라이언트가 접속한 후 GET 요청을 받을 때 까지 기다리는 시간(/sec)
이 시간을 초과하게 되면 클라이언트 접속을 끊어버립니다.
한번 연결에 대하여 한번 이상의 요청을 허용할 것인가 아닌가의 여부를 결정합니다.
연결되어 있는 상태에서 여러 개의 요청을 한번에 받아 처리하게 되면 속도 면에서 잇점이 있습니다.
하지만 최대 접속 한계에 도달하였을 때 새로운 접속은 다른 접속이 끊어질 때 까지 대기해야하는 단점도 존재합니다.
접속동안 허용할 최대 요청 회수를 지정합니다.
같은 클라이언트가 같은 접속방법으로 다음 요청을 했을때 기다리는 시간을 설정합니다.
보안상 설정값은 짧게 설정하는 것이 좋습니다.
아파치 응답 헤더를 어디까지 보여줄 것인지를 설정하는 지시자입니다.
이 지시자의 인수로는 아래와 같습니다.
인수
| 설명
|
Prod
| 아파치 정보만 보여줌 ex) Apache
|
Major
| 아파치 주버전 정보까지 보여줌 ex) Apache/2
|
Minor
| 아파치 하위버전 정보까지 보여줌 ex) Apache/2.0
|
Min
| 아파치 모든버전 정보를 보여줌 ex) Apache/2.0.43
|
OS
| 아파치 버전과 운영체제 정보를 보여줌 ex)Apache/2.0.43 (Unix)
|
Full
| 아파치 버전, 운영체제, 모듈정보 모두를 보여줌 ex)Apache/2.0.43 (Unix) PHP 4.2.3
|
2. 서버 풀 관리 ( httpd-mpm.conf )
* 아파치의 풀 관리 방식으로는 두가지 형태가 주로 사용됩니다.
하나는 prefork MPM 방식으로 프로세스를 미리 분기하여 쓰레드가 한개의 자식 프로세스를 여러개 사용하는 방식입니다.
prefork 방식은 쓰레드에 안전하지 않는 PHP등을 사용하기에 적합합니다.
worker MPM 방식은 여러 자식 프로세스가 각각 여러개의 쓰레드를 사용하며, prefork 방식에 비해 적은 메모리를 사용하여
확장성을 요구하는 곳에 적합합니다.
각 방식별 옵션은 아래와 같습니다.
Prefork MPM 지시자
| |
StartServers
| 몇 개의 자식 프로세스를 미리 띄워놓을 것인가를 결정
|
MinSpareServers, MaxSpareServers
| 아파치서버는 얼마나 많은 프로세스들이 요청을 기다리고 있는 지 주기적으로 점검을 하게 되는데, 이때 Min값보다 작으면 프로세스를 이 값으로 설정한 만큼 다시 만들어내고, Max값보다 많아지게 되면 이 값으로 설정한 만큼 일부 프로세스를 종료
|
MaxClients
| 클라이언트들이 동시에 최대로 접속했을 때 실행 가능한 최대 프로세스의 수를 지정 너무 작게 설정하면 클라이언트들이 무한정 기다리는 상태가 될 수도 있음 최대 클라이언트 수를 증가시키기 위해서는 ServerLimit 값도 증가시켜주어야 함
|
MaxRequestsPerChild
| 자식프로세스가 죽기 전에 처리할 수 있는 요청개수를 지정,예기치 않은 메모리 누수로 인하여 프로세스가 소모하는 메모리 양을 제한할 수도 있고, 서버로그가 감소할 때 프로세스 수를 감소시키는 효과
|
Worker MPM 지시자
| |
StartServers
| 처음에 실행될 프로세스 개수
|
MinSpareThreads, MaxSpareThreads
| 지시자에 설정된 값 만큼 쓰레드를 생성하거나 죽임
|
ThreadsPerChild
| 각 자식 프로세스는 이 지시자에 의해서 설정된 값 만큼의 고정된 쓰레드를 생성
|
MaxClients
| 최대 동시에 클라이언트가 접속 가능한 쓰레드 수 설정 ServerLimit와 ThreadsPerChild를 곱한 값이 MaxClients 값과 같거나 커야 함
|
ServerLimit
| 캐시될 프로세스의 최대 개수
|
3. 가상호스트 설정 ( httpd-vhosts.conf )
가상호스트란 한대의 웹 서버에서 여러개의 호스트를 이용, 여러 개의 홈페이지를 운영하는 방법입니다.
이 기능을 이용하면 독립적인 서버를 추가하지 않고서도 한 대의 웹 서버에서 또 다른 데몬의 동작 없이도
여러개의 도메인에 대한 웹 서비스를 제공할 수 있습니다.
단일 IP 주소로 여러개의 가상 호스트를 설정할 때 주의할 점은 가상 호스트를 위한 설정이라도
NameVirtualHost 지시자 다음에 반드시 메인서버에 대한 버추얼 호스트 지정을 먼저 선언해 주어야한다는 것 입니다.
메인 서버에 대한 버추얼 호스트 설정을 생략하게 되면 메인 서버의 도메인으로 접속할 때,
메인 서버로 접속이 이루어지지 않고 버추얼 호스트로 접속하게 되는 문제가 발생하게 됩니다.
VirtualHost 지시자
| |
ServerAdmin
| 서버 관리자 이메일 주소 설정
|
DocumentRoot
| 웹 문서 디렉토리 설정
|
ServerName
| 가상 호스트 도메인 이름 설정
|
ErrorLog, CustomLog
| 로그 오류 및 액세스 로그 파일 지정
|
이외에도 아파치에는 많은 설정 가능한 옵션들이 있습니다.
조금씩 알아가며 배워간다면 능숙한 서버관리자가 되는 길에 한결 가까워질 수 있지 않을까 생각합니다.
'기술자료 > 기술운영자료' 카테고리의 다른 글
Windows8, WindowsRT 소개자료 (1/2) (0) | 2016.03.20 |
---|---|
윈도우 서버 2012 출시 (0) | 2016.03.20 |
Windows Server 8 맛보기 ( MS Online Backup Service) (0) | 2016.03.20 |
Windows Server 8 Beta 겉보기 (0) | 2016.03.20 |
Windows Server 8 Beta 설치기 (0) | 2016.03.20 |