Ubuntu 22 에 php(php-fpm) 8.1 설치 및 최적화.

안녕하세요. 달소입니다.

이번편도 Ubuntu 22에서 워드프레스나 기타 php 사이트를 운영할 수 있도록 셋팅하는 준비단계인 php설치 단계입니다.

php-fpm은 nginx와 짝꿍처럼 동작하기때문에 nginx 설치가 안되어있다면 아래글을 참고해서 설치해주세요.

Ubuntu 22.04 LTS에 Nginx 최신버전 설치하기.
04/29 기준 nginx repo도 업뎃됐습니다~안녕하세요. 달소입니다. 이번글은 앞서 설치한 Ubuntu 22.04 LTS버전에 Nginx 최신버전을 설치하는 방법입니다. 기본적으로 Ubuntu의 기본 레포지터리는 매우 보수적이기때문에 안정적인 Stable 버전의 패키지만 지원해주는데요. Nginx는.. 해도해도 너무한 1.18버전입니다 ㅠㅠ 그래서 우분투의 레포에 Nginx 의 mainline/stable 버전의 레포를 등록해주고 nginx를 설치해주시면됩니다. 22/04/

이번 Ubuntu 22에서는 php버전이 기본 8.1로 되어있기 때문에 기존에 7.4로 설치하셨던 경험이있으시다면 숫자만 잘바꿔주셔도 됩니다 ㅎ

필수모듈까지 같이설치해보겠습니다~

PHP-FPM 설치하기

apt install -y php8.1-fpm php8.1-gd php-json php8.1-mysql php8.1-curl php8.1-mbstring php8.1-intl php-imagick php8.1-xml php8.1-zip

설치가 완료되면 php -v 명령어로 버전확인이 가능합니다.

php-fpm 설정하기

php가 동작하는 방식을 여기서는 두가지 방법중 하나로 선택할 수 있습니다.

먼저 소켓으로 통신하는 소켓통신 방법과
IP로 통신하는 IP통신 방법입니다.

이걸 공부했을때가 좀 오래됐는데.. IP가 낫다고 기억해서.. 저는 ip로 진행하겠습니다.

vi /etc/php/8.1/fpm/pool.d/www.conf

의 내용중에 listen= 을찾아서 수정하면 됩니다.

겸사겸사 최적화 설정도 진행하도록 하겠습니다.

PHP 최적화(프로세스)

vi /etc/php/8.1/fpm/pool.d/www.conf

들어가서 /pm = dynamic으로 찾고 아래와같이 수정해줍니다.

pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18

다시 재시작 시켜주고 프로세스를 확인해보면 이렇게 기본 프로세스가 12개로 되어있는걸 확인하실 수 있습니다.

PHP 최적화(메모리 및 업로드 크기)

vi /etc/php/8.1/fpm/php.ini

들어가서 차례 차례 수정해주면 됩니다. // 메모리, 용량은 용도에 맞춰

memory_limit = 1024M
post_max_size = 128M
upload_max_filesize = 128M

이것도 바꾸고 서비스를 재시작해주면 적용됩니다.

nginx 설정파일 변경

nginx php를 읽을수있게하려면 설정파일을 변경해야합니다.

vi /etc/nginx/conf.d/default.conf

기본내용은 다 날리고 다시 작성하는게 편합니다.

upstream php-handler {
    server 127.0.0.1:9000;
}
server {
    client_max_body_size 128M;
    listen 80;
    listen [::]:80;

    root        /var/www/html;
    index       index.php index.html index.htm;

    server_name 서버 IP;

    access_log  /var/log/nginx/web.access.log  main;
    error_log /var/log/nginx/web.error.log;
	
    location / {
                try_files $uri $uri/ /index.php?$args;

        }
    error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
        location ~ \.php$ {
        #include /etc/nginx/snippets/fastcgi-php.conf;
        fastcgi_pass php-handler;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;     fastcgi_read_timeout 300;
     }
    location ~ /\.ht {
    deny all;
    }
}

위 파일을 수정한 뒤 nginx 를 재시작한번해주세요.
service nginx restart

php 테스트하기

테스트는 php 파일을 샘플로 만들어서 진행하겠습니다.

default 의 root 경로에 넣어주면 됩니다.

저같은 경우 /var/www/html 입니다

mkdir -p /var/www/html
vi /var/www/html/index.php

내용은 간단하게 아래 복붙

<?php
phpinfo();
?>

이제 nginx테스트때처럼 웹으로 ip를 접속해봅니다.

이렇게 php info 페이지가 잘 나오면 정상입니다.

여기에 db까지 구성하면 워드프레스를 간단하게 구축하실 수있습니다~