Linux平滑编译升级php至5.5.0

服务器环境: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 
--with-fpm-user=www 
--with-fpm-group=www 
--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

感谢 @Hunk 这位童鞋提醒,增加了with-fpm-user和with-fpm-group,如果是初次编译可以直接使用上面的配置;如果是升级编译,请修改config.nice文件将with-fpm-user和with-fpm-group添加进去

这里有几个地方需要说明一下:

  1. 安装时,请根据自己的情况添加、删除附加组建,修改对应的目录路径
  2. 安装的时候别忘记了搭配opcache:–enable-opcache
  3. php-5.3.10编译时加了–enable-safe-mode选项,但是php-5.4.0已经去掉了该选项,编译时可以 ./configure –help | grep “safe-mode” 查看一下,没有信息输出,表示已经不支持!
  4. 同样去处的还有:’–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

注意:

  1. 避免兼容问题,请使用最新版本,请不要使用3.0.1之前的版本
  2. 如果安装的时候报错make: *** [imagick_file.lo] 错误 1,请调用pkgconfig
  3. 以上目录路径请根据个人情况进行修改

安装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

参考手册:http://levi.yii.so/?p=2880

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提供加速,但是目前有两个问题:

  1. eAccelerator暂时不兼容php5.5.0
  2. 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.log

log_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

FPM开机启动见:http://levi.yii.so/?p=2925

注:修改启动项中fpm的路径位置

最后,有什么问题,大家可以给我留言哦,别忘了关注我的博客哦:

http://list.qq.com/cgi-bin/qf_invite?id=b6eb34388fd016582957d6e50d005146e24fe6b166ee66c0



此条目发表在Linux/Shell, PHP分类目录,贴了, , 标签。将固定链接加入收藏夹。
  1. >>EOF——————-[04-May-2014 19:33:32] WARNING: [pool www] child 7639 exited on signal 6 (SIGABRT) after 8.000876 seconds from start[04-May-2014 19:33:32] NOTICE: [pool www] child 7644 started[04-May-2014 19:33:36] WARNING: [pool www] child 7642 exited on signal 6 (SIGABRT) after 5.986454 seconds from start[04-May-2014 19:33:36] NOTICE: [pool www] child 7645 started[04-May-2014 19:33:37] WARNING: [pool www] child 7643 exited on signal 6 (SIGABRT) after 6.010389 seconds from start[04-May-2014 19:33:37] NOTICE: [pool www] child 7646 started[04-May-2014 19:33:38] WARNING: [pool www] child 7644 exited on signal 6 (SIGABRT) after 6.000045 seconds from start[04-May-2014 19:33:38] NOTICE: [pool www] child 7648 started[04-May-2014 19:33:42] WARNING: [pool www] child 7645 exited on signal 6 (SIGABRT) after 6.009331 seconds from start[04-May-2014 19:33:42] NOTICE: [pool www] child 7649 started[04-May-2014 19:33:43] WARNING: [pool www] child 7648 exited on signal 6 (SIGABRT) after 5.220455 seconds from start[04-May-2014 19:33:43] NOTICE: [pool www] child 7650 started[04-May-2014 19:33:48] WARNING: [pool www] child 7650 exited on signal 6 (SIGABRT) after 5.136794 seconds from start[04-May-2014 19:33:48] NOTICE: [pool www] child 7651 started———————-EOFphp5.5.11 5.5.12 打开Zend Opcache会出这个错误. 进程不断重启~~ 只好关掉.刚刚升级到了 php5.5.14 无这个问题了.

  2. Pingback: PHP 5.4.16升级到PHP 5.4.17 | 袁斌个人网站

  3. Pingback: 继续平滑升级你的PHP到5.6.0 | 乱炖 - 研究WEB

  4. [root@aliyun php-5.6.7]# –prefix=/usr/local/webserver/php-d/php-5.6.7 -bash: –prefix=/usr/local/webserver/php-d/php-5.6.7: No such file or directory[root@aliyun php-5.6.7]# –with-config-file-path=/usr/local/webserver/php-d/php-5.6.7/etc-bash: –with-config-file-path=/usr/local/webserver/php-d/php-5.6.7/etc: No such file or directory[root@aliyun php-5.6.7]# –with-config-file-scan-dir=/usr/local/webserver/php-d/php-5.6.7/etc/php.d -bash: –with-config-file-scan-dir=/usr/local/webserver/php-d/php-5.6.7/etc/php.d: No such file or directory[root@aliyun php-5.6.7]# –with-curl=/usr/local/lib-bash: –with-curl=/usr/local/lib: No such file or directory第一步编译的时候就提示出错,是怎么回事呢?