태그 Archives: NTS

webtatic 저장소를 이용한 php 7 설치

php 는 httpd 의존이기 때문에 php를 설치하는것만으로 httpd 가 설치 된다.
즉 httpd 먼저 설치하고 php를 설치해야 한다.

webtatic의 php 는 기본적으로 nts 이며 apache 가 prefork mpm 이 아닐 경우(worker, event) zts 모듈이 로딩이 되므로 매우 편리하게 사용할 수 있다.
아울러 yum을 이용한 설치이기 때문에 더 훌륭하다 =3=b

 

레포지트리 설치

 

php7 설치

 

httpd 의 mpm 방식은 아래와 같이 확인한다.

httpd -V 의 값에서 MPM 이 worker 로 확인 되었기 때문에 cron 등에 등록을 하려면 zts-php 명령어를 써야 한다.
worker 방식은 메모리를 적게 쓰지만 다종의 웹솔루션을 운영하기엔 적합하지 않다.
다만 apache 2.4.27 에서 부터 http/2 를 지원하는데 있어서 profork 방식을 더 이상 지원하지 않는다.

 

서버에서 php 명령어 실행은 아래와 같이 한다.

 

httpd를 worker MPM 으로 설치 하고 webtatic 제공의 php 를 설치한 서버에서 오라클 접속을 사용하기 위해 oci8 익스텐션 설치 진행은 아래와 같이 진행 했다.
phpize, config-php 역시 각각 zts-phpize, zts-php-config 의 것을 사용한다.

 

설치된 oci8 은 웹문서에서 phpinfo(); 로 호출하거나 리눅스 쉘에서 아래와 같이 확인이 가능하다.

 

PS. webtatic 에서는 php70w-odbc를 제공 하므로 yum 설치로 odbc를 이용할 수 있다.

 

PHP 5.2.17 NTS모드로 설치

일반적으로 php 는 아파치의 설치 옵션(MPM)에 따라 NTS(Non Thread Safety) 모드 혹은 TS(Thread Safety) 모드로 설치가 된다.

php 5.2.x 는 설치할때 버그가 있다 ‘ㅅ’a

* 정확히는 아파치2 (apxs2) 나온시기 보다 이전 버전의 php를 설치할때인듯 하다. *

* 현재 까지 테스트 결과로는 php 5.2.x 를 포함한 이전버전 *

때문에 apache 를 prefork 방식으로 설치하더라도 실제 php 는 TS 모드로 설치가 된다.

 

이는 php extention 설치시 문제를 발생시킨다 (대표적으로 zend optimizer 설치를 진행할경우 인식이 안됨)

때문에 Zend manager 를 이용하여 올리는 방법등이 있다.

 

이유는 다음과 같다 configure 스크립트에서

APXS_MPM=$APXS -q MPM_NAME 으로 아파치의 mpm 을 인식해서 설치 진행을 한다 ‘ㅅ’a

문제는 위와 같이 없는 명령어로 인식해서 아파치가 무엇으로 깔려 있든 TS 모드로 설치 진행이 된다.

(apache 1 버전에서는 당연히 저 명령어로 mpm 구분을 할수 있다.)

 

여기서는 configure 파일을 수정해서 NTS 모드로 설치 진행하기위해 따라할 수 있는 부분이다 ‘ㅅ’aa

php 압축파일 다운로드 를 하시공.

/ 5621번째줄 6469번째줄을 아래와 같이 수정한다 /

 

그후 configure -> make -> make install 로 NTS 모드로 설치가 된다.

설치 이후 확인을 해보는 명령어 ‘ㅅ’aa

 

zend optimizer+ 최신버전인 3.3.9도 정상 동작이 된다 ‘ㅅ’a

 

혹여 아파치 2.4 와 함께 설치할때는 압축해제 후

php-5.2.17/sapi/apache2handler/php_functions.c 파일의

내장 함수 unixd_config 을 ap_unixd_config 으로 수정해야 된다.

386번째 줄에 1개 , 417번째 줄에 3개 가 있다.

 

음 추가로 64bit linux 에서 설치할때에는 아래와 같이 심볼링 링크를 생성해줘야 잘 설치가 된다 ‘ㅅ’a