Linux系統(tǒng)環(huán)境
[root@lnmp ~]# cat /etc/redhat-release #==》系統(tǒng)版本
CentOS release 6.7 (Final)
[root@lnmp ~]#uname –r #==》內(nèi)核版本
2.6.32-573.el6.x86_64
[root@lnmp ~]#uname -m #==》系統(tǒng)架構(gòu)
x86_64
[root@lnmp ~]#echo $LANG #==》系統(tǒng)字符集
en_US.UTF-8
[root@lnmp ~]# mysql -uroot -p123456 #==》mysql版本
Server version: 5.5.32 MySQL Community Server (GPL)
[root@lnmp ~]# /application/nginx/sbin/nginx -v #==》nginx版本
nginx version: nginx/1.16.0
[root@lnmp ~]# /application/php/bin/php –v #==》PHP版本
PHP 5.3.27 (cli) (built: Jul 9 2019 14:54:53)
[root@lnmp ~]# ip a | awk -F "[ /]+" 'NR==8{print $3}' #==》IP地址
10.0.0.8
PHP****緩存加速器介紹
1、操作碼緩存介紹
請求一個PHP程序時,PHP引擎會解析該程序,并將其編譯為特定操作碼,這是要執(zhí)行的代碼的一種二進制表示形式,隨后,此操作碼由PHP引擎執(zhí)行并丟棄。操作碼緩存將保存這個編譯后的操作碼,并在下一次調(diào)用該頁面時重用它。這會節(jié)省很多重復(fù)編譯的時間。
為了提高PIHP引擎的執(zhí)行效率,PHP緩存加速器設(shè)計的目的是緩存PHP解析過的操作碼,這樣同樣的請求訪問過來,PHP引擎就不需要解析轉(zhuǎn)換了,可以直接調(diào)用PHP的操作碼,這樣就提高了web服務(wù)的響應(yīng)速度,從而提升了用戶的訪問體驗。
PHP緩存加速器將內(nèi)容進行緩存,目的是防止PHP每次請求都重復(fù)編譯解析PHP程序代碼,因為在高訪問量的網(wǎng)站上,大量的重復(fù)編譯會消耗很多資源和事件,所以這里面的瓶頸就是PHP的重復(fù)編譯既影響了響應(yīng)速度,又加重了服務(wù)器的負(fù)載,為了解決此問題,PHP加速器就這樣誕生了。
PHP緩存加速器軟件種類
1、xchache 推薦使用(更快,版本一直持續(xù)更新,社區(qū)開發(fā)活躍)
2、eaccelerator
3、Zend
4、apc
Phpize是什么?
1、安裝php(fastcgi模式)擴展模塊的時候,都要在擴展模塊軟件目錄下執(zhí)行一名這樣的命令:/application/php/bin/phpize(php已經(jīng)編譯完成安裝的程序目錄)
2、PHP官方解釋phpize作用 https://www.php.net/manual/en/install.pecl.phpize.php#59344
3、phpize是用來擴展php擴展模塊使用命令,通過phpize可以建立php的外掛模塊。例如:在已經(jīng)編譯使用中的php環(huán)境中想加入xcache等擴展模塊,可以使用phpize命令手動添加外掛模塊。
一、Lnmp基本web環(huán)境準(zhǔn)備
在安裝php擴展及緩存加速模塊之前,需要安裝好lnmp的基本環(huán)境,保證lnmp服務(wù)訪問PHP能出現(xiàn)phpinfo的介面信息確認(rèn)PHP正常,同時編寫一個調(diào)用數(shù)據(jù)庫的程序mysql_test.php進行測試,確認(rèn)MySQL數(shù)據(jù)庫正常。系統(tǒng)版本及軟件版本如下所示:
提示:如果與上述版本對不上,在安裝PHP的擴展及緩存加速模塊可能會遇到其它問題。
軟件 版本
Linux CentOS 6.7
Nginx 1.60.0
MySQL 5.5.32_64bit
PHP 5.3.27
二、查看Nginx/MySQL/PHP歷史編譯的信息
1、[root@lnmp ~]# /application/nginx/sbin/nginx –V #==》查看Nginx歷史編譯信息
nginx version: nginx/1.16.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/application/nginx1.6.2 --with-http_stub_status_module --with-http_ssl_module**
2、[root@lnmp ~]# grep CONFIGURE_LINE /application/mysql/bin/mysqlbug #==》查看MySQL歷史編譯信息M,因為本機MySQL是采用MySQL二進制安裝包進行安裝,所以沒有歷史編譯信息
CONFIGURE_LINE=""
`test -n "$CONFIGURE_LINE" && echo "Configure command: $CONFIGURE_LINE"`
3、[root@lnmp ~]# /application/php/bin/php -i | grep configure #==》查看PHP歷史編譯信息
Configure Command => './configure' '--prefix=/application/php5.3.27' '--with-mysql=/application/mysql' '--with-iconv-dir=/usr/local/libiconv' '--with-freetype-dir' '--with-jpeg-dir' '--with-png-dir' '--with-zlib' '--with-libxml-dir=/usr' '--enable-xml' '--disable-rpath' '--enable-safe-mode' '--enable-bcmath' '--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--with-curl' '--with-curlwrappers' '--enable-mbregex' '--enable-fpm' '--enable-mbstring' '--with-mcrypt' '--with-gd' '--enable-gd-native-ttf' '--with-openssl' '--with-mhash' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--enable-short-tags' '--enable-zend-multibyte' '--enable-static' '--with-xsl' '--with-fpm-user=nginx' '--with-fpm-group=nginx' '--enable-ftp'
PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in Unknown on line 0
二、安裝eaccelerator緩存加速模塊(功能與xcache相同,php性能優(yōu)化)
eaccelerator 緩特加速模塊說明:(官網(wǎng)地址:http://eaccelerator.net/ )
eaccelerator是一個自由的開放源代碼的php加速、優(yōu)化和動態(tài)內(nèi)容緩存的擴展模塊,它可以提升php程序的緩存性能,降低PHP程序在解析時對服務(wù)器的性能開銷。eaccelerator還有對PHP優(yōu)化的作用,加快其執(zhí)行效率。使PHP程序代碼執(zhí)效率能提高1-10倍;eAccelerator的前身其實是truck-mmcache,因為開發(fā)truk-mmcache的人被Zend給招安了,所以開發(fā)eAccelerator的人繼承了truk-mmcache的一些特性,設(shè)計出eAccelerator加速器。
無論如何在系統(tǒng)上安裝eaccelerator,都有一些配置選項需要注意,配置文件通常是
/etc/php.d/eaccelerator.ini。eaccelerator.shm_size定義共享高速緩存的大小,編譯后的腳本就存儲在這里。該值的單位是兆字節(jié)(MB)。根據(jù)您的應(yīng)用程序確定恰當(dāng)?shù)拇笮 ?/p>
注意事項:
(1)、eaccelerator-0.9.5.2.tar.gz 適合PHP5.3以前的版本(不包括PHP5.3版本)
(2)、eaccelerator-0.9.6.tar.gz 適合PHP5.3版本
[root@lnmp tools]# mkdir -p /home/oldboy/tools
[root@lnmp tools]# cd /home/oldboy/tools
[root@lnmp tools]# wget [https://sourceforge.net/projects/eaccelerator/files/latest/download](https://sourceforge.net/projects/eaccelerator/files/latest/download) #==》這個下載的是軟件包集合,包含了xcahe/eaccelerator/memcache/imagick軟件包
[root@lnmp tools]# unzip nginx-php-ext-soft.zip
Archive: nginx-php-ext-soft.zip
creating: nginx-php-ext-soft/
inflating: nginx-php-ext-soft/eaccelerator-0.9.6.tar.bz2
inflating: nginx-php-ext-soft/ImageMagick.tar.gz
inflating: nginx-php-ext-soft/imagick-2.3.0.tgz
inflating: nginx-php-ext-soft/memcache-2.2.5.tgz
extracting: nginx-php-ext-soft/PDO_MYSQL-1.0.2.tgz
inflating: nginx-php-ext-soft/xcache-1.3.2.tar.bz2
[root@lnmp tools]# ls
nginx-php-ext-soft nginx-php-ext-soft.zip
[root@lnmp tools]# cd nginx-php-ext-soft
[root@lnmp nginx-php-ext-soft]# ls
ImageMagick.tar.gz PDO_MYSQL-1.0.2.tgz eaccelerator-0.9.6.tar.bz2 imagick-2.3.0.tgz memcache-2.2.5.tgz xcache-1.3.2.tar.bz2
[root@lnmp nginx-php-ext-soft]# mv ./* ../
[root@lnmp tools]# ls
ImageMagick.tar.gz eaccelerator-0.9.6.tar.bz2 memcache-2.2.5.tgz xcache-1.3.2.tar.bz2
PDO_MYSQL-1.0.2.tgz imagick-2.3.0.tgz nginx-php-ext-soft.zip
[root@lnmp tools]# tar xf eaccelerator-0.9.6.tar.bz2
[root@lnmp tools]# cd eaccelerator-0.9.6
[root@lnmp eaccelerator-0.9.6]# /application/php/bin/phpize #==》編譯安裝PHP擴展模塊之前,都必須在擴展模塊安裝包目錄下先執(zhí)行此命令,不然安裝會失敗
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@lnmp eaccelerator-0.9.6]# ./configure --enable-eaccelerator=shared --with-php-config=/application/php/bin/php-config
[root@lnmp eaccelerator-0.9.6]# echo $?
0
[root@lnmp eaccelerator-0.9.6]# make
[root@lnmp eaccelerator-0.9.6]# echo $?
0
#==》編譯安裝成功會顯示eaccelerator擴展模塊在PHP擴展模塊目錄下產(chǎn)生一個模塊名稱加.so結(jié)尾的文件
[root@lnmp eaccelerator-0.9.6]# make install
Installing shared extensions: /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/ #==》lamp和lnmp這個存放擴展模塊的路徑是不相同的
[root@lnmp eaccelerator-0.9.6]# ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
eaccelerator.so
三、安裝xcache緩存加速模塊(功能與eaccelerator相同,php性能優(yōu)化)
xcache 緩存加密模塊說明:(官網(wǎng)地址:https://xcache.lighttpd.net/ )
xcache是一個又快又穩(wěn)定的PHP opcode緩存器。經(jīng)過良好的測試并在大流量/高負(fù)載的生產(chǎn)機器上穩(wěn)定運行,經(jīng)過在linux上測試并支持所有現(xiàn)行PHP分支的最新發(fā)布版本,如PHP4_3 PHP4_4 PHP5_0 PHP5_1 PHP5_2等,并支持線程安全/Windows.與同類opcode緩存器相比更勝一籌,比如能夠快速跟進PHP版本。.
xcahce的2個特點
(1)、將PHP代碼進行編譯(表現(xiàn)類似于.NET和JAVA的編譯,內(nèi)部機制不同),這樣可以不用重復(fù)讀取PHP文件,加速整個程序的運行效率;
(2)、可以緩存數(shù)據(jù)到內(nèi)存中,直接可以用,例如你的一些不會經(jīng)常改動的數(shù)據(jù),只用一次從數(shù)據(jù)庫讀取出來后保存到xcache中,就不用再去讀取數(shù)據(jù)庫了(理想環(huán)境下)。.
[root@lnmp tools]# tar xf xcache-1.3.2.tar.bz2
[root@lnmp tools]# cd xcache-1.3.2
[root@lnmp xcache-1.3.2]# /application/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@lnmp xcache-1.3.2]# ./configure --enable-xcahe --with-php-config=/application/php/bin/php-config
[root@lnmp xcache-1.3.2]# echo $?
0
[root@lnmp xcache-1.3.2]# make
[root@lnmp xcache-1.3.2]# echo $?
0
[root@lnmp xcache-1.3.2]# make install
Installing shared extensions: /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
[root@lnmp xcache-1.3.2]# ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
eaccelerator.so xcache.so
四、安裝memcache數(shù)據(jù)庫緩存擴展模塊 (數(shù)據(jù)庫優(yōu)化)
memcache 緩存軟件說明:(官網(wǎng)地址 http://memcached.org/ )
memcache是一個高性能的分布式的內(nèi)存對象緩存系統(tǒng),通過在內(nèi)存里維護一個統(tǒng)一的巨大的hash表,它能夠用來存儲各種格式的數(shù)據(jù),包括圖像、視頻、文件以及數(shù)據(jù)庫檢索的結(jié)果等。簡單的說就是將數(shù)據(jù)調(diào)用到內(nèi)存中,然后從內(nèi)存中讀取,從而大大提高讀取速度。
Memcache分為服務(wù)端軟件和客戶端插件兩部分:
服務(wù)端軟件名稱memcached-1.4.3.tar.g2
客戶端插件memcache-2.2.5.tgz(本教程使用的是客戶端插件在php服務(wù)中的安裝)
[root@lnmp tools]# tar xf memcache-2.2.5.tgz
[root@lnmp tools]# cd memcache-2.2.5
[root@lnmp memcache-2.2.5]# /application/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@lnmp memcache-2.2.5]# ./configure --with-php-config=/application/php/bin/php-config
[root@lnmp memcache-2.2.5]# echo $?
0
[root@lnmp memcache-2.2.5]# make
[root@lnmp memcache-2.2.5]# echo $?
0
[root@lnmp memcache-2.2.5]# make install
Installing shared extensions: /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
[root@lnmp memcache-2.2.5]# ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
eaccelerator.so memcache.so xcache.so
五、安裝PDO_MYSQL擴展模塊(可選擇安裝)
PDO_MYSOL擴展插件說明:
PDO_MYSOL擴展為PHP訪問數(shù)據(jù)庫定義了一個輕量級的、一致性的接口,它提供了一個數(shù)據(jù)訪問抽象層,這樣,無論使用什么數(shù)據(jù)庫,都可以通過一致的函數(shù)執(zhí)行查詢并獲取數(shù)據(jù)。
[root@lnmp tools]# tar xf PDO_MYSQL-1.0.2.tgz
[root@lnmp tools]# cd PDO_MYSQL-1.0.2
[root@lnmp PDO_MYSQL-1.0.2]# /application/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
config.m4:104: warning: AC_CACHE_VAL(pdo_inc_path, ...): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:2754: PHP_CHECK_PDO_INCLUDES is expanded from...
config.m4:104: the top level
config.m4:104: warning: AC_CACHE_VAL(pdo_inc_path, ...): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:2754: PHP_CHECK_PDO_INCLUDES is expanded from...
config.m4:104: the top level
[root@lnmp PDO_MYSQL-1.0.2]# ./configure --with-php-config=/application/php/bin/php-config --with-pdo-mysql=/application/mysql
[root@lnmp PDO_MYSQL-1.0.2]# echo $?
0
[root@lnmp PDO_MYSQL-1.0.2]# make
[root@lnmp PDO_MYSQL-1.0.2]# echo $?
0
[root@lnmp PDO_MYSQL-1.0.2]# make install
Installing shared extensions: /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
[root@lnmp PDO_MYSQL-1.0.2]# ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
eaccelerator.so memcache.so pdo_mysql.so xcache.so
六、安裝ImageMagick圖像軟件和imagick.php擴展模塊
特殊注意:必須先安裝安裝ImageMagick圖像軟件再安裝imagick.php擴展模塊
1、ImageMagick圖像軟件說明:
(官網(wǎng)地址 http://www.imagemagick.org/script/download.php )
ImageMagick是一套功能強大、穩(wěn)定而且免費的工具集和開發(fā)包,可以用來讀、寫和處理超過89種基本格式的圖片文件,包括流行的TIFF、JPEG、GIF、PNG、PDF以及PhotoCD等格式。利用ImageMagick,你可以根據(jù)web應(yīng)用程序的需要動態(tài)生成圖片,還可以對一個(或一組)圖片進行改變大小、旋轉(zhuǎn)、銳化、減色或增加特效等操作,并將操作的結(jié)果以相同格式或其它格式保存,對圖片的操作,即可以通過命令行進行,也可以用C/C++、Perl、Java、PHP、Python或Ruby 編程來完成。同時ImageMagick提供了一個高質(zhì)量的2D工具包,部分支持SVG.現(xiàn)在,ImageMagic的主要精力集中在性能、減少bug以及提供穩(wěn)定的API和ABI上。功能如下所示:
(1)、將圖片從一個格式轉(zhuǎn)換到另一個格式,包括直接轉(zhuǎn)換成圖標(biāo)
(2)、改變尺寸、旋轉(zhuǎn)、銳化(sharpen)、減色、圖片特效3.縮略圖片的合成圖
(3)、適于web的背景透明的圖片
(4)、將一組圖片作成gif動畫,直接convert
(5)、將幾張圖片作成一張組合圖片,montage
(6)、在一個圖片上寫字或畫圖形,帶文字陰影和邊框渲染
ImageMagick圖像軟件安裝前注意事項:
(1)、安裝這個ImageMagick軟件為了是后面安裝imagick.php擴展模塊直接調(diào)用ImageMagick軟件,必須先安裝ImageMagick軟件,否則安裝imagick.php擴展模塊會提示報錯。
(2)、安裝ImageMagick軟件前必需安裝perl相關(guān)軟件,否則在執(zhí)行make會提示如下報錯。
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 24.
BEGIN failed--compilation aborted at Makefile.PL line 24.
make[1]: *** [PerlMagick/Makefile] Error 2
make[1]: Leaving directory `/home/oldboy/tools/ImageMagick-6.5.1-2'
make: *** [all] Error 2
[root@lnmp tools]# tar xf ImageMagick.tar.gz
[root@lnmp tools]# cd ImageMagick-6.5.1-2/
[root@lnmp ImageMagick-6.5.1-2]# yum -y install perl-devel
[root@lnmp ImageMagick-6.5.1-2]# ./configure
[root@lnmp ImageMagick-6.5.1-2]# echo $?
0
[root@lnmp ImageMagick-6.5.1-2]# make
[root@lnmp ImageMagick-6.5.1-2]# echo $?
0
[root@lnmp ImageMagick-6.5.1-2]# make install
[root@lnmp ImageMagick-6.5.1-2]# echo $?
0
2、imagick.php擴展模塊說明:
特別提示:imagick插件工作需要ImageMagick軟件的支持,所以,必須要先安裝ImageMagick,否則會報錯
一個可以供PHP調(diào)用lImageMagick功能的PHP擴展。使用這個擴展可以使PHP具備和ImageMagick相同的功能。
裝了ImageMagick-6.5.1-2圖像程序后,再裝php的擴展imagick插件,才能使用ImageMagick-6.5.1-2提供的api來進行圖片的創(chuàng)建與修改、壓縮等操作,都集成在imagick這個擴展中。
[root@lnmp tools]# tar xf imagick-2.3.0.tgz
[root@lnmp tools]# cd imagick-2.3.0
[root@lnmp imagick-2.3.0]# /application/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@lnmp imagick-2.3.0]# ./configure --with-php-config=/application/php/bin/php-config
[root@lnmp imagick-2.3.0]# echo $?
0
[root@lnmp imagick-2.3.0]# make
[root@lnmp imagick-2.3.0]# echo $?
0
[root@lnmp imagick-2.3.0]# make install
Installing shared extensions: /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
[root@lnmp imagick-2.3.0]# ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
eaccelerator.so imagick.so memcache.so pdo_mysql.so xcac a5