본문 바로가기

리눅스

[draft] 우분투에서 Apache와 PHP-FPM을 설치하고 연동하는 방법

728x90

우분투에서 Apache와 PHP-FPM을 설치하고 연동하는 방법

테스트 환경

$ lsb_release -d
Description:	Ubuntu 22.04.2 LTS

1. Apache 설치

Apache 웹 서버를 설치합니다.

sudo apt update
sudo apt install -y apache2
apache2 -v

ServerName 지시어 편집

  • ServerName localhost 추가
sudo sed -i '$ a ServerName localhost' /etc/apache2/apache2.conf
  • ServerName 지시어가 이미 존재할 경우 수정
sudo sed -i 's/^ServerName.*/ServerName localhost/' /etc/apache2/apache2.conf

Apache 모듈 확인

  • 활성화된 모듈을 확인합니다.
sudo apache2ctl -M
더보기

---

Apache 모듈 목록

sudo apache2ctl -M
Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 filter_module (shared)
 mime_module (shared)
 mpm_event_module (shared)
 negotiation_module (shared)
 reqtimeout_module (shared)
 setenvif_module (shared)
 status_module (shared)

---

2. PHP-FPM 설치

PHP와 PHP-FPM을 설치합니다.

sudo apt install -y php8.3 php8.3-fpm
php -v

PHP(PHP-FPM) 모듈 확인

  • 활성화된 모듈을 확인합니다.
sudo php -m
sudo php-fpm8.3 -m
더보기

---

PHP(PHP-FPM) 모듈 확인

sudo php -m
[PHP Modules]
calendar
Core
ctype
date
exif
FFI
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
openssl
pcntl
pcre
PDO
Phar
posix
random
readline
Reflection
session
shmop
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
Zend OPcache
zlib

[Zend Modules]
Zend OPcache
sudo php-fpm8.3 -m

---

3. Apache와 PHP-FPM 연동

Apache에서 PHP-FPM을 사용하기 위해 libapache2-mod-fcgid 모듈을 설치해야 합니다.

sudo apt install libapache2-mod-fcgid

Apache의 모듈을 활성화합니다.

sudo a2enmod actions fcgid
Enabling module actions.
Module fcgid already enabled
To activate the new configuration, you need to run:
  systemctl restart apache2
sudo a2enmod proxy_fcgi proxy
Considering dependency proxy for proxy_fcgi:
Enabling module proxy.
Enabling module proxy_fcgi.
Module proxy already enabled
To activate the new configuration, you need to run:
  systemctl restart apache2

활성화된 모듈 확인

$ apache2ctl -M | egrep 'actions|fcgid|proxy|proxy_fcgi'
 actions_module (shared)
 fcgid_module (shared)
 proxy_module (shared)
 proxy_fcgi_module (shared)

4. PHP-FPM Pool 설정

PHP-FPM의 pool 설정 파일을 열고 필요에 따라 설정을 조정합니다.

기본 설정 파일은 /etc/php/8.3/fpm/pool.d/www.conf입니다.

sudo vim /etc/php/8.3/fpm/pool.d/www.conf
sudo tee /etc/php/8.3/fpm/pool.d/www.conf <<EOF
[www]
user = www-data
group = www-data

listen = /run/php/php8.3-fpm.sock
listen.owner = www-data
listen.group = www-data

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
EOF

5. Apache 가상 호스트 설정

Apache의 가상 호스트 파일을 수정하여 PHP 파일을 처리하도록 설정합니다.

sudo vim /etc/apache2/sites-available/000-default.conf
sudo tee /etc/apache2/sites-available/000-default.conf <<EOF
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    
    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    # PHP-FPM 설정
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
    </FilesMatch>
    
    ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
EOF

가상 호스트 활성화

더보기

---

example.sangchul.kr 가상 호스트 설정 파일 생성

vim /etc/apache2/sites-available/example.sangchul.kr.conf

가상 호스트 활성화

sudo a2ensite example.sangchul.kr.conf

Apache 웹 서버 재로드

sudo systemctl reload apache2

---

6. PHP-FPM 서비스 시작

PHP-FPM 서비스를 시작하고 활성화합니다.

sudo systemctl restart php8.3-fpm

PHP-FPM 서비스 상태 확인

sudo systemctl status php8.3-fpm

7. Apache 서비스 재시작

Apache 서비스를 재시작하여 변경 사항을 적용합니다.

sudo systemctl restart apache2

Apache 서비스 상태 확인

sudo systemctl status apache2

8. PHP 테스트

웹 서버의 문서 루트에 info.php 파일을 생성하여 PHP가 제대로 작동하는지 확인합니다.

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

브라우저에서 http://your_server_ip/info.php에 접속하여 PHP 정보 페이지가 나타나는지 확인합니다.

http://your_server_ip/info.php

phpinfo

9. Apache, PHP(PHP-FPM) 패키지 삭제

sudo apt purge -y $(dpkg -l | grep apache2 | awk '{print $2}' | tr '\n' ' ')
sudo apt purge -y $(dpkg -l | grep php | awk '{print $2}' | tr '\n' ' ')
sudo apt autoremove -y

 

Apache와 PHP-FPM이 설치되고 연동하였습니다.

 

728x90