Apache와 MySQL이 설치되어 있는 CentOS 7 환경에서 PHP 5.6.4과 PHP 7.0.30 버전을 각각 설치함으로써 LAMP 스택을 구성하려고 합니다.

  • 아파치 2.4.33 설치 ( 링크 )
  • MySQL 5.6.15 설치 ( 링크 )

이 글에서 진행하는 PHP 설치는 위 링크의 아파치, MySQL을 설치했던 글을 기반으로 작성되었습니다.

( 최소 3번 이상의 테스트를 통해 정리를 한 것이니... 잘 설치되리라 믿습니다. )


PHP 설치가 끝나면, 아파치와 연동하는 부분까지 알아보도록 하겠습니다.


PHP 7.0.30 버전도 같은 방식으로 설치를 진행해 본 결과, 문제 없이 잘 설치가 되었으니 참고 하시길 바랍니다.





1. 의존성 설치

아래의 라이브러리 외에는 mysql과 아파치를 설치할 때의 의존성을 참고하시길 바랍니다.

# yum -y install libxml2-devel

# yum -y install openssl-devel # yum -y install libjpeg-devel # yum -y install libpng-devel

PHP 5.2.17 버전에서는 암호화 라이브러리로 mcrypt를 사용했는데, PHP 5.6.4 , 7.0.30 버전에서는 mcrypt 대신 openssl을 사용하려 합니다.

SSL( Secure Socket Layer )이란 간단하게 브라우저와 서버간의 통신을 암호화하는 것을 말하는데,

openSSL은 SSL을 오픈소스로 라이브러리화 한 것을 말합니다.





2. PHP 설치

# wget http://am1.php.net/get/php-5.6.4.tar.gz/from/this/mirror ( # wget http://am1.php.net/get/php-7.0.30.tar.gz/from/this/mirror - PHP7 버전 ) # tar xvfz mirror # cd php-5.6.4 # ./configure \

--with-apxs2=/usr/local/victolee/apache2.4.33/bin/apxs \ --with-mysql=/usr/local/victolee/mysql \ --with-mysqli=/usr/local/victolee/mysql/bin/mysql_config \ --with-imap-ssl \ --disable-debug \ --with-iconv \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-libxml-dir \ --with-openssl


# make

# make test

# make install

configure의 설정 내용은 ./configure --help 명령어를 통해 확인이 가능합니다.



** 오류 해결



configure를 할 때, 위와 같은 에러가 발생한다면 ./configure 실행 시 지정한 apxs가 perl을 모르기 때문입니다.

/usr/local/victolee/apache2.4.33/bin/apxs 파일을 열어서 맨 첫 줄을 아래와 같이 수정 합니다.

# vi /usr/local/victolee/apache2.4.33/bin/apxs

#!/replace/with/path/to/perl/interpreter -w     => #! /usr/bin/perl -w




설치 확인

설치가 잘 되었는지 확인하기 위해 PHP 버전을 출력해보고, so 파일이 생성되었는지 확인하겠습니다.

# php --version
# ls -l /usr/local/victolee/apache2.4.33/modules/libphp5.so

* 참고

DSO 방식은 동적 공유 객체 방식의 컴파일이라고 합니다. ( 링크 )

동작 방식은 아파치를 먼저 컴파일 한 상태에서 새로운 모듈이 추가될 때 아파치를 새로 또 컴파일하지 않는 방식을 말합니다.

즉, httpd에 기능이 포함되는 것이 아니라 외부에 기능을 두고 필요할 때마다 동적으로 기능을 호출해서 사용하는 방식입니다.

이 방식은 시스템의 효율을 높여주지만 성능이 조금 떨어진다는 단점이 있는데, HW 성능이 좋아짐에 따라 커버가 가능해진 정도입니다.

PHP는 대부분 DSO 모듈 방식을 사용합니다.





3. 아파치와 PHP 연동

PHP 설치 되었으니 php 파일을 웹 서버에 띄우기 위해 아파치와 연동을 해야 합니다.

아파치 설정 파일 ( httpd.conf )을 열어서 PHP 모듈이 설치되어 있는지 확인하고, AddType에 MIME를 추가합니다.

# vi /usr/local/victolee/apache2.4.33/conf/httpd.conf

( php를 검색하여 LoadModule에 php가 추가됐는지 확인 ( line : 151 ) ) LoadModule php5_module modules/libphp5.so ( MIME를 추가 ( line : 388 ) ) AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php .html





4. PHP 설정 및 테스트

다음으로 php.ini 파일에서 PHP와 관련된 설정을 해보겠습니다.

# vi /root/php-5.6.4/php.ini-production ( short_open를 검색해서 On으로 수정합니다. ) short_open_tag = On


( opcache.enable을 검색해서 0으로 수정합니다. )

opcache.enable=0


# cp /root/php-5.6.4/php.ini-production /usr/local/lib/php.in

  • short_open_tag
    • php 코드를 작성할 때 <?php   ?>말고 <?   ?>으로 작성이 가능합니다.
    • 하위 버전 호환성을 위해서 On을 해주는 것이 좋습니다.
  • opcache.enable
    • 캐시를 끄게 되어 개발 시 수정내용이 바로바로 반영되서 개발시에 편리합니다.
  • display_errors
    • 상세한 오류내용을 화면에 보여줄 것인가를 설정하는 것인데, 개발시엔 편리하지만 배포시엔 Off를 해주도록 합니다.

이 밖에 php.ini 파일에 대한 자세한 항목은 여기를 참고해주세요.


마지막으로 설정 파일을 잘 관리할 수 있도록 /usr/local/lib 디렉터리에 옮기겠습니다.




이제 테스트를 위한 php 파일을 작성해보겠습니다.

아파치의 웹 콘텐츠 ( html, php 파일 등 )는 htdocs 디렉터리에 위치합니다.

# cd /usr/local/victolee/apache2.4.33/htdocs # vi phpinfo.php <? phpinfo(); ?>



아파치가 실행 중이라면 재실행을 하고, 아니라면 실행 시킵니다.

# /usr/local/victolee/apache2.4.33/bin/apachectl start # ps -ef | grep httpd



마지막으로 ifconfig 명령어로 IP를 확인 한 후, 브라우저로 접속해봅니다. ( 저 같은 경우는, http://192.168.245.131/phpinfo.php )



위와 같이 PHP 설치 정보가 출력되면 PHP 설치 및 아파치와 연동이 잘 된 것입니다.



이상으로 PHP 컴파일 설치를 해보았습니다.

요즘 컴파일을 설치하는 경우는 없지만, 이렇게 컴파일 설치를 해보면 에러 스트레스를 통해 리눅스와 좀더 친해질 수 있을것 같습니다.