以下内容为个人配置笔记,仅供参考,请勿用于生产环境
同mysql一样php的环境也有不少定制需求,故也是采用源码安装方式。
在安装php环境前做一些周边的准备工作:
安装libevent库:
在目前的网络开发环境而言libevent几乎是现如今的新兴网络服务所必不可少的底层组件了,在此下载编译安装一下:
wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
tar zxf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable/
./configure
make
sudo make install
如果不想编译安装也可以直接安装源里的版本:
sudo apt-get install libevent-dev
安装apache
尽管在如今的场合里apache的使用频率已经不太高了,但有些特定的应用还是必须用到它,故在此先编译安装一下apache:
wget http://www.apache.org/dist/httpd/httpd-2.2.15.tar.bz2
tar jxf httpd-2.2.15.tar.bz2
cd httpd-2.2.15/
./configure --prefix=/usr/local/apache2 --enable-deflate --enable-expires --enable-headers --enable-proxy --enable-proxy-http --enable-http --enable-rewrite --enable-so --enable-mods-shared=most --with-mpm=worker --with-port=8088
make
sudo make install
sudo ln -s /usr/local/apache2/bin/ab /usr/bin/
sudo ln -s /usr/local/apache2/bin/apachectl /usr/bin/
sudo ln -s /usr/local/apache2/bin/apxs /usr/bin/
sudo ln -s /usr/local/apache2/bin/htpasswd /usr/bin/
sudo ln -s /usr/local/apache2/bin/httpd /usr/bin/
安装autoconf
这个步骤比较汗,以前在ubuntu上编译php环境总是过不去,google良久,发觉解决之道:
sudo apt-get install autoconf2.13
貌似是默认的autoconf有bug还是啥的。
开始安装php环境
1.下载源码
到http://www.php.net/downloads.php#v5去下载目前的稳定版本
wget http://cn2.php.net/get/php-5.3.1.tar.bz2/from/us.php.net/mirror
tar jxf php-5.3.1.tar.bz2
去下载php-fpm也就是php的fast-cgi进程管理器:
wget http://launchpad.net/php-fpm/master/0.6/+download/php-fpm-0.6~5.3.1.tar.gz
tar zxf php-fpm-0.6~5.3.1.tar.gz
据说下一个版本或者php5.3.3及以后的版本已经直接整合进去了不需要另外下载打补丁安装了,当然你也有另一种选择就是使用spawn-fcgi来管理php的fast-cgi进程,sudo apt-get install spawn-fcgi即可下载这个源于lighttpd的fast-cgi通用管理器(后面python的部分才会用到它)。
安装php-fpm的方式有两种:整合式的,和分离式的,这里还需要编译一下modphp故按第二种方式安装:
export PHP_VER=5.3.1
先编译php的常规版本:
cd "php-$PHP_VER"
mkdir php-build && cd php-build
../configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/conf.d --disable-debug --disable-rpath --enable-sockets --enable-zip --enable-ftp --with-pear --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --enable-gd-native-ttf --with-iconv-dir=/usr --enable-mbstring --enable-mbregex --with-zlib --with-libxml-dir=/usr --enable-xml --with-mcrypt --with-mhash --enable-bcmath --with-gmp --enable-sysvsem --enable-inline-optimization --with-openssl --with-curl --with-curlwrappers --enable-shmop --with-sqlite --enable-sqlite-utf8 --with-pdo-sqlite --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-apxs2=/usr/local/apache2/bin/apxs
make
sudo make install
cd ../..
再编译上php-fpm:
不过我配置的时候,貌似php-fpm的configure脚本设置项失效了,--with-libevent指定的路径并没有能应用到它的配置查找路径中去,无奈只有做两个软链接了:
sudo ln -s /usr/local/lib/libevent.a /usr/lib/
sudo ln -s /usr/local/lib/libevent.so /usr/lib/
开始编译php-fpm:
cd "php-fpm-0.6-$PHP_VER"
mkdir fpm-build && cd fpm-build
../configure --srcdir=../ --with-php-src="../../php-$PHP_VER" --with-php-build="../../php-$PHP_VER/php-build" --with-libevent=/usr/local --with-fpm-log=/var/log/php-fpm/php-fpm.log --with-fpm-pid=/var/run/php-fpm.pid --with-fpm-conf=/usr/local/php/etc/php-fpm.conf --with-fpm-bin=/usr/local/php/bin/php-fpm --with-fpm-port=9001 --with-fpm-user=www-data --with-fpm-group=www-data
make clean
make
sudo make install
cd ../..
安装最后做一些设定工作,将常用命令链接到系统路径:
sudo mkdir -p /usr/local/php/etc/conf.d
sudo mkdir -p /var/log/php-fpm
sudo ln -s /usr/local/php/bin/php /usr/bin/
sudo ln -s /usr/local/php/bin/phpize /usr/bin/
sudo ln -s /usr/local/php/bin/pear /usr/bin/
sudo ln -s /usr/local/php/bin/pecl /usr/bin/
sudo ln -s /usr/local/php/bin/php-config /usr/bin/
将启动脚本作为系统服务:
修改执行权限,安装为系统服务:
sudo chmod a+x /etc/init.d/php-fpm
sudo update-rc.d php-fpm defaults
配置默认php.ini配置文件:
cd "php-$PHP_VER"
sudo cp php.ini-production /usr/local/php/etc/php.ini
根据你应用的需要做一些必要的调整。
修改一下默认时区:
date.timezone = "Asia/Shanghai"
更新pear库,安装一些基本的组件:
sudo pear channel-update pear.php.net
sudo pear install HTTP
sudo pear install HTTP_Client
sudo pear install --alldeps PhpDocumentor
安装apc扩展:
sudo pecl install http://pecl.php.net/get/APC
编辑php.ini文件在include_path加入pear库的路径,
include_path = ".:/usr/local/php/lib/php"
在扩展路径extension_dir添加刚刚apc编译时最后显示的扩展所在路径:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626"
在文件最后添加apc扩展的调用段:
[apc] extension=apc.so apc.enabled=1 apc.rfc1867=on apc.shm_segments=1 apc.shm_size=128 apc.ttl=7200 apc.user_ttl=7200 apc.num_files_hint=1024 apc.mmap_file_mask=/tmp/apc.XXXXXX apc.enable_cli=1
至此基本环境配置完毕,后面根据各个应用再添加扩展配置继续折腾。
运行php -v查看基本配置正常与否,php -m 可以查看当前cli模式下载入的扩展。

要说点啥就在这吧