CentOS 7 / Debian 8에서 Apache 및 MariaDB와 함께 PHP 7을 설치하는 방법


지난주 (더 정확하게는 2015 년 8 월 21 일) PHP 개발 팀은 최신 PHP 7 릴리스를 발표하고 전 세계 사용자와 개발자에게 테스트를 권장했습니다.

그러나이 버전은 RC (Release Candidate) 버전이므로 버그가 있거나 기존 설정과 호환되지 않을 수 있으므로 사용자는 버그 추적 시스템 및 해당 단계에있는 동안 프로덕션에서 PHP 7을 사용하지 않습니다.

좋은 점은이 버전에 몇 가지 수정 사항이 포함되어 있다는 것입니다 (이 페이지는 프로젝트의 GitHub 저장소에서 새로운 기능 및 개선 사항에 대한 자세한 목록을 참조하십시오).

이 기사는 CentOS 7 및 Debian 8 Jessie에서 Apache 및 MariaDB와 함께 소스 tarball에서 PHP 7 RC1을 설치하고 컴파일하는 과정을 안내합니다. 동일한 지침은 RHEL, Fedora, Scientific Linux 및 Ubuntu/Mint와 같은 Debian 기반과 같은 CentOS 기반 배포에서도 작동합니다.

CentOS 7 및 Debian 8에 PHP 7 설치

소개에서 언급했듯이이 버전은 안정적인 릴리스가 아닌 RC이므로 리포지토리에서 찾을 수 있다고 합리적으로 기대할 수 없습니다. 따라서 소스 코드를 다운로드하고 프로그램을 처음부터 컴파일해야합니다.

그러나 그렇게하기 전에 PHP 7을 더 잘 활용하기 위해 아마도 가장 좋은 방법은 저장소에서 찾을 수있는 Apache 및 MariaDB와 함께 설치하는 것임을 기억해야합니다.

# yum update && yum install httpd mariadb mariadb-server
# aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common

두 경우 모두 PHP 소스 코드가 포함 된 tarball을 다음과 같이 다운로드하고 추출 할 수 있습니다.

# wget https://downloads.php.net/~ab/php-7.0.0RC1.tar.gz
# tar xzf php-7.0.0RC1.tar.gz -C /opt

완료되면 /opt/php-7.0.0RC1로 이동하고 –force 스위치를 사용하여 buildconf 스크립트를 실행하여 RC 버전을 강제로 빌드합니다.

# ls
# cd /opt/php-7.0.0RC1.tar.gz
# ./buildconf --force

이제 잘 알려진 구성 명령을 실행할 차례입니다. 아래 옵션은 표준 PHP 7 설치를 보장하지만, 필요에 따라 설치를 더 잘 사용자 정의하기 위해 PHP 설명서의 전체 옵션 목록을 참조 할 수 있습니다.

# ./configure \
--prefix=$HOME/php7/usr \
--with-config-file-path=$HOME/php7/usr/etc \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config \
--with-apxs2

다음 오류가 발생하는 경우 :

configure: error: no acceptable C compiler found in $PATH
see 'config.log' for more details

다음 명령으로 gcc 및 종속성을 설치하고 위의 구성 명령을 다시 실행하십시오.

# yum install gcc       [On CentOS 7 box]
# aptitude install gcc  [On Debian 8 box]

PHP 7을 컴파일하는 데 시간이 걸릴 수 있습니다. 누락 된 다른 라이브러리 또는 리소스가있는 경우이 프로세스는 실패하지만 언제든지 설치하고 configure를 다시 실행할 수 있습니다.

예를 들어 다음과 같은 오류 메시지가 나타난 후 libxml2-devel을 설치해야했습니다.

configure: error: xml2-config not found. Please check your libxml2 installation.

안타깝게도 설치된 소프트웨어가 시스템마다 다를 수 있으므로 모든 사례 시나리오를 다룰 수는 없습니다. 설치하는 동안 몇 가지를 설명하는 이 페이지를 참조하십시오 각 솔루션과 함께 소스에서 PHP를 설치하는 동안 발생할 수있는 오류.

다음은 구성 프로세스를 완료하기 전에 CentOS 7 상자에 설치해야하는 전체 패키지 목록입니다.

gcc
libxml2-devel
pkgconfig
openssl-devel
bzip2-devel
curl-devel
libpng-devel
libpng-devel
libjpeg-devel
libXpm-devel
freetype-devel
gmp-devel
libmcrypt-devel
mariadb-devel
aspell-devel
recode-devel
httpd-devel

