PHP 5.6 + Suhosin + Zend Guard + memcached + Opcache

Last Updated on 11월 8, 2020 by 태랑(정현호)


PHP 5.6을 Source Compile 로 설치 하면서 + Zend Guard + Suhosin + memcached + Opcache 등을 같이 구성하는 글 입니다.


## 선행 패키지 설치 
[root]# yum -y install curl curl-devel zlib.x86_64 zlib-devel.x86_64 \
freetype.x86_64 freetype-devel.x86_64 freetype-utils.x86_64 \
gd.x86_64 gd-devel.x86_64 libjpeg.x86_64 libjpeg-devel.x86_64 \
libpng.x86_64 libpng-devel.x86_64 libmcrypt.x86_64 \
libmcrypt-devel.x86_64 libtool-ltdl-devel.x86_64 autoconf.x86_64 \
libxml2-devel.x86_64 libxml2.x86_64 libcurl.x86_64 libcurl-devel.x86_64


## mysql 설치
웹서버와 DB가 물리적으로 나눠서 사용하더라도 웹서버에서는 mysql은 client library가 필요하여
php 컴파일 하기전에 mysql을 먼저 설치가 필요 합니다, 관련글은 아래를 참조하시면 됩니다.



## Apache 2.4 설치
아래 링크에 참고사항, prefork 방식 설치를 참고해주시면 됩니다.


* Apache 2.4 환경에 php-5.6.40 으로 설치 진행 하였습니다. 
wget https://www.php.net/distributions/php-5.6.40.tar.gz
tar zxvf php-5.6.40.tar.gz
cd php-5.6.40

./configure --prefix=/usr/local/php-5.6.40 --with-apxs2=/usr/local/apache2.4/bin/apxs \
--with-mysql=/usr/local/mysql --with-config-file-path=/etc \
--with-pdo-mysql=/usr/local/mysql  \
--enable-mbstring --with-gd=shared --with-gd --with-jpeg-dir  \
--enable-sockets --with-openssl --with-zlib --with-mcrypt --with-gettext \
--enable-sigchild --with-iconv --with-libxml-dir --with-png-dir \
--with-freetype-dir --with-curl

[root]# make;make install





# PHP Path 설정
vi .bash_profile
PATH=$PATH:/usr/local/php5.6.40/bin
export PATH




# 여기까지 php 정보 확인
# php -v
PHP 5.6.40 (cli) (built: Jul 25 2020 16:21:29)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies





## Suhosin Extension suhosin-0.9.38 설치
Suhosin 설치는 컴파일 전의 php 소스를 패치하는 방법과 익스텐션으로 설치하는 방법인데 2가지가 있으며
extention 방식으로 진행하도록 하게겠습니다.

= 다운로드
https://download.suhosin.org/suhosin-0.9.38.tar.gz


tar zxvf suhosin-0.9.38.tar.gz
cd suhosin-0.9.38

/usr/local/php-5.6.40/bin/phpize 
./configure --with-php-config=/usr/local/php-5.6.40/bin/php-config
make && make install

Installing shared extensions:     /usr/local/php-5.6.40/lib/php/extensions/no-debug-non-zts-20131226/




# /etc/php.ini 에 아래 내용 추가&변경

* 5개는 주석 제거 및 내용 수정
date.timezone = Asia/Seoul
expose_php = Off
post_max_size = 500M
upload_max_filesize = 200M
memory_limit = 512M




[suhosin]
extension=/usr/local/php-5.6.40/lib/php/extensions/no-debug-non-zts-20131226/suhosin.so


# 여기까지 php 정보 확인
# php -v
PHP 5.6.40 (cli) (built: Jul 25 2020 16:21:29)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Suhosin v0.9.38, Copyright (c) 2007-2015, by SektionEins GmbH





## Zend Guard loader download
https://www.zend.com/downloads/zend-guard-loader
# Download link
wget https://www.zend.com/download/HSimaiLlzsupXHIVGFGIhX5K9jO4owEsZI4yNzQQQmBa1rU8
tar zxvf zend-loader-php5.6-linux-x86_64_update1.tar.gz
cd zend-loader-php5.6-linux-x86_64
cp ZendGuardLoader.so /usr/local/php-5.6.40/lib/php/extensions/no-debug-non-zts-20131226/


vi /etc/php.ini 을 열고 아래 내용추가
   * extension 대신에 zend_extension 으로 사용해야함


[Zend]
zend_extension=/usr/local/php-5.6.40/lib/php/extensions/no-debug-non-zts-20131226/ZendGuardLoader.so
zend_loader.enable=1
zend_loader.disable_licensing=0
Zend_loader.obfuscation_level_support=3
# (서버 성능이 낮으면 1)



# php 정보 조회 
PHP 5.6.40 (cli) (built: Jul 25 2020 16:21:29)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend Guard Loader v3.3, Copyright (c) 1998-2015, by Zend Technologies
    with Suhosin v0.9.38, Copyright (c) 2007-2015, by SektionEins GmbH






## memcached-2.2.0 설치
yum -y install libmemcached-devel.x86_64

https://pecl.php.net/package/memcached
tar zxvf memcached-2.2.0.tgz
 
cd  memcached-2.2.0
/usr/local/php-5.6.40/bin/phpize  
./configure --with-zlib-dir=/usr  --with-libmemcached-dir=/usr
 
make ; make install


# make install 완료 후
Installing shared extensions: /usr/local/php-5.6.40/lib/php/extensions/no-debug-non-zts-20131226/

vi /etc/php.ini 을 수정하여 memcached 정보도 추가 합니다.

[memcached]
extension=/usr/local/php-5.6.40/lib/php/extensions/no-debug-non-zts-20131226/memcached.so

# php 정보 조회 하였을때는 memcache의 내역은 보이지 않고 phpinfo.php 를 해서 확인 할 수 있습니다.


 

## Zend Opcache
Zend Opcache 는 php 5.6 이나 php-7.x 버전에서는 Zend Opcache가 포함되어 설치되며
php.ini 파일에서 extension 추가 만으로 사용이 가능 합니다.
[opcache]
zend_extension=/usr/local/php-5.6.40/lib/php/extensions/no-debug-non-zts-20131226/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1


* opcache.memory_consumption 이 단위는 MB 입니다.




========= 추가 내역 - mysqli  =========
PHP 소스컴파일 이후 mysqli 설치하기
 
cd /root/pkg/php-5.6.40/ext/mysqli
/usr/local/php-5.6.40/bin/phpize
./configure --with-php-config=/usr/local/php-5.6.40/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config
 
 
make 하기전에 에러발생 되는 부분을 수정이 필요합니다.
vi mysqli_api.c
 
ext/mysqlnd/mysql_float_to_double.h
위의 내용을 아래와 같이 수정해줍니다
 
../../ext/mysqlnd/mysql_float_to_double.h
 
 
make ; make install
 
 
Installing shared extensions:     /usr/local/php-5.6.40/lib/php/extensions/no-debug-non-zts-20131226/
Installing header files:           /usr/local/php-5.6.40/include/php/
 
 
vi /etc/php.ini 에서 
[MySQLi]  항목에 아래 extension 추가 
 
extension=/usr/local/php-5.6.40/lib/php/extensions/no-debug-non-zts-20131226/mysqli.so
 
 
 
==============================================




## 여기까지 적용 했을때 php의 정보 확인 

PHP 5.6.40 (cli) (built: Jul 25 2020 16:21:29)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend Guard Loader v3.3, Copyright (c) 1998-2015, by Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
    with Suhosin v0.9.38, Copyright (c) 2007-2015, by SektionEins GmbH

 





답글 남기기