강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 아파치(Apache) 환경 설정4편

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터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

 

아파치 웹데몬이 구동될 때 자식프로세스를 몇 개로 시작 할 것인가를 지정한다.

 

 

 

시작할 때 동시에 띄우게 될 자식프로세스의 개수이다.

 

 

 

그러나 웹데몬이 구동되고 난 뒤엔 시스템의 상황(부하율등)에 따라 위에서 설정한 MinSpareServersMaxSpareServers의 설정에 의해 대부분 합리적인 개수만큼 동적으로 생성되었다가 죽기도 하므로 큰 의미를 가지는 것은 아니다.

 

 

 

여기서 의미하는 프로세스 또한 아파치의 자식프로세스를 의미한다.

 

 

 

 

 

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의 실행이 안된다고 할 경우에는 이 부분의 OptionsExecCGI가 설정이 되었나를 확인해 보아야 한다.

 

 

 

 

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 : 해당 가상호스트의 웹로그파일의 위치.

 

위와 같이 설정할 수 있다.

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  78 명