표시된대로 하나의 yum 명령으로 위의 모든 필수 패키지를 설치할 수 있습니다.

# yum install gcc libxml2-devel pkgconfig openssl-devel bzip2-devel libpng-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libmcrypt-devel mariadb-devel aspell-devel recode-devel httpd-devel

다음 메시지는 구성이 성공적으로 완료되었음을 나타냅니다.

그런 다음 실행하십시오.

# make
# make install

설치가 완료되면 명령 줄을 사용하여 버전을 확인할 수 있습니다.

데비안에서 구성 프로세스를 성공적으로 완료하려면 다음 패키지를 설치해야했습니다.

make
libxml2-dev
libcurl4-openssl-dev
libjpeg-dev
libpng-dev
libxpm-dev
libmysqlclient-dev
libicu-dev
libfreetype6-dev
libxslt-dev
libssl-dev
libbz2-dev
libgmp-dev
libmcrypt-dev
libpspell-dev 
librecode-dev
apache2-dev

Debian 8에서 apt-get 명령을 사용하여 위의 모든 필수 패키지를 설치할 수 있습니다.

# apt-get install make libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libmysqlclient-dev libicu-dev libfreetype6-dev libxslt-dev libssl-dev libbz2-dev libgmp-dev libmcrypt-dev libpspell-dev librecode-dev apache2-dev

그런 다음 구성 옵션에 –with-libdir =/lib/x86_64-linux-gnu를 추가하고 gmp.h 헤더 파일에 대한 다음 심볼릭 링크를 만듭니다.

# ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

그런 다음 이전의 경우와 같이 make 및 make install을 실행했습니다. 10-15 분 내에 컴파일이 완료되어야하며 이전과 같이 설치된 PHP 버전을 확인할 수 있습니다.

# make
# make install

php.ini 설정 및 PHP 7 설치 테스트

소스에서 PHP를 설치하면 두 개의 샘플 php.ini가 제공됩니다. "이 경우에는 /opt/php-7.0.0RC1에 있습니다.

# ls -l /opt/php-7.0.0RC1 | grep php.ini

이제 이들 중 하나를/usr/local/lib에 복사해야합니다.이 위치는 설치 정보에 따라 해당 파일의 기본 위치로 지정됩니다.

# cp /opt/php-7.0.0RC1/php.ini-development /usr/local/lib

그리고이 구성 지시문을 Apache의 기본 구성 파일에 추가하는 것을 잊지 마십시오.

/etc/httpd/conf/httpd.conf    [On CentOS 7 box]
/etc/apache2/apache2.conf in  [On Debian 8 box] 
LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

Debian 8에서는 LoadModule 줄을 생략 할 수 있으며 표시된 Apache 모듈에 대한 다음 심볼릭 링크를 제거하고 만들어야합니다.

# cd /etc/apache2
# rm mods-enabled/mpm_event.conf
# rm mods-enabled/mpm_event.load
# ln -s mods-available/mpm_prefork.conf mpm_prefork.conf
# ln -s mods-available/mpm_prefork.load mpm_prefork.load

그런 다음 웹 서버를 다시 시작하십시오.

# systemctl restart httpd     [On CentOS 7 box]
# systemctl restart apache2   [On Debian 8 box]

CentOS 7에서 Apache를 시작하면 libphp7.so 모듈을 찾을 수 없다는 오류 메시지가 표시되면 /opt/php-7.0.0RC1/.libs/libphp7.so에서 표시된 경로로 복사하면됩니다.

PHP/Apache 설치를 테스트하는 고전적인 방법은 phpinfo () 파일을 사용하는 것입니다. "웹 서버의 문서 루트 (두 배포판 모두에서/var/www/html)에 다음 내용으로 test.php라는 파일을 만듭니다.

<?php
phpinfo();
?>

그리고 네트워크 내의 클라이언트에서 브라우저를 시작하여 테스트합니다.

http://localhost/test.php
OR
http://IP-address/test.php

요약

이 기사에서는 전례없는 값으로 성능을 향상시키는 것을 목표로하는이 인기있는 서버 측 스크립팅 언어의 최신 RC 인 소스 코드에서 PHP 7을 설치하는 방법을 설명했습니다. 2015 년 11 월에 안정 버전에 도달 할 때까지 프로덕션 환경에서이 릴리스를 사용하지 않는 것이 좋습니다.

이 기사에 대한 질문/의견/제안이 있으면 아래 양식을 사용하여 언제든지 알려주십시오.