先说一下PHP在Apache和Nginx下所扮演的角色
apache一般是把php当做自己的一个模块来启动的.
而nginx则是把http请求变量(如get,user_agent等)转发给 php进程,即php独立进程,与nginx进行通信. 称为 fastcgi运行方式,可以说.nginx和php是平级关系
因此,为apache所编译的php,是不能用于nginx的.
yum安装mysql
yum install mysql mysql-devel mysql-server
安装它们所以来的一些库,可以yum安装,依赖库在 http://www.90book.cn/416.html 下有说明 ,如 gd ,ttf,libxml,png,freetype 等,可根据在编译过程中提示的错误来逐步完善安装所需要的依赖库,以fpm(fastcgi)方式运行
yum install db //yum 安装gd yum install ttf //yum 安装ttr yum install freetype //yum安装字体库 yum install libxml2 yum install libxml2-devel -y
其次还有png ......
准备去下载php
//几乎包括所有的PHP版本
cd /usr/local/src/ 然后以 5.4.22 版本测试 wget http://mirror.cogentco.com/pub/php/php-5.4.22.tar.gz tar zxvf php-5.4.22.tar.gz ./configure --help|grep php-fpm //执行返回下块代码
--with-fpm-user=USER Set the user for php-fpm to run as. (default: nobody)
--with-fpm-group=GRP Set the group for php-fpm to run as. For a system user, this
./configure --help|grep fpm //执行返回下块代码
--enable-fpm Enable building of the fpm SAPI executable
--with-fpm-user=USER Set the user for php-fpm to run as. (default: nobody)
--with-fpm-group=GRP Set the group for php-fpm to run as. For a system user, this
should usually be set to match the fpm username (default: nobody)
--with-fpm-systemd Activate systemd integration
注意: 我们编译的PHP 要有如下功能:
连接mysql, gd, ttf, 以fpm(fascgi)方式运行
./configure --prefix=/usr/local/php --with-mysql=mysqlnd --enable-mysqlnd --with-gd --enable-gd-native-ttf --enable-gd-jis-conv --enable-fpm make && make install
解析编译完毕后进入编译安装后的 /usr/local/php 目录
cp /usr/local/src/php-5.4.22/php.ini-development ./lib/php.ini cp etc/php-fpm.conf.default etc/php-fpm.conf ./sbin/php-fpm ps aux| grep php //查看进程返回以下代码
root 50336 0.3 0.2 139956 2988 ? Ss 09:11 0:00 php-fpm: master process (/usr/local/fastphp/etc/php-fpm.conf) nobody 50337 0.0 0.2 139956 2624 ? S 09:11 0:00 php-fpm: pool www nobody 50338 0.0 0.2 139956 2624 ? S 09:11 0:00 php-fpm: pool www root 50343 0.0 0.0 103248 836 pts/4 S+ 09:12 0:00 grep php
配置nginx
vim /usr/local/nginx/conf/nginx.conf location ~ .php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
1:碰到php文件,
2: 把根目录定位到 html,
3: 把请求上下文转交给9000端口PHP进程,
4: 并告诉PHP进程,当前的脚本是 $document_root$fastcgi_scriptname
./sbin/nginx -s reload
然后启动mysql服务,或者在nginx的html目录下来一个index.php文件查看phpinfo等,最后访问ip