深度优化LNMP之PHP
安装PHP加速插件
[root@web02 ~]# cat /etc/redhat-release CentOS release 6.7 (Final)[root@web02 ~]# uname -r2.6.32-573.el6.x86_64[root@web02 ~]# uname -mx86_64
Nginx版本信息[root@web02 application]# /application/nginx/sbin/nginx -Vnginx version: nginx/1.6.3built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) TLS SNI support enabledconfigure arguments: --prefix=/application/nginx-1.6.3/ --user=www --group=www --with-http_ssl_module --with-http_stub_status_modulePHP版本信息[root@web02 application]# /application/php/bin/php -vPHP 5.5.32 (cli) (built: May 24 2016 13:55:46) Copyright (c) 1997-2015 The PHP GroupZend Engine v2.5.0, Copyright (c) 1998-2015 Zend TechnologiesMySQL版本信息[root@db01 ~]# mysql -Vmysql Ver 14.14 Distrib 5.5.49, for linux2.6 (x86_64) using readline 5.1
[root@web02 ~]# echo 'export LC_ALL=C' >>/etc/profile#设置环境变量,解决后面perl程序插件的编译问题[root@web02 ~]# tail -1 /etc/profileexport LC_ALL=C[root@web02 ~]# source /etc/profile[root@web02 ~]# echo $LC_ALLC
有关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.bz2tar xf eaccelerator-0.9.6.1.tar.bz2cd 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扩展都要指定这个参数,请读者注意,后面过程中不再提及。makemake installcd ../ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/提示:php5.5不支持
tar xf xcache-3.2.0.tar.bz2cd xcache-3.2.0/application/php/bin/phpize./configure --enable-xcache --with-php-config=/application/php/bin/php-configmakemake installls -l /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/xcache.so cd ..[root@web02 xcache-3.2.0]# ls -l /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/xcache.so -rwxr-xr-x 1 root root 692884 May 30 12:20 /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/xcache.so
cd /home/oldboy/tools/wget -q http://pecl.php.net/get/zendopcache-7.0.5.tgztar xf zendopcache-7.0.5.tgzcd zendopcache-7.0.5/application/php/bin/phpize./configure --enable-opcache --with-php-config=/application/php/bin/php-configmakemake installls -l /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/cd ..
安装数据库缓存以及其他扩展插件
cd /home/oldboy/tools/wget -q http://pecl.php.net/get/memcache-2.2.7.tgztar zxf memcache-2.2.7.tgzcd memcache-2.2.7/application/php/bin/phpize./configure --enable-memcache --with-php-config=/application/php/bin/php-configmakemake installcd ../ [root@web02 memcache-2.2.7]# ls /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/memcache.so opcache.so xcache.so
wget https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gzmv 2.2.4.tar.gz phpredis-2.2.4.tar.gz tar xf phpredis-2.2.4.tar.gzcd phpredis-2.2.4/application/php/bin/phpize ./configure --enable-redis --with-php-config=/application/php/bin/php-configmakemake installll /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/
安装PDO_MYSQL扩展模块
cd /home/oldboy/toolswget -q http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgztar xf PDO_MYSQL-1.0.2.tgz cd PDO_MYSQL-1.0.2//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.32/ext/pdo_mysql/[root@web02 pdo_mysql]# lsCREDITS mysql_statement.oconfig.m4 package2.xmlconfig.w32 pdo_mysql.cget_error_codes.php pdo_mysql.lomysql_driver.c pdo_mysql.omysql_driver.lo php_pdo_mysql.hmysql_driver.o php_pdo_mysql_int.hmysql_statement.c php_pdo_mysql_sqlstate.hmysql_statement.lo tests
cd /home/oldboy/tools/php-5.5.32/ext/pdo_mysql//application/php/bin/phpize./configure --with-php-config=/application/php/bin/php-config --with-pdo-mysql=/application/mysqlmakemake installll /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/企业环境直接编译php直接加--whith-pdo-mysql=
安装其他的PHP扩展插件模块
1.安装ImageMagick图像软件
ls -l ImageMagick-6.7.9-9.tar.xztar xf ImageMagick-6.7.9-9.tar.xzcd ImageMagick-6.7.9-9./configuremake && make installcd ../
需要ImageMagick-6.7.9-9.tar.xz的支持,因此,注意先后顺序。
tar zxf imagick-3.1.0.tgzcd imagick-3.1.0/application/php/bin/phpize./configure --with-php-config=/application/php/bin/php-configmakemake installll /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/#会在此处显示一个imagick.so
配置Memcached/pdo_mysql/imagick模块生效
vim /application/php/lib/php.ini 716 ; extension_dir = "./" 717 ; On windows: 718 ; extension_dir = "ext"可以在最后一行extension_dir = "/application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/"#此处参数就是刚刚我们查看模块的地址extension = memcache.soextension = pdo_mysql.soextension = imagick.so查看生效情况:也可以使用phpinfo.php[root@web02 ~]# /application/php/bin/php -m|egrep "memcache|pdo_mysql|imagick" imagickmemcachepdo_mysql
ln -s /application/mysql-5.5.32/lib/libmysqlclien.so.18 /usr/lib64/libmysqlclient.so.18
[root@web02 ~]# cat /etc/ld.so.confinclude 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.soeaccelerator.shm_size="64"eaccelerator.cache_dir="/tmp/eaccelerator"eaccelerator.enable="1"eaccelerator.optimizer="1"eaccelerator.check_mtime="1"eaccelerator.debug="0"eaccelerator.filter=""eaccelerator.shm_max="0"eaccelerator.shm_ttl="3600"eaccelerator.shm_prune_period="3600"eaccelerator.shm_only="0"eaccelerator.compress="1"eaccelerator.compress_level="9"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.comtmpfs是一种基于内存的文件系统。[root@web02 ~]# df -h #检查挂载情况Filesystem Size Used Avail Use% Mounted on/dev/sda3 6.6G 4.2G 2.1G 67% //dev/sda1 190M 36M 145M 20% /boottmpfs 16M 0 16M 0% /tmp/www.abcdocker.com
永久挂载设置[root@web02 ~]# tail -1 /etc/fstab tmpfs /tmp/www.abcdocker.com tmpfs size=16m 0 0[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=16384k 0 0
配置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.0]# cat xcache.ini >>/application/php/lib/php.ini
[root@web02 ~]# /application/php/bin/php -vPHP 5.5.32 (cli) (built: May 24 2016 13:55:46) Copyright (c) 1997-2015 The PHP GroupZend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies with XCache v3.2.0, Copyright (c) 2005-2014, by mOo with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo
[root@web02 xcache-3.2.0]# echo -n "123456"|md5sum e10adc3949ba59abbe56e057f20f883e -
[xcache.admin]xcache.admin.enable_auth = Onxcache.admin.user = "abcdocker" #此处是用户名xcache.admin.pass = "e10adc3949ba59abbe56e057f20f883e"#此处是md5加密的密码路径提示:要求密码必须要使用md5加密
[root@web02 xcache-3.2.0]# cp -a htdocs/ /application/nginx/html/blog/xadmin[root@web02 xcache-3.2.0]# chown -R www.www /application/nginx/html/blog/xadmin[root@web02 xcache-3.2.0]# pkill php-fpm[root@web02 xcache-3.2.0]# /application/php/sbin/php-fpm
[Date]; Defines the default timezone used by the date functions; http://php.net/date.timezonedate.timezone = Asia/Chongqing去掉注释,修改地址
配置ZendOpcache参数
[opcache]zend_extension=/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/opcache.so;extension=opcache.soopcache.memory_consumption=32 opcache.interned_strings_buffer=8opcache.max_accelerated_files=1000 opcache.revalidate_freq=60 opcache.fast_shutdown=1opcache.enable_cli=1
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.5]# cd zendopcache-7.0.5[root@web02 zendopcache-7.0.5]# 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 [1]
Nginx基本安全优化 1.调整参数隐藏Nginx版本号信息 一般来说,软件的漏洞都和版本有关,因此我们应尽量隐藏或清除Web服务队访问的用户显示各类敏感信息(例如:Web软件名称及版本号等信息),这 ...
- 深度优化LNMP之MySQL
MySQL数据库优化框架体系 1.硬件层面优化 2.操作系统层面优化 3.MySQL数据库层面优化 4.MySQL安全优化 5.网站集群架构上的优化 6.MySQL流程.制度控制优化 硬件层 ...
- 深度优化LNMP之Nginx [2]
配置Nginx gzip 压缩实现性能优化 1.Nginx gzip压缩功能介绍 Nginx gzuo压缩模块提供了压缩文件内容的功能,用户请求的内容在发送出用客户端之前,Nginx服务器会根据 ...
- LAMP 架构深度优化记录
1.Apache worker/prefwork模式说明 在linux中,我们可以用httpd-l 查看安装的模块是prefork模式还是worker模式 [root@LAMP ~]# /applic ...
- [sql]大型网站MySQL深度优化揭秘
大型网站MySQL深度优化揭秘 第1章优化的思路和线路 1.1 网站优化的思路 2 1.2 MySQL优化,nginx这样的东西怎么优化? 第2章硬件层面优化 2.1 数据库物理机 2.1.1 ...
- LAMP架构深度优化
转载地址:https://blog.51cto.com/ucode/1750564 ©著作权归作者所有:来自51CTO博客作者027ryan的原创作品,如需转载,请注明出处,否则将追究法律责任 1.A ...
- LAMP 架构深度优化
转载地址:https://blog.51cto.com/ucode/1750564 ©著作权归作者所有:来自51CTO博客作者027ryan的原创作品,如需转载,请注明出处,否则将追究法律责任1.Ap ...
- 举个栗子看如何做MySQL 内核深度优化
2019独角兽企业重金招聘Python工程师标准>>> 本文由云+社区发表 作者介绍:简怀兵,腾讯云数据库高级工程师,负责腾讯云CDB内核及基础设施建设:先后供职于Thomson R ...
- mysql40190_MySQL 内核深度优化
MYSQL数据库适用场景广泛,相较于Oracle.DB2性价比更高,Web网站.日志系统.数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是I ...
最新文章
- torch 常用函数
- Winform、WPF、Silverlight、MFC区别与联系
- centos7.9使用ssh命令进行登陆云服务器
- 使用EclEmma 插件 解析jacoco.exec文件
- C++类对象作为类成员
- 运营商市场经营方向及趋势
- 88.搭建git服务器 安装与使用gitlab gitlab备份与恢复
- 嘿嘿~~大家一起来测测自己反映速度
- 使用web.xml方式加载Spring时,获取Spring context的两种方式
- linux查看app路径下文件卡死
- python ConfigParser模块 配置文件解析
- drawRGB在N7370上的问题
- android logo颜色渐变,2018,很多APP的logo渐变了 -- 渐变色教程
- 增长黑客手册:如何用数据驱动爆发式增长_思维导图
- Linux x86 漏洞利用-Use-After-Free(UAF)-释放后可重用
- 最新研究报告: 坐飞机哪个位置最安全?
- Java反射invoke报错wrong number of arguments
- 模糊C均值聚类算法的实现
- matlab相机标定教学视频,相机标定入门教程【 OpenCV + Matlab】
- 谷歌浏览器不能同步功能,chrome不能登录解决办法
热门文章
- ajax离开页面方法,如果用户在页面加载完成之前离开页面,则触发jQuery ajaxError()处理程序...
- 参数名称 java_java – 具有重要名称的WSDL中的参数名称
- 【youcans 的 OpenCV 例程200篇】150. 边缘检测梯度算子
- Python小白的数学建模课-04.整数规划
- MDL锁导致mysql夯住_MySQL MetaData Lock 案例分享
- 怎样把电脑恢复出厂设置_数据蛙:苹果恢复出厂设置,彻底释放手机内存
- mysql获取逻辑日志_Mysql 逻辑架构图及日志系统
- sqliteman install parameter
- 声笔双拼单字效率分析
- 从wireshake分析http和https的通信过程