리눅스마스터1급 : 아파치(Apache) 환경 설정4편
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,153 조회
- 0 추천
- 목록
본문
리눅스마스터1급 : 아파치(Apache) 환경 설정4편
⑧ conf/extra/httpd-mpm.conf
아파치웹서버의 MPM specific에대한 설정파일이다.
자세히 살펴보자.
|
|
|
| <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> |
|
|
|
|
∙StartServers 5
아파치 웹데몬이 구동될 때 자식프로세스를 몇 개로 시작 할 것인가를 지정한다.
시작할 때 동시에 띄우게 될 자식프로세스의 개수이다.
그러나 웹데몬이 구동되고 난 뒤엔 시스템의 상황(부하율등)에 따라 위에서 설정한 MinSpareServers와 MaxSpareServers의 설정에 의해 대부분 합리적인 개수만큼 동적으로 생성되었다가 죽기도 하므로 큰 의미를 가지는 것은 아니다.
여기서 의미하는 프로세스 또한 아파치의 자식프로세스를 의미한다.
∙MinSpareServers 5MaxSpareServers 10
아파치웹서버는 성능향상과 빠른 응답속도를 위해 유휴서버(현재 서비스대기 중인 프로세스)를 만들게 되는데 이 유휴(대기)프로세스의 개수는 시스템의 상황에 따라 달라지게 된다.
유휴서버가 MinSpareServers의 개수(5)보다 적게되면 유휴서버를 추가로 생성을 하게 되며 유휴서버의 개수가 MaxSpareServers의 개수(10)보다 많게 되면 유휴서버가 10개정도가 될 때까지 유휴서버를 죽이게 된다.
즉 유휴서버의 개수를 적절히 조절하기 위한 것이라 생각하면 된다.
흔히 이 설정을 다음과 같이 오인 하는 경우가 있다.
즉 “MinSpareServers에 설정된 개수 이하의 아파치 프로세스는 생성되지 않는다.
그리고 MaxSpareServers에 설정된 개수 이상의 아파치 프로세스는 생성되지 않는다.
” 라고 잘못 생각하는 사람이 있다.
이 설정의 정확한 의미를 다시한번 설명하면 아파치웹서버에 부하가 적어서 MinSpareServers 개수(여기서는 5개)보다 적었을 경우에는 최소한 이 개수(5개)만큼은 유지하려고 아파치는 노력한다.
그리고 방문자수가 많아져서 아파치웹서버의 프로세스의 갯수가 많아질 경우에 MaxSpareServers에서 설정된 아파치웹서버의 자식프로세스의 개수 이상 생성되었을 경우에 이 개수(10개)이하로 줄이려고 아파치는 노력하게된다는 의미이다.
즉 절대적인 수치가 아니라는 점을 이해하기 바란다.
여기서 의미하는 프로세스 또한 아파치의 자식프로세스를 의미한다.
∙MaxClients 150
실행가능한 최대 아파치 자식프로세스의 개수를 지정해둔 것이다.
(MaxClients: maximum number of server processes allowed to start) 동일한 MaxClients지시자이지만 이 뒤에서 설명하는 mpm_worker_module환경에서는 전혀 다른 의미가 된다.
두가지를 비교하기 바란다.
∙MaxRequestsPerChild 30
아파치웹서버의 자식프로세스들이 생성할 수 있는 클라이언트들의 요청 개수를 제한하는 설정이다.
만약 자식프로세스가 이 값만큼의 클라이언트요청을 받았다면 이 자식프로세스는 자동으로 죽게된다.
이 값이 0으로 설정이 된다면 자식프로세스가 자동으로 죽는일은 없을 것이다.
그러나 0아닌 다른 값으로 설정함으로서 프로세스의 수를 적절히 조절하여 시스템의 부하조절과 자원낭비를 어느정도 예방 할 수 있다.
운용하는 서버사양이 좋다면 아파치웹서버의 신뢰도를 높이기 위하여 이 설정을 좀 더 높게 설정을 하여도 괜찮을 것 같다.
여기서 의미하는 프로세스 또한 아파치의 자식프로세스를 의미한다.
|
|
|
| <IfModule mpm_worker_module> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> |
|
|
|
|
∙StartServers
시작시에 초기화되는 서버 프로세스의 개수(initial number of server processes to start)
∙MaxClients
동시 연결가능한 클라이언트의 최대 개수(maximum number of simultaneous client connections)를 의미함. 아파치웹서버에 접근할 수 있는 클라이언트의 최대 갯수는 이 상한값으로 제한한다.
여기서 지정한 개수이상의 클라이언트의 요청이 생긴다면 아파치는 응답하지 않고 클라이언트의 요청을 무시한다.
이를 제한하는 이유는 시스템의 자원을 아파치웹서버가 무한정 차지하는 것을 방지하기 위한 것이다.
∙MinSpareThreads
새로운 방문자를 바로 처리하기위하여 대기하고있는 최소 스레드(thread)개수(minimum number of worker threads which are kept spare)
∙MaxSpareThreads새로운 방문자를 바로 처리하기 위하여 대기하고 있는 최대 스레드(thread)개수(maximum number of worker threads which are kept spare)
∙ThreadsPerChild개별 자식프로세스가 지속적으로 가질 수 있는 스레드의 개수(constant number of worker threads in each server process)
∙MaxRequestsPerChild자식프로세스가 서비스할 수 있는 최대 요청 개수(maximum number of requests a server process serves)
⑨ conf/extra/httpd-userdir.conf
사용자 홈디렉토리에 관한 설정파일이다.
이 설정을 하기 위해서는 mod_userdir 모듈이 필요하다.
지시자에 대해 자세히 살펴보자.
|
|
|
| UserDir public_html |
|
|
|
|
하나의 아파치웹서버에서 여러 사용자의 홈페이지를 별도로 만들어 사용할 때 필요한 개별 가입자의 홈페이지 디렉토리이름이다.
예를들어 sulinux이란 계정가입자의 홈페이지는 "http://www.sulinux.net/~sulinux"라는 홈페이지를 가지고 있을 때 sulinux의 계정에서 "public_html"이란 디렉토리가 홈디렉토리가 되어 이 디렉토리에 있는 초기문서 index.html을 불러서 보여주게 된다.
|
|
|
| <Directory "/home/*/public_html"> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> |
|
|
|
|
모든 계정사용자의 홈페이지디렉토리(public_html)의 접근에 대한 옵션을 지정한 것이다.
이부분에 대한 설정의 의미를 정확히 이해 하도록 하자. 즉 개별 사용자의 설정적용이 되므로 사용자들의 CGI실행이 안된다고 할 경우에는 이 부분의 내용을 우선적으로 살펴보아야 한다.
즉 앞서도 설명했듯이 사용자의 디렉토리내에서 CGI의 실행이 안된다고 할 경우에는 이 부분의 Options에 ExecCGI가 설정이 되었나를 확인해 보아야 한다.
⑩ conf/extra/httpd-vhosts.conf
아파치 가상호스트에 대한 설정파일이다.
다음과 같이 살펴보자.
|
|
|
| NameVirtualHost *:80 |
|
|
|
|
이제 아파치설정 파일의 마지막 설정부분인 가상호스트 설정부분이다.
아파치 웹서버에 여러개의 도메인이나 호스트네임을 설정하여 관리하고자 한다면 <VirtualHost>부분을 설정해 줘야 한다.
가상호스트에 대한 정보는 “http://httpd.apache.org/docs/아파치버전/vhosts/”를 참조해 보면 좀 더 자세한 정보를 얻을 수 있다.
그리고 "httpd -S"를 실행함으로써 가상호스트의 설정에 대한 점검을 할 수 있다.
이름기반(name-based)가상호스트를 사용한다면 적어도 한 개이상의 IP Address를 정의할 필요가 있다.
두개 이상의 웹사이트를 하나의 아파치에서 사용하려면 즉 가상호스트를 설정하여 사용하려면 위와 같이 설정하고, 가상호스트 설정을 한다.
가상호스트를 설정하는 방법에는 몇가지가 있으나 가장 일반적인 방법은 이름기반의 가상호스트 설정이다.
간단한 가상호스트 설정 예를 보면 다음과 같다.
|
|
|
| <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot "/usr/local/apache/docs/dummy-host.example.com" ServerName dummy-host.example.com ServerAlias www.dummy-host.example.com ErrorLog "logs/dummy-host.example.com-error_log" CustomLog "logs/dummy-host.example.com-access_log" common </VirtualHost> |
|
|
|
|
위는 간단한 가상호스트의 예를 보여준 것이다.
∙ServerAdmin : 해당 가상호스트를 관리하는 관리자 Email주소.
∙DocumemtRoot : 해당 가상호스트의 홈페이지디렉토리 위치.
∙ServerName : 해당 가상호스트의 도메인명.
∙ServerAlias : ServerName에서 지정한 도메인에 대한 별칭을 추가로 사용하고자 할 때에 설정하는 별칭설정. 대부분 서브도메인등에서 사용함.
∙ErrorLog : 해당 가상호스트의 웹에러파일의 위치.
∙CustomLog : 해당 가상호스트의 웹로그파일의 위치.
위와 같이 설정할 수 있다.
관련자료
-
이전
-
다음