통합검색

Linux

[centOS] 아파치(Apache 2.4.6) 설치 후 기본 환경 설정 (httpd.conf & mpm-worker)

  • 2022.12.12 16:51:09
 


CentOS에서 Yum으로 Apache 2.4.6 설치 후 초기 설정 방법을 안내한다.
아래 안내된 초기 설정은 여러 사이트 운영을 위해 userdir로 여러 Virtualhost를 운영하는 환경하의 설정이다.


[!]httpd.conf 설정[/!] 

과거 httpd.conf 에서 userdir까지 모든 설정이 이뤄진 반면, apache 2.4.6 버전은 httpd.conf 기본 설정 파일과 userdir 설정 파일이 분리되어 있다.
먼저, httpd.conf 기본 설정을 진행한다.
 
#vi /etc/httpd/conf/httpd.conf

vi 에디터로 httpd.conf 파일을 연다.
 
NameVirtualHost *:80

앞서 Virtualhost 활성화를 위한 환경임을 언급했다.
Virtualhost 활성화를 위해 NameVirtualHost 를 찾아 주석을 해제한 뒤 위와 같이 변경한다.
80번 기본 포트로 들어온 트래픽을 VirtualHost로 유인 시키기 위한 설정이다.
 
ServerAdmin admin@mydomain.com

아파치 구동에 반드시 필요한 설정은 아니지만, 여러 이유로 웹서비스가 정상 구동하지 않는 경우
브라우저상에서 노출될 서버관리자의 이메일 주소를 설정한다.
 
DirectoryIndex index.html index.php

Apache에 PHP가 설치된 경우 index.php를 index 페이지로 인식시키기 위해
위와 같이 index.php를 추가한다.
 
AddType application/x-httpd-php .html .htm .php .inc
AddType application/x-httpd-php-source .phps

마찬가지로 아파치에서 PHP 구동을 위해 AddType에 위와 같이 추가한다.



[!]userdir.conf 설정[/!] 

Virtualhost 환경 구축을 위해 userdir.conf 파일을 수정한다.
 
#vi /etc/httpd/conf.d/userdir.conf

vi 에디터로 conf.d 하위에 있는 userdir.conf 파일을 연다.
참고로. conf.d 하위에 어떠한 이름의 파일을 넣던 확장자가 .conf 인 파일은 데몬에서 자동으로 인클루드 하여 읽게들이게 된다.
즉, 반드시 userdir.conf 일 필요는 없으니 입맛에 맞게 적절히 파일명을 변환하여 사용하여도 된다.
 
UserDir public_html

userdir가 바라보는 기본 위치는 /home/ 이다.
다만, UserDir 설정은 /home/유저명/public_html 과 같이 하위 어떤 이름의 디렉토리를 홈디렉토리로 할 것인지 결정한다.
 
<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Options
    Options 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>

Virtualhost 호스팅 사용자들이 public_html 디렉토리 홈디렉토리 내에서 어느 정도의 권한까지 부여할 것인지 결정한다.
사용자는 .htaccess 나 PHP의 ini_set()등으로 아파치 환경설정 변경의 일부 권한을 행사하게 되는데,
해당 홈경로 내에서만 환경설정 변경을 행사할 수 있으며, 다른 홈디렉토리에는 영향을 주지 않는다.
보안을 고려하여 적절한 권한을 주도록 하자.



[!]vhosts.conf 설정 파일 추가[/!] 

httpd.conf 와 userdir.conf 파일내에는 virtualhost 설정을 위한 구문이 없었기 때문에,
conf.d 하위에 vhosts.conf 파일을 추가하여 virtualhost 환경을 구축해야 한다.
 
vi /etc/httpd/conf.d/vhosts.conf

vi 에디터로 conf.d 하위에 vhosts.conf 를 새로 만든다.
 
<VirtualHost *:80>
    ServerName chanyeongpark.com
    ....
</VirtualHost>

새로 만든 vhosts.conf 에 위와 같이 virtualhost 구문을 추가하여 호스팅 셋팅을 할 수 있다.



[!]mpm 방식을 worker로 변경[/!] 

어찌보면 가장 중요한 설정이 아닐까 싶다.
전통적 방식의 prefork방식의 mpm을 worker 방식으로 변경하는 방법이다.
prefork는 방문자마다 개별 프로세스를 생성하여 구동되는 방식으로 경우에 따라 프로세스 점유율이 과도하게 높게 나올 수 있지만,
worker 방식은 하나의 프로세스를 쓰레드 방식으로 여러 방문자가 나누어 사용하는 방식으로 접속자가 많은 사이트에서는 prefork에 비해 자원을 절약할 수 있다.
상황에 맞게 절절한 mpm을 선택하도록 한다.
 
#vi /etc/httpd/conf.modules.d/00-mpm.conf

vi 에디터로 conf.modules.d 하위에 있는 00-mpm.conf 파일을 연다.
 
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
LoadModule mpm_worker_module modules/mod_mpm_worker.so

기본으로 활성화된 prefork 라인을 주석처리 하여 prefork를 끈다음, worker.so 라인의 주석을 해제하여 활성화한다.
 
LoadModule mpm_worker_module modules/mod_mpm_worker.so
...
<IfModule mpm_worker_module>
    StartServers 2
    MaxClients 300
    MinSpareThreads 25
    MaxSpareThreads 75
    ThreadsPerChild 25
    MaxRequestsPerChild 0
</IfModule>

worker.so 바로 아래에 <IFModule mpm_worker_module> 구문을 추가하여 worker mpm을 설정한다.
서버 사양에 맞게 적절하게 동시접속자, 쓰레드 크기 등을 결정한다.