Linux编译升级php的详细方法


Posted in PHP onNovember 04, 2013

服务器环境:CentOS ? 5.4
php升级:5.4.14 - 5.5.0
升级心得:比较顺利,但是有一点需要说明:eaccelerator无法兼容php5.5.0,好在php在5.5.0默认提供了Zend OPcache,所以一直习惯eaccelerator的朋友如果要升级到php5.5.0的话,可能要暂时和eaccelerator说bye bye了。
1、安装php5.5.0
下载php安装包:http://www.php.net/get/php-5.5.0.tar.gz/from/a/mirror

# 解压缩安装包
tar zxvf php-5.5.0.tar.gz# 进入目录
cd php-5.5.0
# 编译安装
./configure \
--prefix=/usr/local/webserver/php-d/php-5.5.0 \
--with-config-file-path=/usr/local/webserver/php-d/php-5.5.0/etc \
--with-config-file-scan-dir=/usr/local/webserver/php-d/php-5.5.0/etc/php.d \
--with-curl=/usr/local/lib \
--with-freetype-dir=/usr/lib64 \
--with-gd \
--with-gettext \
--with-iconv-dir=/usr/local/lib \
--with-jpeg-dir=/usr/lib64 \
--with-kerberos \
--with-ldap \
--with-ldap-sasl \
--with-libdir=lib64 \
--with-libxml-dir=/usr/lib64 \
--with-mcrypt \
--with-mhash \
--with-mysql \
--with-mysqli \
--with-openssl \
--with-pcre-regex=/usr \
--with-pdo-mysql=shared \
--with-pdo-sqlite=shared \
--with-pear=/usr/local/lib/php \
--with-png-dir=/usr/lib64 \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-gd-native-ttf \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-xml \
--enable-zip \
--disable-rpath
make ZEND_EXTRA_LIBS='liconv'
make install
cp php.ini-production /usr/local/webserver/php-d/php-5.5.0/etc/php.ini

这里有几个地方需要说明一下:
安装时,请根据自己的情况添加、删除附加组建,修改对应的目录路径
安装的时候别忘记了搭配opcache:?enable-opcache
php-5.3.10编译时加了?enable-safe-mode选项,但是php-5.4.0已经去掉了该选项,编译时可以 ./configure ?help | grep “safe-mode” 查看一下,没有信息输出,表示已经不支持!
同样去处的还有:'?enable-discard-path','?enable-fastcgi','?enable-force-cgi-redirect','?with-curlwrappers'
2.编译安装php5.5.0扩展模块:
安装imagick
安装这个模块需要服务器支持ImageMagick,这里和升级php无关,这部分省略,需要的请自行搜索
下载地址:http://pecl.php.net/package/imagick
tar xvzf imagick-3.1.0RC2.tgz
cd imagick-3.1.0RC2
/usr/local/webserver/php-d/php-5.5.0/bin/phpize
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
./configure --with-php-config=/usr/local/webserver/php-d/php-5.5.0/bin/php-config
make
make install

注意:
避免兼容问题,请使用最新版本,请不要使用3.0.1之前的版本
如果安装的时候报错make: *** [imagick_file.lo] 错误 1,请调用pkgconfig
以上目录路径请根据个人情况进行修改
安装memcache:
安装这个模块需要服务器支持memcached,这里和升级php无关,这部分省略,需要的请自行搜索
下载地址:http://pecl.php.net/package/memcache
tar xvzf memcache-3.0.tgz
cd memcache-3.0.8
/usr/local/webserver/php-d/php-5.5.0/bin/phpize
./configure \
--enable-memcache \
--with-php-config=/usr/local/webserver/php-d/php-5.5.0/bin/php-config
make
make install

