WEB Server - PHP 확장 모듈(phpize) 알아보기




    이번 포스팅은 PHP 확장 모듈 설치에 대해서 알아보도록 하겠습니다.




    관련 글 :


    WEB Server - NGINX Comfile 설치하기 - https://server-talk.tistory.com/301


    WEB Server - NGINX PHP 연동하기 - CentOS 7 - https://server-talk.tistory.com/307


    WEB Server - PHP 7.x 컴파일 설치하기 - CentOS 7 - https://server-talk.tistory.com/312







     모듈 이해하기






    서버를 운영하다 보면 현재 설치되어 서버의 기능으로는 한계가 있습니다 보편적으로 서버를 운영하시는 분들마다 차이는 있겠지만 서버를 설치를 하신 후 기본적인 설정 부분에서 최적화, 튜닝, 패키지 설치 등등 진행합니다


    그러나 점차 시대가 빠르게 지나가면서 새로운 플랫폼의 증가로 API 통해 연동하는 경우가 빈번하게 많이 발생합니다.





    이러한 경우에 API 연동 가이드에 따라서 현재 운영 중인 서버에 API 연동에 따른 모듈, 라이브러리, 패키지 등등 설치가 되어 있는지 확인 후 있다면 바로 연동을 진행하고 없다면 따로 설치해야 됩니다.







     자체 모듈과 확장 모듈 알아보기



    모듈의 정보는 대표적으로 서버를 설치할 때 옵션을 통해 설치하는 자체 모듈(내장 모듈)외부적으로 사용되는 확장 모듈(외장 모듈) 이렇게 2가지로 나누어 집니다.



    1. 자체 모듈(내장 모듈)


    [내장 모듈 구조]


    내장 모듈은 처음 설치할 때 이 모듈을 사용하겠다는 옵션을 주어 설치를 하여야 사용하실 수 있습니다.




    2. 확장 모듈(외장 모듈)


    [확장 모듈 구조]


    확장 모듈은 처음 다른 모듈을 가지고 와서 연동하는 방법입니다.




    3. 자체 모듈(내장 모듈)과 확장 모듈(외장 모듈) 비교



    자체 모듈(내장 모듈)과 확장 모듈(외장 모듈) 비교한다면 자체 모듈이 보안, 안정성 등등으로 자체 모듈이 더 좋다고 말할 수 있겠습니다 하지만 서비스를 운영 중인 서버라면 자체 모듈을 새로 설치한다는 것은 서비스를 중지 후 새롭게 다시 설치해야 되기 때문에 서비스의 순단이 발생합니다


    그러나 확장 모듈은 다릅니다 내가 원하는 모듈을 컴파일, 다운로드를 통해 확장 모듈을 연동하여 프로세스 설정만 잡아주면 되며, 이렇게 되면 운영 중인 서버의 순단이 발생하지 않고 모듈을 설치할 수 있습니다


    서비스의 순단으로 인해 재설치가 어려운 경우 확장 모듈을 사용하며, 자체 모듈에 비해 보안, 안정성으로 떨어지는 부분이 있지만 다른 외부적인 요인, 내부적인 요인을 통해 안정화를 시키는 경우가 많습니다.







     PHP 확장 모듈(phpize) 설치하기



    phpize는 PHP에서 확장 모듈을 설치할 경우 사용되는 명령어입니다.





    1. PHP Ver 확인


    [root@php php-7.1.7]# /usr/local/php71/bin/php -v
    PHP 7.1.7 (cli) (built: Sep 25 2020 09:00:00) ( NTS )
    Copyright (c) 1997-2017 The PHP Group
    Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    


    PHP 버전을 확인하고 버전에 맞는 소스파일을 다운로드하시면 됩니다.





    2. PHP 확장 모듈 설치 위치 경로 이동


    [root@php ~]# cd php-7.1.7
    [root@php php-7.1.7]# cd ext/
    


    압축을 해제하고 소스파일에서 ext 폴더로 이동합니다.





    3. PHP 확장 모듈 확인


    [root@php ext]# ls
    bcmath      dba                 filter   imap       mcrypt   pcntl         pdo_odbc    readline    snmp      sysvsem    xmlrpc
    bz2         dom                 ftp      interbase  mysqli   pcre          pdo_pgsql   recode      soap      sysvshm    xmlwriter
    calendar    enchant             gd       intl       mysqlnd  pdo           pdo_sqlite  reflection  sockets   tidy       xsl
    com_dotnet  exif                gettext  json       oci8     pdo_dblib     pgsql       session     spl       tokenizer  zip
    ctype       ext_skel            gmp      ldap       odbc     pdo_firebird  phar        shmop       sqlite3   wddx       zlib
    curl        ext_skel_win32.php  hash     libxml     opcache  pdo_mysql     posix       simplexml   standard  xml
    date        fileinfo            iconv    mbstring   openssl  pdo_oci       pspell      skeleton    sysvmsg   xmlreader
    


    ext 폴더에는 php에서 사용 가능한 모듈에 폴더가 있습니다





    4. PHP 확장 모듈 경로 이동


    [root@php ext]# cd soap/


    설치가 필요한 모듈의 폴더로 이동합니다.





    4. PHPIZE 실행


    [root@php soap]# /usr/local/php71/bin/phpize
    Configuring for:
    PHP Api Version:         20160303
    Zend Module Api No:      20160303
    Zend Extension Api No:   320160303
    


    모듈 경로에 이동하여 phpize 명령어를 실행하고 실행하면 configure 명령어를 실행할 수 있습니다





    5. PHP 확장 모듈 소스 트리


    사용법 : ./configure --with-php-config=[경로]/bin/php-config --enable-[모듈이름]


    [root@php soap]# ./configure --with-php-config=/usr/local/php71/bin/php-config --enable-soap
    


    소스 트리에서 with-php-cpnfig 옵션으로 php-config 모듈 옵션을 추가하여 진행합니다





    6. PHP 확장 모듈 컴파일 설치


    [root@php soap]# make && make install
    





    7. PHP 확장 모듈 설치 위치 확인


    [root@php soap]# make install
    . . . . . 
    Installing shared extensions:     /usr/local/php71/lib/php/extensions/no-debug-non-zts-20160303/
    


    컴파일 설치가 완료되면 모듈이 설치 경로를 확인하고 해당 경로로 이동하여 모듈이 있는지 확인하면 됩니다





     PHP 확장 모듈 연동하기




    1. PHP 확장 모듈 폴더 생성


    [root@php soap]# mkdir /usr/local/php71/modules
    


    모듈의 관리를 통합하기 위한 폴더를 생성합니다





    2. PHP 확장 모듈 이동


    [root@php soap]# mv /usr/local/php71/lib/php/extensions/no-debug-non-zts-20160303/*.so /usr/local/php71/modules
    


    컴파일 설치한 모듈을 이동 합니다.





    3. PHP 확장 모듈 설정


    [root@php soap]# vi /usr/local/php71/lib/php.ini
    extension_dir = "/usr/local/php71/modules"
    extension=soap.so
    


    php.ini 파일에 모듈의 경로를 지정하고 컴파일 설치한 모듈의 이름을 정의합니다.





    4. PHP-FPM 재시작


    [root@php soap]# service php71-fpm restart
    


    php-fpm을 재시작하여 설정 정보를 반영합니다.





    5. PHP 모듈 정보 확인


    [root@php soap]# /usr/local/php71/bin/php -m
    [PHP Modules]
    . . . .
    soap
    . . . .
    


    php 명령어로 확장 모듈이 적용된 것을 확인하실 수 있습니다.

    Posted by 서버이야기