서버 설정 · 4 min read · Jan 02, 2026

Apache2 mpm-peruser로 Debian Etch에서 별도의 UID/GID로 Vhosts 실행하기 - 페이지 2

3 apache2-mpm-peruser 구성하기

이 예제에서는 기본 Debian Apache vhost를 사용할 것입니다 (구성은 /etc/apache2/sites-available/default에서 찾을 수 있습니다) 문서 루트는 /var/www입니다 (다른 vhosts가 있는 경우 상황에 맞게 조정하십시오), 그리고 이 vhost는 사용자 web1_admin 및 그룹 web1으로 실행되기를 원합니다.

사용자와 그룹이 이미 존재하지 않는 경우, 다음과 같이 생성할 수 있습니다:

groupadd web1  
useradd -s /bin/false -d /home/web1_admin -m -g web1 web1_admin

이제 주요 Apache 구성 파일 (/etc/apache2/apache2.conf)을 열고 다양한 MPM(프리포크, 워커 등)이 구성된 섹션을 찾아 다음과 같은 내용을 추가합니다:

vi /etc/apache2/apache2.conf

| [...] ServerLimit 256 MaxClients 256 MinSpareProcessors 2 MaxProcessors 10 MaxRequestsPerChild 1000 # 이 많은 초 후에 유휴 프로세서를 종료합니다 (0은 비활성화) IdleTimeout 60 # 이 많은 초 후에 멈춘 프로세스를 종료합니다 (0은 비활성화) ExpireTimeout 300 # nobody로 실행되는 몇 개의 멀티플렉서 프로세스를 설정합니다 Multiplexer nobody nogroup Multiplexer nobody nogroup Multiplexer nobody nogroup # Processor # chroot는 선택 사항입니다 Processor web1_admin web1 [...] |

Processor 라인은 중요합니다 - Apache에 어떤 사용자/그룹 쌍이 vhost를 실행할 수 있는지를 알려줍니다. 사용자 web2_admin 및 그룹 web2로 실행하려는 두 번째 vhost가 있는 경우, 두 번째 Processor 라인을 추가하면 됩니다. 선택적으로 디렉토리를 추가하여 사용자/그룹을 chroot할 수도 있습니다:

| [...] Processor web1_admin web1 /var/www [...] |

vhosts도 수정해야 합니다, 예를 들어 다음과 같이:

vi /etc/apache2/sites-available/default

| [...] # 이것은 Processor 라인과 일치해야 합니다 ServerEnvironment web1_admin web1 # 이것들은 선택 사항입니다 - 위에 지정된 값으로 기본값 설정 #MinSpareProcessors 4 #MaxProcessors 20 [...] |

이것은 컨테이너 안에 있어야 합니다. ServerEnvironment 라인은 mpm-peruser 구성의 Processor 라인 중 하나와 정확히 일치해야 합니다 (Processor 라인에서 chroot를 정의한 경우, 여기에서도 chroot를 나열해야 합니다, 예를 들어:

| [...] ServerEnvironment web1_admin web1 /var/www [...] |

). 이는 이 특정 vhost가 어떤 사용자 및 그룹 아래에서 실행되고 있는지를 정의합니다.

그 후 Apache를 재시작합니다:

/etc/init.d/apache2 restart

4 libapache2-mod-php5 재구성하기

이제 libapache2-mod-php5를 재구성해 보겠습니다. 먼저 몇 가지 필수 패키지를 설치합니다:

apt-get install apache-dev bison chrpath firebird2-dev flex freetds-dev libbz2-dev libc-client-dev libcurl3-openssl-dev libfreetype6-dev libgcrypt11-dev libgd2-xpm-dev libjpeg62-dev libmcrypt-dev libmhash-dev libmysqlclient15-dev libncurses5-dev libpam0g-dev libpng12-dev libpspell-dev librecode-dev libsnmp9-dev libsqlite0-dev libt1-dev libtidy-dev libwrap0-dev libxmltok1-dev libxml2-dev libxslt1-dev re2c unixodbc-dev automake1.4 libtool shtool

그런 다음 PHP5 소스 패키지를 가져옵니다…

cd /usr/src  
apt-get source php5

… 그리고 소스 디렉토리로 이동합니다:

cd php5-5.2.0

이제 PHP5에 apache2-mpm-prefork 또는 apache2-mpm-itk 또는 apache2-mpm-peruser를 종속성으로 수용한다고 알려야 합니다. debian/rules를 엽니다:

vi debian/rules

파일의 끝 부분에서 다음과 같은 줄을 찾을 수 있습니다:

| [...] echo "apache2:Depends=apache2-mpm-prefork (>> 2.0.52) | apache2-mpm-itk, apache2.2-common" >>debian/libapache2-mod-php5.substvars [...] |

이를 다음과 같이 변경합니다:

