在Ubuntu 8.04下编译php-fpm

Posted by zuzhihui in Linux技术 on 2010/01/29 with No Comments

首先去 http://php-fpm.org/downloads/ 下载 php-5.2.10-fpm-0.5.13.diff.gz ,然后下载php的源代码 php-5.2.10.tar.bz2

然后运行命令:

tar jxf php-5.2.10.tar.bz2
cd php-5.2.10
gunzip -c ../php-5.2.10-fpm-0.5.13.diff.gz |patch -p1
apt-get install build-essential libxml2-dev libmcrypt-dev libssl-dev libldap2-dev libmhash-dev libmysqlclient15-dev libcurl4-openssl-dev libpng12-dev libjpeg-dev libsasl2-dev
./configure --prefix=/opt/php --with-iconv --with-zlib --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap  --without-pear --with-mysql --with-mysqli --enable-sqlite-utf8 --with-pdo-mysql --enable-ftp --with-jpeg-dir --with-freetype-dir --with-png-dir
make
make install
cp php.ini-dist /opt/php/lib/php.ini
ln -s /opt/php/sbin/php-fpm /etc/init.d/php-fpm
update-rc.d -f php-fpm defaults
/etc/init.d/php-fpm start

编译后的php安装在/opt/php下面,php的配置文件是/opt/php/lib/php.ini

然后运行 /etc/init.d/php-fpm start 就可以启动php的fastcgi进程了,这些php fastcgi进程应该可以正常工作了。

优化php-fpm

编辑php-fpm的配置文件/opt/php/etc/php-fpm.conf,

  • 去掉display_errors参数的注释,修改参数值为1
  • 去掉sendmail_path参数的注释
  • 去掉user,group参数的注释
  • 修改max_children参数的值为50

在Debian 5 VPS下编译php-fpm

Posted by zuzhihui in Linux技术 on 2009/09/08 with No Comments

php-fpm和spawn-fcgi一样,是一个php的fastcgi进程管理器。 spawn-fcgi是个独立的程序,而php-fpm是和php集成在一起的。一般的Linux都不带php-fpm,本文介绍在debian 5 VPS下怎样编译php-fpm。

编译环境准备

首先查看debian的apt软件库的配置,确保/etc/apt/sources.list这个文件里面至少有:

deb http://ftp.us.debian.org/debian lenny main
deb http://security.debian.org/ lenny/updates main

然后同步一下:

apt-get update

安装编译所需要的工具:

apt-get install build-essential vim

安装编译所需要的库:

apt-get install libxml2-dev libmcrypt-dev libssl-dev libldap2-dev libmhash-dev libmysqlclient15-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libsasl2-dev

编译

下载php 5.2.10和相应的php-fpm补丁,然后开始编译:

tar zxf php-5.2.10.tar.gz
cd php-5.2.10
cat ../php-5.2.10-fpm-0.5.13.diff | patch -p1
./configure --prefix=/opt/php --with-iconv --with-zlib --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap  --without-pear --with-mysql --with-mysqli --enable-sqlite-utf8 --with-pdo-mysql --enable-ftp --with-jpeg-dir --with-freetype-dir --with-png-dir
make install
cp php.ini-dist /opt/php/lib/php.ini
ln -s /opt/php/sbin/php-fpm /etc/init.d/php-fpm
update-rc.d -f php-fpm defaults

编译后的php安装在/opt/php下面,php的配置文件是/opt/php/lib/php.ini

和其他Linux下不同,在Debian下这时候启动php-fpm会失败,原因是在Debian下php-fpm的配置文件中必须指定运行时的用户才行。

优化php-fpm

编辑php-fpm的配置文件/opt/php/etc/php-fpm.conf,

  • 去掉display_errors参数的注释,修改参数值为1
  • 去掉sendmail_path参数的注释
  • 去掉user,group参数的注释
  • 修改max_children参数的值为10

安装php加速器eAccelerator

tar jxf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3
apt-get install -y autoconf
/opt/php/bin/phpize
./configure --enable-eaccelerator --with-php-config=/opt/php/bin/php-config
make install
mkdir /opt/php/eaccelerator_cache

然后vim /opt/php/lib/php.ini,在文件末尾加入:

[eaccelerator]
zend_extension="/opt/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/opt/php/eaccelerator_cache"
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"

然后重启php-fpm,在phpinfo()页面中应该能看到eaccelerator的信息了。

