이 세상에 하나는 남기고 가자

세상에 필요한 소스코드 한줄 남기고 가자

PHP 7.2 설치(업그레이드) [CentOS 7 / remi RPM repository]

아사마루

PHPCentOS에 설치하는 방법은 소스를 컴파일하거나 yum을 사용하는 방법이 주로 사용된다.

나의 경우는 예전엔 컴파일 방법을 주로 사용했었으나 RPM 기반으로 설치하는 것이 더 편리하기도 하고 성능 최적화에 유리하다는 소식을 접하고 yum을 주로 사용하고 있다(yum을 사용해서 PHP를 설치할 경우 CentOS에 포함된 PHP의 버전은 매우 낮기 때문에 외부 RPM repository를 사용하는 경우가 많다).

PHP 최신 버전을 제공하는 외부 repository 중 유명한 곳은 webtaticremi 등이 있다. 이중에서 webtatic을 주로 사용하다가 이번에 PHP 7.2로 버전업하는 과정에서 remi로 갈아탔다. 내가 remi를 선택한 이유는 다음과 같다.

  • webtatic이 mcrypt를 지원하지 않는다(PHP 7.2에서 보안 문제로 제거).
  • webtatic 보다 다양한 extension을 제공
    • 운영중인 서비스로 인해 gearman, oci8 등이 추가로 필요했다.
  • 빠른 업데이트
    • webtatic의 경우 최신 버전에 대한 업데이트가 조금 늦는 경우가 많다.

위에 나열한 이유는 크게 중요한 문제들은 아니며 대안이 존재하지만 간편한 사용을 위해 갈아탔다. 사실 굳이 다른 repository를 알아봤던 이유는 mcrypt 때문이다. 보안상의 문제로 사용이 권장되지 않는 모듈이지만 PG(결제대행)사에서 제공하는 모듈이 mcrypt를 필수로 요구하고 있는 상황이라 사용하지 않을 수 없었다.

사설이 길었는데 이제 본격적으로 설치에 대해 알아보자(yum을 이용한 설치는 무척 간단하다).


설치환경

  • CentOS 7.2
  • Extra Packages for Enterprise Linux (EPEL) repository를 사용하고 있어야 한다.

설치과정

1. 우선 remi repository를 yum 에 추가 한다.

$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ rpm -Uvh epel-release-latest-7.noarch.rpm
$ wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
$ rpm -Uvh remi-release-7.rpm

$ yum install -y yum-utils
$ yum-config-manager --enable remi-php72

repository 주소는 OS/Version 별로 차이가 있다. 다른 OS를 사용하고 있거나 자세한 내용을 확인하고 싶다면 Remi's RPM repository를 참고하자.

2. 기존 설치된 PHP를 제거하고 7.2 버전을 설치

$ yum remove -y `yum list installed | cut -d " " -f 1  | grep php`

위 명령을 실행하기 전에 yum list installed | cut -d " " -f 1 | grep php 만 먼저 실행해서 삭제될 패키지를 확인하는 것이 좋다(잘못된 패키지가 삭제되지 않도록).

$ yum install -y php-common php-fpm php-cli \
        php-process \
        php-opcache php-pecl-apcu \
        php-mysqlnd php-pdo \
        php-gd \
        php-mbstring php-xml \
        php-pecl-zip \
        php-bcmath

"php-common" 외의 패키지는 자신의 상황에 맞게 조정해서 설치한다.

"php-common" 대신 "php72w-common"과 같이 PHP 버전을 지정한 패키지를 사용해도 된다. 항상 최신 버전을 사용할 것이 아니라 특정 버전대를 사용해야 한다면 이 방법을 사용하자. 향후 PHP가 버전업되면 운영중인 프로그램과의 호환에 문제가 발생할 수 있으므로 이 방법이 더 안전하다. 단, 메이저 버전업시 기존 패키지를 지우고 설치하는 방법을 사용해야 하므로 불편하다.


기존에 yum으로 설치된 PHP가 존재하고 해당 패키지의 이름이 "php-"로 시작한다면(위에 설명한 것과 같이 "php72w-"로 시작하는 패키지가 설치된 경우가 아닌) 기존 패키지를 지우고 재설치하는 것보다 아래처럼 그냥 update 받는 방법도 있다.

$ yum update php-*

나의 경우는 기존에 webtatic을 사용했기 때문에 패키지들의 이름이 "php70w-"로 시작해서 기존 패키지를 지우고 새로 설치했다. 대신, 이번에 "php-"로 시작하는 패키지들을 설치했기 때문에 향후 버전업 시에는 update 방식을 사용할 수 있다.

3. 설치된 php 버전 확인

$ php -v

PHP 7.2.2 (cli) (built: Jan 30 2018 13:44:49) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.2, Copyright (c) 1999-2018, by Zend Technologies

이것으로 PHP 7.2 버전의 설치가 끝났다.


yum을 이용한 PHP의 설치는 앞서 보는 것과 같이 아주 간단하다. "php-" 패키지를 설치할지 "php72w-" 패키지를 설치할지는 자신의 관리 성향에 맞추어 잘 선택하길 바란다(생각보다 중요한 문제다).

Comment