WEB Server - PHP 7.x 컴파일 설치하기 - CentOS 7




    이번 포스팅에서는 PHP 7.x 버전 관리에 필요한 컴파일 설치에 대해서 알아보도록 하겠습니다.










     PHP 버전 업그레이드에 대한 고려



    웹 사이트를 구축하는데 사용할 수 있는 언어는 다양합니다 그중 PHP는 웹 사이트 환경에 최적화되어 있는 언어이며, 다양한 라이브러리를 가지고 있고 다른 언어에 비해 사용 문법이 쉬우며, 웹사이트를 구현하는데 없는 기능이 없다고 생각됩니다


    그러나 버전이 달라짐에 따라 기존에 함수가 없어지거나 바뀌는 경우가 있어 업그레이드를 진행시 신중해질 수밖에 없습니다


    예를 들어 PHP 5.x으로 개발이 된 홈페이지가 PHP 7.x 버전으로 변경될 경우 안되는 부분이 기능들이 많기 때문에 홈페이지 운영이 어려워질 수 있습니다 그렇기 때문에 다른 언어도 마찬가지겠지 만은 PHP는 유독 버전 관리가 중요한데요






     PHP-FPM 이해와 구성도





    PHP-FPM 별도에 프로세스(Daemon)으로 구동됩니다 그리고 NGINX에서는 PHP-FPM과 소켓 통신으로 연동이 가능하며, 여러 개의 PHP-FPM을 구동시켜서 연동이 가능합니다.





    위 그림은 사이트 별로 구성은 PHP 구성입니다 NGINX를 통해 사이트마다 별도로 원하는 버전으로 연동하는 구성입니다






     PHP 7.x, PHP-FPM 공통




    1. 심볼릭 링크 설정


    [root@php php]# ln -s /usr/lib64/libjpeg.so /usr/lib/
    [root@php php]# ln -s /usr/lib64/libpng.so /usr/lib/
    




    2. libmcrypt-2.5.8 설치


    libmcrypt-2.5.8.tar.gz


    1) libmcrypt-2.5.8.tar.gz 압축해제


    [root@nginx ~]# tar zxf libmcrypt-2.5.8.tar.gz
    



    2) libmcrypt-2.5.8 소스 트리 구성


    [root@nginx ~]# ./configure --prefix=/usr/local/
    



    3) libmcrypt-2.5.8 설치 시작


    [root@nginx ~]# make && make install
    






     PHP 7.1, PHP-FPM 설치




    1. PHP 7.1 압축해제 및 이동


    [root@php php]# tar zxf php-7.1.7.tar.gz 
    [root@php php]# cd php-7.1.7
    




    2. PHP 7.1 소스트리


    [root@php php-7.1.7]# ./configure --prefix=/usr/local/php71 \ --with-mysqli \ --with-mysql=/usr/local/mariadb \ --with-curl \ --disable-debug \ --enable-sockets \ --enable-sysvsem=yes \ --enable-sysvshm=yes \ --enable-ftp \ --enable-gd-native-ttf \ --enable-inline-optimization \ --enable-bcmath \ --with-zlib \ --with-gd \ --with-gettext \ --with-jpeg-dir=/usr \ --with-png-dir=/usr/lib \ --with-freetype-dir=/usr \ --with-libxml-dir=/usr \ --enable-exif \ --enable-sigchild \ --enable-mbstring \ --enable-fpm \ --with-openssl \ --enable-soap




    3. PHP 7.1 컴파일 설치


    [root@php php-7.1.7]# make && make install
    




    4. php 설정파일 복사


    [root@php php-7.1.7]# cp -a php.ini-production /usr/local/php71/lib/php.ini
    [root@php php-7.1.7]# cp -arp /usr/local/php71/etc/php-fpm.conf.default /usr/local/php71/etc/php-fpm.conf
    




    5. PHP 7.1 구동파일 복사 및 권한설정


    [root@php php-7.1.7]# cp -arp sapi/fpm/init.d.php-fpm /etc/init.d/php71-fpm
    [root@php php-7.1.7]# chmod 700 /etc/init.d/php71-fpm
    




    6. PHP-FPM 설정파일 복사


    [root@php php-7.1.7]# cp -arp /usr/local/php71/etc/php-fpm.d/www.conf.default /usr/local/php71/etc/php-fpm.d/www.conf
    






     PHP 7.2, PHP-FPM 설치



    1. PHP 7.2 압축해제 및 이동


    [root@php php]# tar zxf php-7.2.33.tar.gz [root@php php]# cd php-7.2.33




    2. PHP 7.2 소스트리


    [root@php php-7.2.33]# ./configure --prefix=/usr/local/php72 \
    --with-mysqli \
    --with-mysql=/usr/local/mariadb \
    --with-curl \
    --disable-debug \
    --enable-sockets \
    --enable-sysvsem=yes \
    --enable-sysvshm=yes \
    --enable-ftp \
    --enable-gd-native-ttf \
    --enable-inline-optimization \
    --enable-bcmath \
    --with-zlib \
    --with-gd \
    --with-gettext \
    --with-jpeg-dir=/usr \
    --with-png-dir=/usr/lib \
    --with-freetype-dir=/usr \
    --with-libxml-dir=/usr \
    --enable-exif \
    --enable-sigchild \
    --enable-mbstring \
    --enable-fpm \
    --with-openssl \
    --enable-soap
    




    3. PHP 7.2 컴파일 설치


    [root@php php-7.2.33]# make && make install
    




    4. PHP 7.2 php 설정파일 복사


    [root@php php-7.2.33]# cp -a php.ini-production /usr/local/php72/lib/php.ini
    [root@php php-7.2.33]# cp -arp /usr/local/php72/etc/php-fpm.conf.default /usr/local/php72/etc/php-fpm.conf
    




    5. PHP 구동파일 복사 및 권한설정


    [root@php php-7.2.33]# cp -arp sapi/fpm/init.d.php-fpm /etc/init.d/php72-fpm
    [root@php php-7.2.33]# chmod 700 /etc/init.d/php72-fpm
    




    6. PHP-FPM 설정파일 복사


    [root@php php-7.2.33]# cp -arp /usr/local/php72/etc/php-fpm.d/www.conf.default /usr/local/php72/etc/php-fpm.d/www.conf






     PHP 7.3, PHP-FPM 설치




    1. PHP 7.3 압축해제 및 이동


    [root@php php]# tar zxf php-7.3.21.tar.gz
    [root@php php]# cd php-7.3.21
    




    2. PHP 7.3 소스트리

    [root@php php-7.3.21]# ./configure --prefix=/usr/local/php73 \
    --with-mysqli \
    --with-mysql=/usr/local/mariadb \
    --with-curl \
    --disable-debug \
    --enable-sockets \
    --enable-sysvsem=yes \
    --enable-sysvshm=yes \
    --enable-ftp \
    --enable-gd-native-ttf \
    --enable-inline-optimization \
    --enable-bcmath \
    --with-zlib \
    --with-gd \
    --with-gettext \
    --with-jpeg-dir=/usr \
    --with-png-dir=/usr/lib \
    --with-freetype-dir=/usr \
    --with-libxml-dir=/usr \
    --enable-exif \
    --enable-sigchild \
    --enable-mbstring \
    --enable-fpm \
    --with-openssl \
    --enable-soap
    




    3. PHP 7.3 컴파일 설치


    [root@php php-7.3.21]# make && make install
    





    4. PHP 7.3 php 설정파일 복사


    [root@php php-7.3.21]# cp -a php.ini-production /usr/local/php73/lib/php.ini [root@php php-7.3.21]# cp -arp /usr/local/php73/etc/php-fpm.conf.default /usr/local/php73/etc/php-fpm.conf




    5. PHP 구동파일 복사 및 권한설정


    [root@php php-7.3.21]# cp -arp sapi/fpm/init.d.php-fpm /etc/init.d/php73-fpm
    [root@php php-7.3.21]# chmod 700 /etc/init.d/php73-fpm
    




    6. PHP-FPM 설정파일 복사


    [root@php php-7.3.21]# cp -arp /usr/local/php73/etc/php-fpm.d/www.conf.default /usr/local/php73/etc/php-fpm.d/www.conf
    






     PHP 7.4, PHP-FPM 설치




    1. PHP 7.4 압축해제 및 이동


    [root@php php]# tar zxf php-7.4.9.tar.gz
    [root@php php]# cd php-7.4.9
    




    2. PHP 7.4 소스트리


    [root@php php-7.4.9]# ./configure --prefix=/usr/local/php74 \
    --with-mysqli \
    --with-mysql=/usr/local/mariadb \
    --with-curl \
    --disable-debug \
    --enable-sockets \
    --enable-sysvsem=yes \
    --enable-sysvshm=yes \
    --enable-ftp \
    --enable-gd-native-ttf \
    --enable-inline-optimization \
    --enable-bcmath \
    --with-zlib \
    --with-gd \
    --with-gettext \
    --with-jpeg-dir=/usr \
    --with-png-dir=/usr/lib \
    --with-freetype-dir=/usr \
    --with-libxml-dir=/usr \
    --enable-exif \
    --enable-sigchild \
    --enable-mbstring \
    --enable-fpm \
    --with-openssl \
    --enable-soap
    




    3. PHP 7.4 컴파일 설치


    [root@php php-7.4.9]# make && make install
    




    4. PHP 7.4 php 설정파일 복사


    [root@php php-7.4.9]# cp -a php.ini-production /usr/local/php74/lib/php.ini
    [root@php php-7.4.9]# cp -arp /usr/local/php74/etc/php-fpm.conf.default /usr/local/php74/etc/php-fpm.conf
    




    5. PHP 구동파일 복사 및 권한설정


    [root@php php-7.4.9]# cp -arp sapi/fpm/init.d.php-fpm /etc/init.d/php74-fpm
    [root@php php-7.4.9]# chmod 700 /etc/init.d/php74-fpm
    




    6. PHP-FPM 설정파일 복사


    [root@php php-7.3.21]# cp -arp /usr/local/php74/etc/php-fpm.d/www.conf.default /usr/local/php74/etc/php-fpm.d/www.conf
    







     PHP 7.x PHP-FPM 포트 설정



    PHP FPM 포트 정보 수정이 필요합니다 기본설정은 9000번 포트이며, 동일한 포트로 지정할 경우 충돌이 발생하여 버전마다 다른 포트로 지정하여야 합니다



    1. PHP 7.1 - PHP-FPM 포트 설정 및 데몬 실행



    1) PHP-FPM 포트설정


    [root@php ~]# vi /usr/local/php71/etc/php-fpm.d/www.conf
    listen = 127.0.0.1:9001
    



    2) PHP-FPM 데몬 실행


    [root@php ~]# service php71-fpm start
    




    2. PHP 7.2 - PHP-FPM 포트 설정 및 데몬 실행


    1) PHP-FPM 포트설정


    [root@php ~]# vi /usr/local/php72/etc/php-fpm.d/www.conf
    listen = 127.0.0.1:9002
    



    2) PHP-FPM 데몬 실행


    [root@php ~]# service php72-fpm start
    




    3. PHP 7.3 - PHP-FPM 포트 설정 및 데몬 실행



    1) PHP-FPM 포트설정


    [root@php ~]# vi /usr/local/php73/etc/php-fpm.d/www.conf
    listen = 127.0.0.1:9003
    


    2) PHP-FPM 데몬 실행


    [root@php ~]# service php73-fpm start
    




    4. PHP 7.4 - PHP-FPM 포트 설정 및 데몬 실행


    1) PHP-FPM 포트설정


    [root@php ~]# vi /usr/local/php74/etc/php-fpm.d/www.conf
    listen = 127.0.0.1:9004
    


    2) PHP-FPM 데몬 실행


    [root@php ~]# service php74-fpm start
    







     PHP-FPM 프로세스 확인




    [root@localhost php-7.4.9]# ps -ef | grep php-fpm root 39830 1 0 20:35 ? 00:00:00 php-fpm: master process (/usr/local/php71/etc/php-fpm.conf) nobody 39831 39830 0 20:35 ? 00:00:00 php-fpm: pool www nobody 39832 39830 0 20:35 ? 00:00:00 php-fpm: pool www root 39844 1 0 20:35 ? 00:00:00 php-fpm: master process (/usr/local/php72/etc/php-fpm.conf) nobody 39845 39844 0 20:35 ? 00:00:00 php-fpm: pool www nobody 39846 39844 0 20:35 ? 00:00:00 php-fpm: pool www root 39858 1 0 20:35 ? 00:00:00 php-fpm: master process (/usr/local/php73/etc/php-fpm.conf) nobody 39859 39858 0 20:35 ? 00:00:00 php-fpm: pool www nobody 39860 39858 0 20:35 ? 00:00:00 php-fpm: pool www root 39872 1 0 20:35 ? 00:00:00 php-fpm: master process (/usr/local/php74/etc/php-fpm.conf) nobody 39873 39872 0 20:35 ? 00:00:00 php-fpm: pool www nobody 39874 39872 0 20:35 ? 00:00:00 php-fpm: pool www root 39878 40325 0 20:36 pts/1 00:00:00 grep --color=auto php-fpm


    ps 명령를 통해 PHP-FPM 이 서버에 구동중인지 확인하시고 진행하시면 됩니다.





     NGINX 사이트마다 PHP-FPM 버전 설정




    1. NGINX - PHP 7.1 Ver Port : 9001


    server {
    	listen	192.168.85.177:80;
           server_name	server-talk.com;
           root	/home/server_talk/public_html;
    
            access_log  /usr/local/nginx/logs/server-talk.com.access.log;
            error_log   /usr/local/nginx/logs/server-talk.com.error.log;
    
    
    
    	# 사용자 요청파일이 php 확장자 파일을 요청할때 사용됩니다.
    	location ~ \.php$ {
    	    #PHP-FPM에서 지정한 IP와 포트를 입력합니다.
    	    fastcgi_pass   127.0.0.1:9001;
    
    	    #PHP-FPM에 전달하게될 스크립트 파일명
    	    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    
    	    #FastCGI 관련 구성 설정 정보를 포함합니다.
    	    include        fastcgi_params;
    	}
    }
    





    2. NGINX - PHP 7.2 Ver Port : 9002


    server {
    	listen	192.168.85.177:80;
           server_name	talk.com;
           root	/home/talk/public_html;
    
            access_log  /usr/local/nginx/logs/talk.com.access.log;
            error_log   /usr/local/nginx/logs/talk.com.error.log;
    
    
    	# 사용자 요청파일이 php 확장자 파일을 요청할때 사용됩니다.
    	location ~ \.php$ {
    	    #PHP-FPM에서 지정한 IP와 포트를 입력합니다.
    	    fastcgi_pass   127.0.0.1:9002;
    
    	    #PHP-FPM에 전달하게될 스크립트 파일명
    	    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    
    	    #FastCGI 관련 구성 설정 정보를 포함합니다.
    	    include        fastcgi_params;
    	}
    }
    





    3. NGINX - PHP 7.3 Ver Port : 9003


    server {
    	listen	192.168.85.177:80;
           server_name	server-talk.tistory.com;
           root	/home/server_talk_tistory/public_html;
    
            access_log  /usr/local/nginx/logs/server-talk.tistory.com.access.log;
            error_log   /usr/local/nginx/logs/server-talk.tistory.com.error.log;
    
           error_page 500 502 503 504 /usr/local/nginx/html/50x.html;
    
           location = /usr/local/nginx/html/50x.html {
              root html;
           }
    
    	# 사용자 요청파일이 php 확장자 파일을 요청할때 사용됩니다.
    	location ~ \.php$ {
    	    #PHP-FPM에서 지정한 IP와 포트를 입력합니다.
    	    fastcgi_pass   127.0.0.1:9003;
    
    	    #PHP-FPM에 전달하게될 스크립트 파일명
    	    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    
    	    #FastCGI 관련 구성 설정 정보를 포함합니다.
    	    include        fastcgi_params;
    	}
    }
    





    4. NGINX - PHP 7.4 Ver Port : 9004


    server {
    	listen	192.168.85.177:80;
           server_name	server-talk1.com;
           root	/home/server_talk1/public_html;
    
            access_log  /usr/local/nginx/logs/server-talk1.com.access.log;
            error_log   /usr/local/nginx/logs/server-talk1.com.error.log;
    
    
           error_page 500 502 503 504 /usr/local/nginx/html/50x.html;
    
           location = /usr/local/nginx/html/50x.html {
              root html;
           }
    
    	# 사용자 요청파일이 php 확장자 파일을 요청할때 사용됩니다.
    	location ~ \.php$ {
    	    #PHP-FPM에서 지정한 IP와 포트를 입력합니다.
    	    fastcgi_pass   127.0.0.1:9004;
    
    	    #PHP-FPM에 전달하게될 스크립트 파일명
    	    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    
    	    #FastCGI 관련 구성 설정 정보를 포함합니다.
    	    include        fastcgi_params;
    	}
    }
    


    Posted by Server-talk 서버이야기