| [...] echo "apache2:Depends=apache2-mpm-prefork (>> 2.0.52) | apache2-mpm-itk | apache2-mpm-peruser, apache2.2-common" >>debian/libapache2-mod-php5.substvars [...] |

그런 다음

dpkg-buildpackage

를 실행하여 PHP5 패키지를 재구성합니다.

이제 우리가 무엇을 얻었는지 확인해 보겠습니다:

cd /usr/src  
ls -l
server1:/usr/src# ls -l  
total 28940  
-rw-r--r--  1 root src    11392 2007-10-03 19:02 apache2-mpm-itk_2.2.3-01-2.diff.gz  
-rw-r--r--  1 root src      664 2007-10-03 19:02 apache2-mpm-itk_2.2.3-01-2.dsc  
-rw-r--r--  1 root src    29071 2006-10-31 00:04 apache2-mpm-itk_2.2.3-01.orig.tar.gz  
drwxr-xr-x  5 root root    4096 2008-08-16 13:40 apache2-mpm-peruser-2.2.3-01  
-rw-r--r--  1 root src      353 2008-08-16 13:36 apache2-mpm-peruser_2.2.3-01-1.dsc  
-rw-r--r--  1 root src      710 2008-08-16 13:40 apache2-mpm-peruser_2.2.3-01-1_i386.changes  
-rw-r--r--  1 root src   165438 2008-08-16 13:40 apache2-mpm-peruser_2.2.3-01-1_i386.deb  
-rw-r--r--  1 root src    50282 2008-08-16 13:36 apache2-mpm-peruser_2.2.3-01-1.tar.gz  
-rw-r--r--  1 root root 6364431 2008-03-22 10:35 apache2.tar.gz  
-rw-r--r--  1 root src  2413278 2008-08-16 14:30 libapache2-mod-php5_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src  2412784 2008-08-16 14:30 libapache-mod-php5_5.2.0-8+etch11_i386.deb  
drwxr-xr-x 20 root root    4096 2008-08-16 14:29 php5-5.2.0  
-rw-r--r--  1 root src     1040 2008-08-16 14:30 php5_5.2.0-8+etch11_all.deb  
-rw-r--r--  1 root src   914599 2008-08-16 13:55 php5_5.2.0-8+etch11.diff.gz  
-rw-r--r--  1 root src     1741 2008-08-16 13:55 php5_5.2.0-8+etch11.dsc  
-rw-r--r--  1 root src     4768 2008-08-16 14:30 php5_5.2.0-8+etch11_i386.changes  
-rw-r--r--  1 root src  8583491 2006-11-07 13:34 php5_5.2.0.orig.tar.gz  
-rw-r--r--  1 root src  4757790 2008-08-16 14:30 php5-cgi_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src  2397698 2008-08-16 14:30 php5-cli_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src   215284 2008-08-16 14:30 php5-common_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    24478 2008-08-16 14:30 php5-curl_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src   344780 2008-08-16 14:30 php5-dev_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    33426 2008-08-16 14:30 php5-gd_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    34508 2008-08-16 14:30 php5-imap_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    44362 2008-08-16 14:30 php5-interbase_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    17250 2008-08-16 14:30 php5-ldap_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    12844 2008-08-16 14:30 php5-mcrypt_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src     5052 2008-08-16 14:30 php5-mhash_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    64620 2008-08-16 14:30 php5-mysql_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    34060 2008-08-16 14:30 php5-odbc_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    50482 2008-08-16 14:30 php5-pgsql_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src     8632 2008-08-16 14:30 php5-pspell_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src     4774 2008-08-16 14:30 php5-recode_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    11308 2008-08-16 14:30 php5-snmp_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    34160 2008-08-16 14:30 php5-sqlite_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    18414 2008-08-16 14:30 php5-sybase_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    16482 2008-08-16 14:30 php5-tidy_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    36458 2008-08-16 14:30 php5-xmlrpc_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    12258 2008-08-16 14:30 php5-xsl_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src   311360 2008-08-16 14:30 php-pear_5.2.0-8+etch11_all.deb  
server1:/usr/src#

새 PHP5 패키지를 다음과 같이 설치할 수 있습니다:

dpkg -i php5*.deb  
dpkg -i libapache2-mod-php5_5.2.0-8+etch11_i386.deb

이번에는 apache2-mpm-prefork 패키지가 누락되었다고 불평하지 않을 것입니다. 왜냐하면 apache2-mpm-peruser가 설치되어 있어 새 패키지에 충분하기 때문입니다.

남은 것은 PHP5 모듈을 활성화하고 Apache를 재시작하는 것입니다:

a2enmod php5  
/etc/init.d/apache2 restart

이제 브라우저에서 phpinfo(); 페이지를 다시 열어보십시오 - 이제 Loaded Modules 행 아래의 apache2handler에서 prefork 대신 peruser가 표시되어야 합니다:

5 링크

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.