深度优化LNMP之PHP (转)
深度优化LNMP之PHP
安装PHP加速插件
[root@web02 ~]# cat /etc/redhat-release
CentOS release 6.7(Final)
[root@web02 ~]# uname -r
2.6.-.el6.x86_64
[root@web02 ~]# uname -m
x86_64
Nginx版本信息
[root@web02 application]#/application/nginx/sbin/nginx -V
nginx version: nginx/1.6.
built by gcc 4.4.(RedHat4.4.7-)(GCC)
TLS SNI support enabled
configure arguments:--prefix=/application/nginx-1.6./--user=www --group=www --with-http_ssl_module --with-http_stub_status_module
PHP版本信息
[root@web02 application]#/application/php/bin/php -v
PHP 5.5.(cli)(built:May24201613::)
Copyright(c)-2015The PHP Group
ZendEngine v2.5.0,Copyright(c)-2015ZendTechnologies
MySQL版本信息
[root@db01 ~]# mysql -V
mysql Ver14.14Distrib5.5.49,for linux2.(x86_64)using readline 5.1
[root@web02 ~]# echo 'export LC_ALL=C'>>/etc/profile
#设置环境变量,解决后面perl程序插件的编译问题
[root@web02 ~]# tail -/etc/profile
export LC_ALL=C
[root@web02 ~]# source /etc/profile
[root@web02 ~]# echo $LC_ALL
C
有关LNMP环境扩展软件的部署说明
yum -y install perl-CPAN或yum -y install perl-devel
安装PHP缓存加速器扩展
wget https://github.com/downloads/eaccelerator/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
tar xf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
/application/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/application/php/bin/php-config
#<==configure的参数路径要正确配置,特别是后面的--with-php-config参数对应的PHP安装目录地址,几乎所有的PHP扩展都要指定这个参数,请读者注意,后面过程中不再提及。
make
make install
cd ../
ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-/
提示:php5.5不支持
tar xf xcache-3.2..tar.bz2
cd xcache-3.2.
/application/php/bin/phpize
./configure --enable-xcache --with-php-config=/application/php/bin/php-config
make
make install
ls -l /application/php5.5.32/lib/php/extensions/no-debug-non-zts-/xcache.so
cd ..
[root@web02 xcache-3.2.]# ls -l /application/php5.5.32/lib/php/extensions/no-debug-non-zts-/xcache.so
-rwxr-xr-x root root 692884May3012:/application/php5.5.32/lib/php/extensions/no-debug-non-zts-/xcache.so
cd /home/oldboy/tools/
wget -q http://pecl.php.net/get/zendopcache-7.0.5.tgz
tar xf zendopcache-7.0..tgz
cd zendopcache-7.0.
/application/php/bin/phpize
./configure --enable-opcache --with-php-config=/application/php/bin/php-config
make
make install
ls -l /application/php5.3.27/lib/php/extensions/no-debug-non-zts-/
cd ..
安装数据库缓存以及其他扩展插件
cd /home/oldboy/tools/
wget -q http://pecl.php.net/get/memcache-2.2.7.tgz
tar zxf memcache-2.2..tgz
cd memcache-2.2.
/application/php/bin/phpize
./configure --enable-memcache --with-php-config=/application/php/bin/php-config
make
make install
cd ../
[root@web02 memcache-2.2.]# ls /application/php5.5.32/lib/php/extensions/no-debug-non-zts-/
memcache.so opcache.so xcache.so