注:请不要使用2.2.6及以下版本,不兼容
安装phpredis-master
安装这个模块需要服务器支持redis,这里和升级php无关,这部分省略,需要的请自行搜索
下载地址:https://github.com/nicolasff/phpredis
unzip master
cd phpredis-master
/usr/local/webserver/php-d/php-5.5.0/bin/phpize
./configure \
--enable-redis \
--with-php-config=/usr/local/webserver/php-d/php-5.5.0/bin/php-config
make
make install

至此,所有需要的模块都安装完毕。
3.配置php.ini
vi /usr/local/webserver/php-d/php-5.5.0/etc/php.ini# 找到extension_dir
extension_dir = "/usr/local/webserver/php-d/php-5.5.0/lib/php/extensions/no-debug-non-zts-20121212/"
extension = "imagick.so"
extension = "memcache.so"
extension = "pdo_mysql.so"
extension = "redis.so"
# 找到date.timezone
date.timezone = Asia/Shanghai
# 找到session.save_handler
session.save_handler = redis
# 找到session.save_path
session.save_path = "tcp://127.0.0.1:6379?weight=1"

配置Zend OPcache
一直以来都习惯用eAccelerator为php提供加速,但是目前有两个问题:
eAccelerator暂时不兼容php5.5.0
eAccelerator和Zend Opcache冲突
好在php5.5.0默认提供了Zend Opcache为php加速,配置方法如下:
zend_extension = /usr/local/webserver/php-d/php-5.5.0/lib/php/extensions/no-debug-non-zts-20121212/opcache.so
; 上面zend_extension路径为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

注意:如果在您的php扩展模块找不到opcache.so说明没有安装成功,请重新安装
4.配置php-fpm.conf
pid = /usr/local/webserver/php-d/php-5.5.0/var/run/php-fpm.pid
error_log = /usr/local/webserver/php-d/php-5.5.0/logs/php-fpm.loglog_level = notice
emergency_restart_threshold = 10
emergency_restart_interval = 60s
process_control_timeout = 5s
daemonize = yes
rlimit_files = 65535
rlimit_core = 0
user = www
group = www
listen.backlog = -1
listen.owner = www
listen.group = www
listen.mode = 0666
listen.allowed_clients = 127.0.0.1
pm = static
pm.max_children = 64
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 1024
ping.response = pong
slowlog = /usr/local/webserver/php-d/php-5.5.0/logs/$pool.log.slow
request_slowlog_timeout = 0
request_terminate_timeout = 0
catch_workers_output = yes
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f jht2718@163.com
php_flag[display_errors] = on

备注:请根据自己的情况修改配置文件
5.修改启动项:
cp /usr/local/webserver/php-d/php-5.5.0/bin/php /etc/init.d/php
PHP 相关文章推荐
微盾PHP脚本加密专家php解密算法
Sep 13 PHP
五款PHP代码重构工具推荐
Oct 14 PHP
PHP实现采集中国天气网未来7天天气
Oct 15 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
ThinkPHP自动完成中使用函数与回调方法实例
Nov 29 PHP
PHP中的一些常用函数收集
May 26 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
Symfony2创建基于域名的路由相关示例
Nov 14 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
Mar 17 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
解决php写入数据库乱码的问题
Sep 17 PHP
php实例化一个类的具体方法
Sep 19 PHP
php获取操作系统语言代码
Nov 04 #PHP
Php header()函数语法及使用代码
Nov 04 #PHP
php配置php-fpm启动参数及配置详解
Nov 04 #PHP
mac下安装nginx和php
Nov 04 #PHP
php使用curl模拟登录后采集页面的例子
Nov 04 #PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 #PHP
php网站判断用户是否是手机访问的方法
Nov 01 #PHP
You might like
php接口与接口引用的深入解析
2013/08/09 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
js实现3D旋转相册
2020/08/02 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
[19:15]DK战队纪录片
2014/09/02 DOTA
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
Python Tkinter简单布局实例教程
2014/09/03 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
2014离婚协议书范文两篇
2014/09/15 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
2019年教师节:送给所有老师的祝福语
2019/09/05 职场文书