打包

我们把/opt/php目录打包为php-fpm-5.2.10-amd64.tar.gz,放到http://dl.rashost.com/下面,供客户下载使用。

在Ubuntu 9.04 VPS下编译php-fpm

Posted by zuzhihui in vps技术 on 2009/09/07 with No Comments

php-fpm和spawn-fcgi一样,是一个php的fastcgi进程管理器。spawn-fcgi是个独立的程序,而php-fpm是和php集成在一起的。一般的Linux都不带php-fpm,本文介绍在ubuntu 9.04 VPS下怎样编译php-fpm。

编译环境准备

首先查看ubuntu的apt软件库的配置,确保/etc/apt/sources.list这个文件里面至少有:

deb http://archive.ubuntu.com/ubuntu jaunty main universe multiverse
deb http://security.ubuntu.com/ubuntu jaunty-security main universe multiverse

然后同步一下:

apt-get update

安装编译工具:

apt-get install build-essential vim

安装编译所需要的库:

apt-get install libxml2-dev libmcrypt-dev libssl-dev libldap2-dev libmhash-dev libmysqlclient-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype6-dev libsasl2-dev

编译

下载php 5.2.10和相应的php-fpm补丁,然后开始编译:

tar zxf php-5.2.10.tar.gz
cd php-5.2.10
cat ../php-5.2.10-fpm-0.5.13.diff | patch -p1
./configure --prefix=/opt/php --with-iconv --with-zlib --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap  --without-pear --with-mysql --with-mysqli --enable-sqlite-utf8 --with-pdo-mysql --enable-ftp --with-jpeg-dir --with-freetype-dir --with-png-dir
make
make install
cp php.ini-dist /opt/php/lib/php.ini
ln -s /opt/php/sbin/php-fpm /etc/init.d/php-fpm
update-rc.d -f php-fpm defaults
/etc/init.d/php-fpm start

编译后的php安装在/opt/php下面,php的配置文件是/opt/php/lib/php.ini

然后运行 /etc/init.d/php-fpm start 就可以启动php的fastcgi进程了,这些php fastcgi进程应该可以正常工作了。

优化php-fpm

编辑php-fpm的配置文件/opt/php/etc/php-fpm.conf,

  • 去掉display_errors参数的注释,修改参数值为1
  • 去掉sendmail_path参数的注释
  • 去掉user,group参数的注释
  • 修改max_children参数的值为10

安装php加速器eAccelerator

tar jxf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3
apt-get install -y autoconf
/opt/php/bin/phpize
./configure --enable-eaccelerator --with-php-config=/opt/php/bin/php-config
make
make install
mkdir /opt/php/eaccelerator_cache

然后vim /opt/php/lib/php.ini,在文件末尾加入:

[eaccelerator]
zend_extension="/opt/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/opt/php/eaccelerator_cache"
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"

然后重启php-fpm,在phpinfo()页面中应该能看到eaccelerator的信息了。

打包

我们把/opt/php目录打包为php-fpm-5.2.10-amd64.tar.gz,放到 http://dl.rashost.com 下面,供客户下载使用。

在CentOS 5 VPS上编译带php-fpm功能的php

Posted by zuzhihui in Linux技术 on 2009/09/05 with No Comments

本文记录了在CentOS 5 VPS上编译打了php-fpm补丁的php 5.2.10的过程。

安装库文件

安装编译php需要的一些库文件

yum install libxml2-devel libmcrypt-devel openssl-devel curl-devel libjpeg-devel  libpng-devel freetype-devel openldap-devel libmhash-devel mysql-devel  libtool-ltdl-devel

如果是64位的系统,然后需要调整一下mysql的库文件,否则在64位系统下老去找32位的mysql库:
cd /usr/lib
mv mysql mysql.i386
ln -sf /usr/lib64/mysql mysql

编译php-fpm

给php打php-fpm补丁:

cd php-5.2.10
patch -p1 < ../php-5.2.10-fpm-0.5.13.diff

开始编译php,注意:如果是64位的系统,建议去掉 –with-ldap-sasl,否则有可能编译不过

./configure --prefix=/opt/php --with-iconv --with-zlib --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap  --without-pear --with-mysql --with-mysqli --enable-sqlite-utf8 --with-pdo-mysql --enable-ftp --with-jpeg-dir --with-freetype-dir --with-png-dir
make

