[우분투] PHP-FPM과 mpm_event 활성화하기

우분투에서 PHP를 설치하면 기본적으로 아파치의 mod_php를 사용한다. 아파치 자체에 php 엔진 해석기가 달려 있는 것이다.

그러나 아파치는 웹서버로만 사용하고 웹 어플리케이션 서버는 PHP-FPM으로만 사용할 수도 있다. 이렇게 하면 메모리와 프로세스를 더 효율적으로 사용할 수 있다.

특히 대규모 트래픽을 처리해야 하는 경우에는 PHP-FPM이 더 유리하다고 한다.

이에 더해 mpm_event 모듈까지 쓰면 효율성이 더 좋다. mpm은 Multi Process Module의 약자인데, 다중 접속 처리를 뜻한다. 기존에는 Prefork 모듈을 사용했으나 성능이 더 개선된 Event 모듈이 나왔다. 아파치 2.4부터 기본값이다. (자세한 내용은 아파치 MPM 유형 설명 – prefork, worker, event / mpm_event + PHP FPM 활성화 방법을 참고하라.)

mod_php와 mpm_event 모듈을 같이 쓰면 thread safe하지 않은 문제가 있다고 하는데 PHP-FPM을 쓰면 그런 문제가 없으니 그냥 mpm_event를 사용하는 것이 좋다. 특별한 다른 이유가 없다면 사용하자.

명령어

mpm_prefork 모듈을 끄고 mpm_event 모듈을 활성화하는 명령은 다음과 같다.

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event

반대로 mpm_prefork 모듈을 켜고 mpm_event 모듈을 끄는 명령은 다음과 같다.

sudo a2dismod mpm_event
sudo a2enmod mpm_prefork

mpm_event + PHP FPM 활성화

아래는 명령어를 한 번에 묶은 것이다.

아래 명령에서 php 버전 넘버를 자신의 환경에 맞게 고쳐야 한다는 점을 유념하자.

sudo apt install php-fpm libapache2-mod-fcgid
sudo a2dismod php8.3
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo a2enconf php8.3-fpm
sudo a2enmod proxy
sudo a2enmod proxy_fcgi
sudo apachectl configtest
sudo systemctl restart apache2

점검

sudo apachectl -M | grep 'mpm'
# mpm_event_module (shared)
sudo apachectl -M | grep 'proxy'
# proxy_module (shared)
# proxy_fcgi_module (shared)

prefork + mod_php로 되돌리기

위 명령의 역순이다.

sudo a2dismod proxy_fcgi
sudo a2dismod proxy
sudo a2disconf php8.3-fpm
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
sudo a2enmod php8.3
sudo apt remove php-fpm libapache2-mod-fcgid

점검

sudo apachectl -M | grep 'mpm'
# mpm_prefork_module (shared)

👇 카테고리 글 목록

대표글

댓글 남기기