REMI REPO 를 이용한 PHP8 버전 설치 메뉴얼이다.
# epel 저장소 설치
dnf install -y epel-release dnf-utils
# Remi Repository 설치 (Rocky 9)
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
# PHP 8.3 활성화
dnf module enable php:remi-8.3
# PHP + Module 설치
dnf install -y php-fpm php-devel php-json php-mbstring php-opcache php-pdo php-pecl-geoip php-pecl-imagick php-tidy php-xml php-gd php-mysql php-pecl-zip php-curl
systemctl enable php-fpm
php 설정을 한다. header 정보에 php 의 버전 노출이 되는 것을 말고 파일 업로드와 관련된 설정 및 몇가지를 셋팅한다.
/etc/php.ini 파일을 수정한다.
expose_php = Off
upload_max_filesize = 200M
max_file_uploads = 100
post_max_size = 800M
date.timezone = Asia/Seoul
browscap = /etc/php_browscap.ini
browscap 설정을 셋팅한 경우에는 아래의 browscap 파일 다운로드를 진행한다.
# browscap 파일 다운로드
# Full
wget http://browscap.org/stream?q=Full_PHP_BrowsCapINI -O /etc/php_browscap.ini
# Lite
wget http://browscap.org/stream?q=Lite_PHP_BrowsCapINI -O /etc/php_browscap.ini
# Standard
wget http://browscap.org/stream?q=PHP_BrowsCapINI -O /etc/php_browscap.ini
php-fpm 서비스를 시작해준다.
# php-fpm 서비스 시작
systemctl start php-fpm
php-fpm 의 설정을 한다.
#/etc/php-fpm.d/www.conf
user = 사용자계정
group = 사용자계정
위 설정은 시스템 설정에 따라 진행한다.
REDIS 설치
PHP 는 기본적으로 파일 방식의 세션을 사용한다. 파일 방식의 세션은 기본적으로 locking 과 관련된 문제를 가지고 있다. 이로 인해 여러가지 문제가 생기곤 한다.
php 의 파일 기반 세션 시스템은 세션을 기본적으로 잠그는 형태의 관리방식을 사용한다. 즉, 세션이 잠겨있는 동안에는 해당 세션파일을 사용하는 것이 불가능해진다. 만약 한 요청이 세션을 열고 데이터를 처리하는 동안 다른 요청이 세션에 접근하려고 하면 다른 요청은 대기상태가 된다. 이로 인해 지연이 생기는 경우가 있다. 특히 세션을 처리하는 시간이 길어지게 되는 경우, 즉 대규모 시스템의 경우에는 이 문제가 더욱 크게 나타난다.
또한 파일시스템의 성능에 따라 세션의 성능 또한 영향을 받게 된다.
이를 해결하기 위해 락을 해제하는 방법들도 있으나, 여기서는 REDIS 를 사용하여 위의 문제를 회피하고 더 나은 성능을 제공할 수 있게되는 방법을 안내한다.
REDIS 설치
dnf install redis
dnf install php-pecl-redis6
systemctl enable redis
REDIS 설정
vi /etc/redis/redis.conf
#bind, port, requirepass 3가지 정보 셋팅
bind 127.0.0.1 -::1
port 6379
requirepass redis!@#$ (비밀번호 설정)
PHP 의 REDIS 세션 사용 설정
#/etc/php.ini 파일을 설정
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?auth=redis!@#$" (REDIS에 설정한 비밀번호 입력)
#/etc/php-fpm.d/www.conf
# 제일 하단의 아래 라인 주석처리하여 해제
;php_value[session.save_handler] = ????
;php_value[session.save_path] = ???
REDIS 서버 시작
systemctl start redis
이제 설정이 완료되었다. php 에서 redis 세션을 사용할 수 있다.