PHP 설치 후 Nginx 웹서버와 연동하기

Nginx는 PHP를 기본으로 사용하지 않도록 설정 값이 꺼져있기 때문에 PHP 설치후 Nginx 웹 서버와 연동하는 작업을 진행해야 Nginx를 통해 PHP가 실행됩니다.

다소 번거롭지만 수동으로 설정 파일들을 만져줘야 합니다.

먼저 Nginx와 PHP가 설치되어 있어야 합니다. 설치와 버전 확인은 다음 커맨드로 확인합니다.

ubuntu@ubuntu:~$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

ubuntu@ubuntu:~$ php -v
PHP 8.1.2-1ubuntu2.14 (cli) (built: Aug 18 2023 11:41:11) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2-1ubuntu2.14, Copyright (c), by Zend Technologies

PHP는 FastCGI로 설치해야 합니다. 일반 PHP에 추가로 설치하는 FastCGI Process Manager 서비스 패키지이므로 다음 커맨드로 설치합니다. 설치하면서 php-fpm 버전 정보가 표시됩니다. Nginx 사이트 설정을 할 때 필요합니다.

$ sudo apt install php-fpm

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  php8.1-fpm
Suggested packages:
  php-pear
The following NEW packages will be installed:
  php-fpm php8.1-fpm
...

설치된 php-fpm 버전은 php-fpm -v 커맨드로 확인할 수 있습니다. 커맨드 실행이 안되면 경로 설정이 되지 않은 것이므로 php-fpm 설치 후 재부팅을 하거나, 다음처럼 설치된 패키지 목록으로 확인할 수 있습니다.

apt list --installed | grep php

연동이 되지 않은 상태에서 웹브라우저로 웹사이트의 PHP 파일 경로를 접근하면 PHP 파일이 파싱되어 웹 페이지가 표시되는 것이 아니라 PHP 파일이 다운로드 됩니다.

워드프레스 웹사이트 설정 파일 수정

Nginx 기본 웹사이트에 워드프레스를 설치하는 것을 기준으로 설명합니다.

텍스트 편집기로 Nginx 기본 웹사이트 설정 파일인 default를 엽니다.

vi /etc/nginx/sites-available/default

설정 파일 중간쯤에서 주석 처리된 다음 내용을 찾습니다.

        # pass PHP scripts to FastCGI server
        #
        #location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
        #       fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        #}

다음처럼 네개 행의 주석 표시(#)를 지워서 fastcgi로 PHP를 사용하도록 설정을 켭니다. 그리고 7행의 "php버전-fpm.sock" 문자열을 현재 설치된 PHP 버전에 맞게 버전 숫자를 변경합니다.(예: php8.1-fpm.sock)

        # pass PHP scripts to FastCGI server
        #
        location ~ \.php$ {
               include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
               fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        }

설정 파일이 이상 없는지 테스트 커맨드로 확인합니다. "test is successful" 이라고 나오면 정상 적용된 것입니다.

sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

php-fpm과 Nginx 서비스를 다시 시작합니다. php-fpm은 설치한 버전명을 표시해야 합니다. 오류가 발생하면 php-fpm 버전을 다시 확인하시기 바랍니다.

sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx

/var/www/html 디렉토리 안에 텍스트 편집기로 "phpinfo.php" 파일을 새로 만든 후 다음 내용을 입력하고 저장합니다.

<?php
phpinfo();
?>

웹 브라우저에서 http://IP주소/phpinfo.php 를 입력해서 PHP 정보 페이지가 출력되면 정상 연결된 것입니다.