상세 컨텐츠

본문 제목

PHP 컴파일 설치

프로그래밍

by 2hansoul 2021. 6. 23. 14:54

본문

반응형

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

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

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

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

 

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

 

 

 

1. 의존성 설치

# yum install -y wget

# yum install -y net-tools # yum install -y gcc

# yum install -y gcc-c++

 

 

 

 

2. PHP 설치를 위한 여러 라이브러리 설치

PHP에서 그래픽, 이미지를 그리는 함수 등은 유명한 외부 라이브러리를 사용합니다.

이러한 라이브러리 설치가 되어 있지 않다면, PHP를 설치할 때 외부 라이브러리의 변수, 함수를 사용할 수 없으므로 꼭 설치가 필요합니다.

 

PHP 버전에 따라 외부 라이브러리의 버전들이 굉장히 민감하기 때문에, 테스트를 해 본 아래의 버전을 맞추는 것을 권장합니다.

그렇지 않으면, PHP 버전 또는 라이브러리들의 버전을 바꿔가며 설치해야 PHP 설치가 될 것입니다.

 

tar파일을 푸는데 안된다면 링크자체가 없는거라 버전을 따로 찾아보거나 ex)1.2.8 -> 1.3.1 직접 바꾸어 보면 풀립니다

1) zlib 1.2.8 ( 링크 )

# wget https://zlib.net/fossils/zlib-1.2.8.tar.gz # tar xvfz zlib-1.2.8.tar.gz # cd zlib-1.2.8

# ./configure --prefix=/usr/local # make # make install

 

 

2) libpng 1.6.34 ( 링크 )

# cd # wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.34.tar.gz?download # tar xvfz libpng-1.6.34.tar.gz\?download # cd libpng-1.6.34

# cp scripts/makefile.linux makefile # make test # make install

 

 

3) freetype 2.4.0 ( 링크 )

# cd # wget https://download.savannah.gnu.org/releases/freetype/freetype-2.4.0.tar.gz # tar xvfz freetype-2.4.0.tar.gz # cd freetype-2.4.0

# ./configure --prefix=/usr/local # make # make install

 

 

4) jpeg 8 ( 링크 )

# cd # wget http://www.ijg.org/files/jpegsrc.v8.tar.gz # tar xvfz jpegsrc.v8.tar.gz # cd jepg-8 # ./configure --prefix=/usr/local --enable-shared --enable-static # make # make install

 

 

5) libgd 2.2.4 ( 링크 )

# cd # wget https://github.com/libgd/libgd/releases/download/gd-2.2.4/libgd-2.2.4.tar.gz # tar xvfz libgd-2.2.4.tar.gz # cd libgd-2.2.4 # ./configure --prefix=/usr/local # make # make install

 

 

6) libiconv 1.15 ( 링크 )

# cd # wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz # tar xvfz libiconv-1.15.tar.gz # cd libiconv-1.15 # ./configure --prefix=/usr/local # make # make install

 

 

7) libmcrypt 2.5.8 ( 링크 )

# cd # wget https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download # tar xvfz download # cd libmcrypt-2.5.8 # ./configure --prefix=/usr/local # make # make install

 

 

8) libxml2 2.6.30 ( 링크 )

# cd # wget http://xmlsoft.org/sources/old/libxml2-2.6.30.tar.gz # tar xvfz libxml2-2.6.30.tar.gz # cd libxml2-2.6.30

# ./configure --prefix=/usr/local --with-zlib=/usr/local --with-iconv=/usr/local # make # make install

 

** 오류 해결

python.h 가 없다고 나오면 python-devel 라이브러리를 설치합니다.  ( 스택오버 플로우 - 링크 )

# yum install python-devel

# make clean

# make

 

 

 

9) libxslt 1.1.9 ( 링크 )

# cd # wget http://ftp.gnome.org/pub/gnome/sources/libxslt/1.1/libxslt-1.1.9.tar.gz # tar xvfz libxslt-1.1.9.tar.gz # cd libxslt-1.1.9 # ./configure \ --prefix=/usr/local \ --with-libxml-prefix=/usr/local \ --with-libxml-include-prefix=/usr/local/include \ --with-libxml-libs-prefix=/usr/local/lib

 

 

 

 

3. PHP 설치