当编译到php-5.2.10/ext/date/lib/parse_date.c的时候,挂了,好像不往下走了,这时候ctrl-c中断编译过程,把当前正在执行的语句复制粘贴到命令行单独执行,发现还是好像死循环一样不结束,再次ctrl-c中断,删除掉这个命令中的-O2参数,继续执行,这样这个命令很快就结束了,然后继续运行:

make
make install
cp php.ini-dist /opt/php/lib/php.ini

然后运行 /opt/php/sbin/php-fpm start 就可以启动php的fastcgi进程了,这些php fastcgi进程应该可以正常工作了。

优化php-fpm

编辑php-fpm的配置文件/opt/php/etc/php-fpm.conf,

  • 去掉display_errors参数的注释,修改参数值为1
  • 去掉sendmail_path参数的注释
  • 去掉user,group参数的注释,并设定值为nobody
  • 修改max_children参数的值为10

安装php加速器eAccelerator

tar jxf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3
yum install -y autoconf
/opt/php/bin/phpize
./configure --enable-eaccelerator --with-php-config=/opt/php/bin/php-config
make
make install
mkdir /opt/php/eaccelerator_cache

然后vim /opt/php/lib/php.ini,在文件末尾加入:

[eaccelerator]
zend_extension="/opt/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/opt/php/eaccelerator_cache"
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"

然后重启php-fpm,在phpinfo()页面中应该能看到eaccelerator的信息了。

打包

我们把/opt/php目录打包放到 http://dl.rashost.com/ 下面,供客户下载使用。

最后,安装好之后,记着在/etc/rc.local文件中加入自动启动php-fpm的语句:

/opt/php/sbin/php-fpm start

在VPS上打开php的错误日志

Posted by zuzhihui in vps技术 on 2009/05/09 with No Comments

在VPS上安装配置php应用如果碰到错误,而不显示错误信息的时候,经常是一头雾水,不知道是为什么错了,错在哪里了。

这时候如果打开php的错误显示功能,则能够把发生的错误信息显示出来,方便我们找原因。修改php.ini配置文件,打开错误显示功能,要修改的部分是:

error_reporting  =  E_ALL | E_NOTICE
display_errors = On
log_errors = On
error_log = /var/log/httpd/php.log

需要注意的是php日志文件/var/log/httpd/php.log的权限,要设置成777,至少让apache的执行用户能写。

配置好之后,重启apache即可

Ubuntu 下安装php5-gd 不能使用imagerotate函数的解决方法

Posted by zuzhihui in Linux技术 on 2009/03/30 with No Comments

ubuntu自带的php-gd库是基于标准gd库编译的,不是用的php的gd库,所以不支持此函数。
解决方法:
首选用phpinfo函数检查下GD Version -> 2.0 higher
1.先下载php5-gd的原始码
#apt-get source php5-gd
下载好了之后会自动解压缩,进入目录后修改./debian/rules,找到–with-gd=shared,/usr,将之后的”,/usr”删掉,变成–with-gd=shared
2.将php5打包
#dpkg-buildpackage
在这个过程中,如果出现需要安装一些(!?)套件的信息,将他们通过-apt-get install 安装好后,便可以顺利执行,打包的过程,这个时候可以做别的事情,因为很久
3.打包后回到上一层目录,出现许多打包完成的deb档案,将php5-gd解开到暂存的文件夹
#dpkg-deb -x php5-gd*.deb test
4.将暂存文件夹内的gd.so取代原有系统的gd.so(应该存在/usr/lib/php5/20060613 lfs/gd.so)
5.重新启动apache2
再用phpinfo函数确认下GD Version -> bundled(2.034 compatible)

Apache/PHP的内存优化

Posted by zuzhihui in apache on 2008/07/24 with No Comments

经常有客户在96M/128M内存的VPS上安装LAMP应用,碰到内存不足,然后系统把mysql进程杀死的情况。这种现象的根本原因是内存不足了。而大部分内存是被apache占用了的,VPS上的apache又是系统的默认配置,所以比较占内存。
关于优化apache的内存,轻参考如下文章:

  1. http://fwolfcn.blogspot.com/2008/03/mediatemple.html
  2. http://www.im286.com/thread-2353918-1-1.html

另外对mysql,可以修改my.cnf,启用skip-innodb,因为我们用myisam就足够了!

Back to Top

2007-2017 © 北京瑞豪开源科技有限公司 京ICP备13004995号-2