源码编译安装PHP5.6
1、 现在源码包:地址:http://php.net
2、 解决依赖
mhash mhash-devel libmcrypt-devel libmcrypt libxml2-devel bzip2-devel
3、 编译安装
tar –zxvfphp.5.6***.tar.gz
cd php.5.6
./configuer --prefix=/usr/local/php–with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir/usr --enable-sockets --enable-fpm --with-mcrypt --with-conifg-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
note:在编译安装PHP之前,一定要保证MySQL已经编译完成,因为在PHP的编译参数中需要指明MySQL的路径以及PHP和MySQL交互的接口 --with-mysqli=/usr/local/mysql/bin/mysql_config这个选项说明了MySQL和PHP交互的接口。--enable-fpm说明启动fcgi,如果想要把PHP编译为httpd模块的话,只需要加上—with-apxs2=/usr/local/apache/bin/apxs即可。
4、 在解压后的文件中进行配置文件的复制,在上面的编译过程中,我利用的是FastCGI的模式进行编译的,所以配置的配置文件为php**/sapi/fpm/init.d.php-fpm,将这个文件复制到/etc的目录下面。
cp php/sapi/fpm/init.d.php-fpm /etc
chkconfig –addphp-fpm
chkconfig 2345 php-fpm on
5、 更改fpm的配置文件
6、 [global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
[www]
listen = 192.168.5.1:9000
user = php-fpm
group = php-fpm
pm = dynamic //生成进程的方式为动态的
pm.max_children = 50 //最后创建多少个进程
pm.start_servers = 20 //一开始创建多少个进程
pm.min_spare_servers = 5 //最少空闲进程的数量如果不够的话则生成进程
pm.max_spare_servers = 35 //最大的空闲的进程的数量,如果空闲进程多的话则杀死
pm.max_requests = 500 //每个进程最多相应多少个请求
rlimit_files = 1024 //设置文件打开描述符的rlimit限制
需要注意的是,我们在lamp的环境中,如果将PHP编译为模块的话,那么直接启动Apache然后修改配置文件如下
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModuledir_module>
DirectoryIndex index.html index.phpindex.htm
</IfModule>
然后重启Apache,相应的PHP页面就可以解析了。然是如果利用了php-fpm的话,没有PHP模块被加载,所以我们要设置PHP的解析模式。
打开Apache的配置文件,在每一个virtualhost中添加
<IfModule mpm_event_module>
ProxyPassMatch^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/webroot/$1
</IfModule>
然后重启Apache就可以了,否者会出现的是访问的PHP页面出现的是下载页,说明我们的PHP和Apache没有结合好。
至于更多的php-fpm解析PHP的方式参照:
https://cnzhx.net/blog/apache-httpd-mod_proxy_fcgi-php-fpm/