wget https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz
mv 2.2..tar.gz phpredis-2.2..tar.gz
tar xf phpredis-2.2..tar.gz
cd phpredis-2.2.
/application/php/bin/phpize
./configure --enable-redis --with-php-config=/application/php/bin/php-config
make
make install
ll /application/php5.5.32/lib/php/extensions/no-debug-non-zts-/
安装PDO_MYSQL扩展模块
cd /home/oldboy/tools
wget -q http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
tar xf PDO_MYSQL-1.0..tgz
cd PDO_MYSQL-1.0./
/application/php/bin/phpize
./configure --with-php-config=/application/php/bin/php-config --with-pdo-mysql=/application/mysql
[root@web02 tools]# cd php-5.5./ext/pdo_mysql/
[root@web02 pdo_mysql]# ls
CREDITS mysql_statement.o
config.m4 package2.xml
config.w32 pdo_mysql.c
get_error_codes.php pdo_mysql.lo
mysql_driver.c pdo_mysql.o
mysql_driver.lo php_pdo_mysql.h
mysql_driver.o php_pdo_mysql_int.h
mysql_statement.c php_pdo_mysql_sqlstate.h
mysql_statement.lo tests
cd /home/oldboy/tools/php-5.5./ext/pdo_mysql/
/application/php/bin/phpize
./configure --with-php-config=/application/php/bin/php-config --with-pdo-mysql=/application/mysql
make
make install
ll /application/php5.5.32/lib/php/extensions/no-debug-non-zts-/
企业环境直接编译php直接加--whith-pdo-mysql=
安装其他的PHP扩展插件模块
1.安装ImageMagick图像软件
ls -l ImageMagick-6.7.-.tar.xz
tar xf ImageMagick-6.7.-.tar.xz
cd ImageMagick-6.7.-
./configure
make && make install
cd ../
需要ImageMagick-6.7.9-9.tar.xz的支持,因此,注意先后顺序。
tar zxf imagick-3.1..tgz
cd imagick-3.1.
/application/php/bin/phpize
./configure --with-php-config=/application/php/bin/php-config
make
make install
ll /application/php5.5.32/lib/php/extensions/no-debug-non-zts-/
#会在此处显示一个imagick.so
配置Memcached/pdo_mysql/imagick模块生效
vim /application/php/lib/php.ini
; extension_dir ="./"
;On windows:
; extension_dir ="ext"
可以在最后一行
extension_dir = "/application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/"
#此处参数就是刚刚我们查看模块的地址
extension = memcache.so
extension = pdo_mysql.so
extension = imagick.so
查看生效情况:也可以使用phpinfo.php
[root@web02 ~]# /application/php/bin/php -m|egrep "memcache|pdo_mysql|imagick"
imagick
memcache
pdo_mysql


