본문 바로가기

리눅스

[draft] 우분투에서 PHP 8.3으로 업그레이드하고 기존의 PHP 8.1을 삭제하는 방법

728x90

우분투에서 PHP 8.3으로 업그레이드하고 기존의 PHP 8.1을 삭제하는 방법

1. PHP 8.3 설치

PHP 8.3 패키지와 필요한 모듈들을 설치합니다.

 

필수 패키지 설치

sudo apt-get install -y software-properties-common apt-transport-https

Ondrej PPA 추가

sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update

PHP 8.3 및 필수 모듈 설치

sudo apt-get install -y php8.3 php8.3-fpm php8.3-cli php8.3-common \
 php8.3-mysql php8.3-zip php8.3-gd php8.3-mbstring php8.3-curl php8.3-xml \
 php8.3-bcmath php8.3-xmlrpc php8.3-imagick php8.3-dev php8.3-redis \
 php8.3-intl php8.3-mongodb

PHP 8.3를 기본 PHP로 설정

  • update-alternatives 명령어를 사용해 PHP 8.3을 기본 PHP 버전으로 설정합니다.
sudo update-alternatives --set php /usr/bin/php8.3

2. PHP 모듈 추가 설치 및 설정

rdkafka 확장 모듈 재설치

sudo pecl uninstall rdkafka
sudo pecl channel-update pecl.php.net
sudo pecl install rdkafka

rdkafka 확장 모듈 설정 추가

echo "extension=rdkafka.so" | sudo tee -a /etc/php/8.3/cli/php.ini /etc/php/8.3/fpm/php.ini

screwim 모듈 이동(복사)

sudo mv screwim.so /usr/lib/php/20230831/screwim.so

screwim 모듈 설정 추가

sudo tee /etc/php/8.3/mods-available/screwim.ini <<EOF
screwim.enable = 1
extension=screwim.so
EOF

screwim 모듈 활성화

sudo ln -s /etc/php/8.3/mods-available/screwim.ini /etc/php/8.3/fpm/conf.d/91-screwim.ini
sudo ln -s /etc/php/8.3/mods-available/screwim.ini /etc/php/8.3/cli/conf.d/91-screwim.ini

opcache 모듈 설정 편집

sudo sed -i 's/opcache.jit=off/opcache.jit=tracing/' /etc/php/8.3/mods-available/opcache.ini
echo "opcache.jit_buffer_size=100M" | sudo tee -a /etc/php/8.3/mods-available/opcache.ini
728x90

3. PHP-FPM 설정 파일 편집

PHP-FPM 8.3 설정 파일 백업

sudo cp /etc/php/8.3/fpm/php-fpm.conf /etc/php/8.3/fpm/php-fpm.conf.bk
sudo cp /etc/php/8.3/fpm/pool.d/www.conf /etc/php/8.3/fpm/pool.d/www.conf.bk

PHP-FPM 8.1 설정 파일 백업

sudo cp /etc/php/8.1/fpm/php-fpm.conf /etc/php/8.3/fpm/php-fpm8.1.conf
sudo cp /etc/php/8.1/fpm/pool.d/www.conf /etc/php/8.3/fpm/pool.d/www8.1.conf

php-fpm.conf 설정 파일 편집

sudo tee /etc/php/8.3/fpm/php-fpm.conf <<EOF
include=/etc/php/8.3/fpm/pool.d/www.conf

[global]
pid = /run/php/php8.3-fpm.pid
error_log = /var/log/php-fpm/error.log
daemonize = yes
EOF

www.conf 설정 파일 편집

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

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

;CPU 8개, 메모리 16GB, PHP 프로세스당 메모리 사용량이 50MB인 경우
pm = dynamic
pm.max_children = 250
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30

request_terminate_timeout = 30
request_slowlog_timeout = 10
slowlog = /var/log/php-fpm/www-slow.log

access.log = /var/log/php-fpm/www-access.log
access.format = "[%t] %m %{REQUEST_SCHEME}e://%{HTTP_HOST}e%{REQUEST_URI}e %f pid:%p TIME:%ds MEM:%{mega}Mmb CPU:%C%% status:%s {%{REMOTE_ADDR}e|%{HTTP_USER_AGENT}e}"

php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on

php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
EOF

4. PHP 8.1 삭제

PHP 8.1 및 관련 모듈을 완전히 제거합니다.

 

PHP 8.1 패키지 삭제

sudo apt purge -y $(dpkg -l | grep php8.1 | awk '{print $2}' | tr '\n' ' ')

필요 없는 의존성 제거

sudo apt autoremove -y

설정 파일 및 남아있는 파일 제거

sudo rm -rf /etc/php/8.1
sudo rm -rf /usr/lib/php/20210902

5. Nginx 및 PHP-FPM 설정 수정

PHP-FPM 소켓을 8.1에서 8.3으로 변경합니다.

sudo sed -i 's|fastcgi_pass unix:/run/php/php8.1-fpm.sock;|fastcgi_pass unix:/run/php/php8.3-fpm.sock;|' /etc/nginx/conf.d/default

6. Nginx 및 PHP-FPM 재시작

sudo systemctl restart nginx php8.3-fpm

7. PHP 버전 확인

PHP가 8.3으로 잘 설정되었는지 확인합니다.

php-fpm8.3 -v
php -v

8. PHP 정보 확인

php --ini

9. PHP 모듈 확인

php-fpm8.3 -v
php -m

 

PHP 8.3으로 업그레이드하고 기존의 PHP 8.1을 안전하게 제거할 수 있습니다.

 

sudo apt purge -y $(dpkg -l | grep php8.1 | awk '{print $2}' | tr '\n' ' ')
 
728x90