WEB Server - PHP 확장 모듈(phpize) 알아보기
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 명령어로 확장 모듈이 적용된 것을 확인하실 수 있습니다.