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 相关文章推荐
一个阿拉伯数字转中文数字的函数
Oct 09 PHP
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
Mar 28 PHP
php 抽象类的简单应用
Sep 06 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
Nov 10 PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
PHP生成不同颜色、不同大小的tag标签函数
Sep 23 PHP
php 不使用js实现页面跳转
Feb 11 PHP
PHP+swoole实现简单多人在线聊天群发
Jan 19 PHP
php socket通信(tcp/udp)实例分析
Feb 14 PHP
46 个非常有用的 PHP 代码片段
Feb 16 PHP
PHP session会话操作技巧小结
Sep 27 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
多数据表共用一个页的新闻发布
2006/10/09 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
在javascript中对于DOM的加强
2013/04/11 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
使用matplotlib画散点图的方法
2018/05/25 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
python 自定义装饰器实例详解
2019/07/20 Python
python实现飞机大战小游戏
2019/11/08 Python
Python列表切片常用操作实例解析
2019/12/16 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
合作经营协议书
2014/04/17 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
和睦家庭事迹
2014/05/14 职场文书
尼克胡哲观后感
2015/06/08 职场文书
检讨书怎么写?
2019/06/21 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
Golang流模式之grpc的四种数据流
2022/04/13 Golang