RHEL/CentOS 8 에 PHP 7.3 설치하기
CentOS 8 이 되면서 내장 패키지들의 버전이 많이 높아졌고 PHP 는 7.2과 7.3이 제공됩니다.
이 글에서는 8에 추가된 패키지 관리자인 dnf 의 module 기능을 사용해서 PHP 7.3 을 설치하는 방법을 설명합니다.
dnf module
8 부터는 module 개념이 추가되서 ruby, python, php 등 개발 언어들은 여러 버전이 제공되므로 필요한 버전을 선택해서 설치할 수 있습니다.
동시에 여러 버전 설치는 불가능하며 이런 경우 해당 언어의 버전 관리 도구(nvm (Node version Manager) 등을 사용해야 합니다)
module list
먼저 php module list 를 가져옵니다.
EPEL 저장소 추가
$ dnf module list php
Last metadata expiration check: 0:02:20 ago on Fri May 15 01:00:17 2020.
CentOS-8 - AppStream
Name Stream Profiles Summary
php 7.2 [d][e] common [d], devel, minimal PHP scripting language
php 7.3 common, devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Stream 에서 대괄호안에 축약어가 있는데 d 는 default, e 는 enabled, i 는 installed 의 약자입니다.
즉 위의 예제는 php 7.2 가 기본 설정이고 아직 설치되지는 않았습니다.
module enable
이제 사용하려면 모듈(PHP) 의 버전을 활성화해주면 됩니다. 사용법은 enable module:version 형식으로 기술하면 되며 모듈은 PHP 버전은 7.3 이므로 다음과 같은 명령을 실행합니다.
php 7.3 활성화
$ dnf module enable php:7.3
만약 다음과 같이 모듈을 스위칭할 수 없다는 에러가 나는 경우가 있습니다.
The operation would result in switching of module 'php' stream '7.2' to stream '7.3'
Error: It is not possible to switch enabled streams of a module.
It is recommended to remove all installed content from the module, and reset the module using 'dnf module reset <module_name>' command. After you reset the module, you can enable the other stream.
그럴 경우 아래 명령어로 모듈을 리셋해 줍니다.
module reset
$ dnf module reset php -y
reset 이 끝났으면 다시 7.3 모듈을 활성화해줍니다.
php 7.3 활성화
$ dnf module enable php:7.3 -y
아래와 같이 확인 화면이 나오면 Y 를 누르면 스위칭이 끝나고 이미 설치한 패키지는 변경하지 않는다는 안내 메시지가 표시됩니다.
Dependencies resolved.
========================================================================================================
Package Arch Version Repository Size
========================================================================================================
Enabling module streams:
php 7.3
Transaction Summary
========================================================================================================
Is this ok [y/N]: y
Complete!
Switching module streams does not alter installed packages (see 'module enable' in dnf(8) for details)
PHP 7.3 설치
이제 dnf install 명령으로 php 를 설치하면 활성화된 7.3 버전이 설치됩니다.
$ dnf install nginx php php-cli php-fpm php-json php-intl php-mbstring php-pdo php-xml php-gd php-mysqlnd php-zip php-pear php-gmp