PHP 설치를 위한 라이브러리들을 모두 설치했으므로 이제 본격적으로 PHP 5.2.17 버전을 설치하도록 하겠습니다.

# cd # wget http://museum.php.net/php5/php-5.2.17.tar.gz # tar xvfz php-5.2.17.tar.gz # cd php-5.2.17

# ./configure \ --with-apxs2=/usr/local/victolee/apache2.0.64/bin/apxs \ --with-jpeg-dir=/usr/local \ --with-png-dir=/usr/local \ --with-zlib-dir=/usr/local \ --with-freetype-dir=/usr/local \ --with-ttf=/usr/local \ --with-iconv=/usrl/local \ --with-libxml-dir=/usr/local \ --with-xsl=/usr/local \ --with-mysql=/usr/local/victolee/mysql \ --with-gd \ --with-config-file-path=/usr/local/lib \ --disable-debug \ --enable-ftp \ --enable-gd-native-ttf \ --with-mysqli=/usr/local/victolee/mysql/bin/mysql_config \ --enable-mbstring \ --enable-magic-quotes \ --enable-sockets

 

# make

# make test

# make install

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

 

 

** 오류 해결

아파치, MySQL 설치를 글 처음의 링크대로 따라오셨을 경우, 아래의 오류들은 발생하지 않은 것으로 확인 됐습니다.

그래도 라이브러리 버전이 다르거나 어떤 문제로 인해서 오류가 발생했을 경우, 도움이 되고자 제가 겪었던 해결방법을 정리했습니다.

 

1) 

MYSQL_RPL_MASTER

MYSQL_RPL_SLAVE

MYSQL_RPL_ADMIN 가 없다는 오류 발생 경우 ( 참고했던 링크)

 

mysql.h 헤더파일을 열어서 /mysql_protocol_type 을 검색하여 아래 줄에 다음을 추가합니다.

# vi /usr/local/victolee/mysql/include/mysql.h

enum mysql_rpl_type

{

MYSQL_RPL_MASTER, MYSQL_RPL_SLAVE, MYSQL_RPL_ADMIN

};

 

 

2)

xpm.h가 없다는 에러가 발생하면 라이브러리를 추가합니다.

# yum install libXpm-devel

 

 

 

 

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

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

* 참고 *

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

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

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

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

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

 

 

 

 

4. 아파치와 PHP 연동

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

아파치 설정 파일 ( httpd.conf )을 열어서 PHP 모듈이 설치되어있는지 확인하고, php 파일을 아파치가 알 수 있도록 DirectoryIndex에 php 확장자를 추가합니다.

그리고 AddType에 MIME를 추가합니다.

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

( LoadModule을 검색하여 php 모듈이 추가 되었는지 확인 ( line : 268 ) )

LoadModule php5_module modules/libphp5.so

 

( DirectoryIndex를 검색하여 php 확장자를 추가 ( line : 430 ) ) DirectoryIndex index.html index.html.var index.php index.php3 ( AddType를 검색하여 MIME를 추가 ( line : 877 ) ) AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php .html .htm .inc AddType application/x-httpd-php-source .phps

 

 

 

5. PHP 설정 및 테스트

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

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

 

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

opcache.enble=0

 

 

# cp /root/php-5.2.17/php.ini-recommended /usr/local/lib/php.ini

  • short_open_tag
  • opcache.enable
  • display_errors

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

 

마지막 설정 파일을 관리를 위해 /usr/local/lib 디렉터리에 옮기겠습니다.

 

 

 

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

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

# cd /usr/local/victolee/apache2.0.64/htdocs

# vi phpinfo.php <? phpinfo(); ?>

 

 

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

# /usr/local/victolee/apache2.0.64/bin/apachectl start

# ps -ef | grep httpd

 

마지막으로 ifconfig 명령어로 IP를 확인 한 후, 브라우저로 접속해봅니다.

( httpd://본인 ip/phpinfo.php )

 

반응형

'프로그래밍' 카테고리의 다른 글

404 Not Found apache 컴파일 설치  (0) 2021.06.25
pstree  (0) 2021.06.24
Windows 에서 작성한 파일 리눅스에서 에러가 발생하는 경우  (0) 2021.06.23
/proc/meminfo 해석  (0) 2021.06.22
linux 시간 동기화 date  (0) 2021.06.21

관련글 더보기

댓글 영역