首页 > 技术文章 > 2.nginx整合PHP

mrxiaohe 2016-09-06 09:32 原文

/usr/local/src/下都有什么:.tar.gz文件和解压之后的源码

/usr/local/下都有什么:源码编译之后的东西

安装mysql客户端

安装mysql服务端

启动mysql服务端

service mysqld start

 

 

nginx+php的编译

apache一般是把php当做自己的一个模块来启动的.

而nginx则是把http请求变量(如get,user_agent等)转发给 php进程,即php独立进程,与nginx进行通信. 称为 fastcgi运行方式.二者是平等的关系

因此,为apache所编译的php,是不能用于nginx的,需要重新编译.(此机器之前在详解apache的时候安装了php,所以现在需要make clean一下,执行make clean,需要先cd php-5.4.19,php-5.4.19是源码文件夹)

注意: 我们编译的PHP 要有如下功能:

连接mysql的功能, gd库画图, ttf(字体功能), 以fpm(fastcgi)方式运行

现在我们知道我们编译php,需要什么东西了。那么我们cd php-5.4.19,然后

./configure –help |grep xxx

第一个,先看mysql

第二个,gd库

安装gd库

第三个,ttl

 

./configure  --prefix=/usr/local/fastphp \

--with-mysql=mysqlnd \

--enable-mysqlnd \

--with-gd \

--enable-gd-native-ttf \

--enable-gd-jis-conv

--enable-fpm

 

./configure 出错:报出png.h找不到,报出.h文件找不到的,都是没有头文件,需要安装xx-devel

安装好yun install gd-devel后  再次./configure  执行完成,没有报错,则执行 make && make install,这个命令要很久

命令执行完毕,安装完成。

装错了,没有以fpm方式运行,删掉:

因为没有以fpm形式运行,只有fpm形式运行,才能以独立进程编译。

如下这条命令(./configure –help….)需要先cd到php的目录中去执行

同样在该目录下,运行

再执行make && make install 进行编译

编译完毕后: 需要拷贝两个配置文件

1.把源码包中的php.ini-development 复制到 fastphp/lib/php.ini下

nginx+php的配置比较简单,核心就一句话----

把请求的信息转发给9000端口的PHP进程,

让PHP进程处理 指定目录下的PHP文件.

 

如下例子:

location ~ \.php$ {

            root html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            //告诉php到底要运行哪个页面

            //$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

(注:PHP会去找这个脚本并处理,所以脚本的位置要指对)

推荐阅读