ln -s /application/mysql-5.5./lib/libmysqlclien.so./usr/lib64/libmysqlclient.so.
[root@web02 ~]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/lib64
[root@web02 ~]# ldconfig 刷新
配置eAccelerator插件生效并优化参数
[root@web02 ~]# mkdir -p /tmp/eaccelerator
#此目录可以用tmfs内存文件系统或者SSD固态硬盘来存储
[root@web02 ~]# chown -R www.www /tmp/eaccelerator
#此处用户是nginx的用户
cat >>/application/php/lib/php.ini<<EOF
[eaccelerator]
extension=eaccelerator.so
eaccelerator.shm_size=""
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable=""
eaccelerator.optimizer=""
eaccelerator.check_mtime=""
eaccelerator.debug=""
eaccelerator.filter=""
eaccelerator.shm_max=""
eaccelerator.shm_ttl=""
eaccelerator.shm_prune_period=""
eaccelerator.shm_only=""
eaccelerator.compress=""
eaccelerator.compress_level=""
EOF
| eAccelerator参数 | 解释说明 |
| [eaccelerator] | 开始eAccelerator加速模块配置 |
| extension=eaccelerator.so | 加载eAccelerator加速模块,路径相当于extension_dir的配置 |
| eaccelerator.shm_size=”64″ | 存储缓存数据的共享内存大小,如果为0,则最大值看内核配置/proc/sys/kermel/shmmax。 |
| eaccelerator.cache_dir=”/tmp/eaccelerator” | 磁盘缓存存储路径,缓存内容为precompiled sode、session data、content和user entnes。默认路径为“/tmp/eacclerator” |
| eaccelerator.enable=”1″ | eAccelerator缓存生效开关,1为默认,即生效。0为关闭,即不生效 |
| eaccelerator.optimizer=”1″ | 加速PHP代码执行速度,1为默认值表示激活,0为不激活。用于缓存前的代码加速。 |
| eaccelerator.check_mtime=”1″ | 检查缓存修改时间决定代码是否需要重新编译。1为激活,是默认值 |
| eaccelerator.debug=”0″ | 缓存加速调试。0为关闭,1为打开,打开后可以看到缓存命中信息。 |
| eaccelerator.filter=”” | 设置对象是否缓存规则,控表示不设定。 |
| eaccelerator.shm_max=”0″ | 可以被放置的缓存最大值,0是不限制 |
| eaccelerator.shm_ttl=”3600″ | 缓存文件的生存周期(单位秒) |
| eaccelerator.shm_prune_period=”3600″ | 当共享空间不够时,从共享内存移除老数据的时间周期。 |
| eaccelerator.shm_only=”0″ | 是否允许缓存数据到磁盘,0为允许,但是对于session data and content caching无影响 |
| eaccelerator.compress=”1″ | 是否开启压缩,1为开启 |
| eaccelerator.compress_level=”9″ | 压缩级别,9为最高 |
[root@web02 ~]#/application/php/bin/php -v
[root@web02 ~]# mkdir /tmp/www.abcdocker.com
[root@web02 ~]# mount -t tmpfs -o size=16m tmpfs /tmp/www.abcdocker.com
#创建16M大小的tmpfs类型文件系统挂载到/tmp/www.abcdocker.com
tmpfs是一种基于内存的文件系统。
[root@web02 ~]# df -h #检查挂载情况
Filesystem Size UsedAvailUse%Mounted on
/dev/sda3 .6G .2G .1G %/
/dev/sda1 190M 36M 145M %/boot
tmpfs 16M 16M %/tmp/www.abcdocker.com
永久挂载设置
[root@web02 ~]# tail -/etc/fstab
tmpfs /tmp/www.abcdocker.com tmpfs size=16m
[root@web02 ~]# umount /tmp/www.abcdocker.com/
[root@web02 ~]# grep www /proc/mounts
[root@web02 ~]# mount -a #刷新fstab
[root@web02 ~]# grep www /proc/mounts
tmpfs /tmp/www.abcdocker.com tmpfs rw,relatime,size=16384k00
配置xcache插件加速
| xcache配置文件参数 | 解释说明 |
|
[xcache-common]
extension = xcache.so
|
加载xcache.so,路径相对于extension_dir的配置。自3.0版本开始不再使用zend_extension加载xcache的方式 |
|
[xcache.admin]
xcache.admin.enable_auth = On
|
激活管理员认证 |
|
xcache.admin.user = “mOo”
xcache.admin.pass = “md5 encrypted password”
|
执行xcache管理员用户名和密码,密码根据md5加密产生,留空表示禁止管理页面 |
| [xcache] | 开始xcache缓存参数配置段,下面所有的初始值即为默认值,除非明确说明。 |
| xcache.shm_scheme = “mmap” | 设置XCache如何从系统分配共享内存 |
| xcache.size = 60M | 0为禁止缓存,非0则启用缓存。需要注意系统所允许的mmap最大值 |
| xcache.count = 1 | 指定将cache切分成多少块,官方推荐设置为服务器cpu的数量** grep-c processor /proc/cpuinfo |
| xcache.slots = 8K | 只是作为bash个数的参考值,缓冲超过这个个数的内容没有任何问题 |
| xcache.ttl = 0 | 设置cache对象的生存期TTL(time to live) 0为永不过期 |
| xcache.gc_interval = 0 | 回收期扫描过期的对象回头内存空间的间隔,0为不扫描,其他值的单位是 |
| xcache.var_size = 4M xcache.var_count = 1 xcache.var_slots = 8K xcache.var_slots = 0 xcache.var_gc_interval = 300 |
这几个值和上面的几个类似,只不过用于变量缓存,而不是opcode缓存 |
| xcache.readonly_protection = Off | 如果启用了该参数,将会略微降低性能,但会提高一定的安全系数,这个选项对于 xcache.mmap_path = /dev/zero 无效 |
| xcache.mmap_path = “/dev/zero” | 对于*nix,xcache.mmap_path是一个文件路径而非目录。如果要启用该参数 请使用“/tmp/xcache”这样的路径,而是“/dev/*”如果开启了xcache.readonly_protection参数,不同进程组的PHP将不会共享同一个/tmp/xcache路径 |
| xcache.coredump_directory = “” | 当XCache crash后,是否把数据保存到指定路径 |
| xcache.disable_on_crash = Off | 当xcache发生crash时,自动关闭xcache缓存 |
[root@web02 xcache-3.2.]# cat xcache.ini >>/application/php/lib/php.ini

[root@web02 xcache-3.2.]# echo -n ""|md5sum
e10adc3949ba59abbe56e057f20f883e -
[xcache.admin]
xcache.admin.enable_auth =On
xcache.admin.user ="abcdocker" #此处是用户名
xcache.admin.pass="e10adc3949ba59abbe56e057f20f883e"
#此处是md5加密的密码路径
提示:要求密码必须要使用md5加密
[root@web02 xcache-3.2.]# cp -a htdocs//application/nginx/html/blog/xadmin
[root@web02 xcache-3.2.]# chown -R www.www /application/nginx/html/blog/xadmin
[root@web02 xcache-3.2.]# pkill php-fpm
[root@web02 xcache-3.2.]#/application/php/sbin/php-fpm
[Date]
;Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone =Asia/Chongqing
去掉注释,修改地址
配置ZendOpcache参数
[opcache]
zend_extension=/application/php5.3.27/lib/php/extensions/no-debug-non-zts-/opcache.so
;extension=opcache.so
opcache.memory_consumption=
opcache.interned_strings_buffer=
opcache.max_accelerated_files=
opcache.revalidate_freq=
opcache.fast_shutdown=
opcache.enable_cli=
| opcache参数 | 解释说明 |
| opcache.memory_consumption=32 | Opcache共享内存空间大小,用于存放precompiled PHP code,默认为64,单位为Mbytes |
| opcache.interned_strings_buffer=8 | 默认值为4,interned strings内存的数量,单位是M |
| opcache.max_accelerated_files=1000 | 默认值是2000,Opcache哈希表的key的最大数量 |
| opcache.revalidate_freq=60 | 默认值2,检查文件时间戳的频率,用于共享内存分配的变化。 |
| opcache.fast_shutdown=1 | 默认值为0,如果激活,一个快速的关闭队列奖杯用来加速代码 |
| opcache.enable_cli=1 | 默认值为0,激活PHP CLI的OPcache,用于测试和调试 |
[root@web02 zendopcache-7.0.]# cd zendopcache-7.0.
[root@web02 zendopcache-7.0.]# less README
PHP指定MySQL的编译参数带来的问题
./configure \
--prefix=/application/php5.5.32 \
--with-mysql=/application/mysql/ \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir=/usr/local/libiconv \
.....省略其他参数
pdo_mysql.default_socker=/application/php5.5.32/tmp/mysql.sock
生成环境PHP扩展插件的安装建议
出图工具汇总
深度优化LNMP之PHP (转)的更多相关文章
- 深度优化LNMP之Nginx [2]
深度优化LNMP之Nginx [2] 配置Nginx gzip 压缩实现性能优化 1.Nginx gzip压缩功能介绍 Nginx gzuo压缩模块提供了压缩文件内容的功能,用户请求 ...
- 深度优化LNMP之Nginx (转)
深度优化LNMP之Nginx Nginx基本安全优化 1.调整参数隐藏Nginx版本号信息 一般来说,软件的漏洞都和版本有关,因此我们应尽量隐藏或清除Web服务队访问的用户显示各类敏感信息(例 ...
- 深度优化LNMP
优化前准备工作 Centos准备及配置 准备安装包及软件:http://pan.baidu.com/s/1chHQF 下载解压到U盘即可安装http://pan.baidu.com/s/15TUWf ...
- 深度优化LNMP之PHP
PHP缓存加速介绍 1.操作码介绍及缓存原理 当客户端请求一个php程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码文件(Operate Code,opcode)该文 ...
- 深度优化LNMP之MySQL
MySQL数据库优化框架体系 1.硬件层面优化 2.操作系统层面优化 3.MySQL数据库层面优化 4.MySQL安全优化 5.网站集群架构上的优化 6.MySQL流程.制度控制优化 1 硬件层面优化 ...
- [sql]大型网站MySQL深度优化揭秘
大型网站MySQL深度优化揭秘 第1章优化的思路和线路 1.1 网站优化的思路 2 1.2 MySQL优化,nginx这样的东西怎么优化? 第2章硬件层面优化 2.1 数据库物理机 2.1.1 ...
- ASP.NET WebApi 文档Swagger深度优化
本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明博客园蜗牛原文地址,cnblogs.com/tdws 写在前面 请原谅我这个标题党,写到了第100篇随笔,说是深度优化,其实也并没有什么深度 ...
- MySQL内核深度优化
版权声明:本文由简怀兵原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/179 来源:腾云阁 https://www.qclo ...
- 腾讯云数据库团队:浅谈如何对MySQL内核进行深度优化
作者介绍:简怀兵,腾讯云数据库团队高级工程师,负责腾讯云CDB内核及基础设施建设:先后供职于Thomson Reuters和YY等公司,PTimeDB作者,曾获一项发明专利:从事MySQL内核开发工作 ...
随机推荐
- linux多线程编程(转)
原文地址:http://www.cnblogs.com/BiffoLee/archive/2011/11/18/2254540.html 1.Linux“线程” 进程与线程之间是有区别的,不过Linu ...
- 【OpenCV学习笔记】之六 手写图像旋转函数---万丈高楼平地起
话说,平凡之处显真格,这一点也没错! 比如,对旋转图像进行双线性插值,很简单吧? 可,对我,折腾了大半天,也没有达到预期效果! 尤其是三个误区让我抓瞎好久: 1,坐标旋转公式. 这东西,要用 ...
- springMVC学习笔记--初识springMVC
前一段时间由于项目的需要,接触了springMVC(这里主要是讲3.1版,以下内容也是围绕这个版本展开),发觉其MVC模式真的很强大,也简单易用,完全是基于注解实现其优雅的路径配置的.想想以前接手的项 ...
- C# Adomd Connection Analysis Service View Cube
首先需要先引用 C:\Program Files\Microsoft.NET\ADOMD.NET\100\Microsoft.AnalysisServices.AdomdClient.dll ...
- PowerDesigner实用技巧小结(2)
PowerDesigner实用技巧小结 1.ORACLE数据库建模时,由于ORACLE的表名.字段名如果是小写会有一定的麻烦,需要将小写转化为大写? (1)在打开pdm的情况下,进入Tools-Mod ...
- iOS ipv6
这当中最重要的两个概念是DNS64和NAT64. DNS64 DNS64说白了是用来帮助host获取IPv6地址的,传统的DNS服务器可以把域名转换成IPv4地址,但我们的iPhone设备如果处于IP ...
- Ubuntu下开启root登陆
亲手安装过Ubuntu的童鞋都知道,默认安装只会添加一个普通用户名和密码,而超级用户权限则是利用sudo命令来执行.在Ubuntu下使用root登陆或者在shell中用su命令切换到root时会提示错 ...
- C++ ORM ODB 入门(三)
本节介绍ODB的事务与 异常. 数据库操作经常涉及到操作多个表格,或者表格中的多行数据.因此必须保证整个过程是原子性的.ODB为数据库的事务提供了易于使用的接口. 使用odb::databse的相关方 ...
- 【转】CCUserDefault类深入分析——2013-08-25 22
http://game.dapps.net/gamedev/game-engine/8792.html 另:本章所用Cocos2d-x版本为: 2.1.1 (2013-01-28) 大家好,今天我们来 ...
- Android 自定义View修炼-仿360手机卫士波浪球进度的实现
像360卫士的波浪球进度的效果,一般最常用的方法就是 画线的方式,先绘sin线或贝塞尔曲线,然后从左到右绘制竖线,然后再裁剪圆区域. 今天我这用图片bitmap的方式,大概的方法原理是: (1)首先用 ...