"Nginx与php的整合"与"apache与php的整合“有所不同,apache是把php当作自己的一个模块进行启动;而nginx是把http请求变量(如get,usr_agent等)和请求的上下位原模原样的转发给php进程,即php是独立的进程,同时保持与nginx进行通信,这样的工作方式叫fastcgi。php进程的端口是9000。
所以说,apache的php不能用于nginx。
准备工作
1.首先请到php的官方网站里下载php。(注意!截止本文的时候,请下载5.6.21版本,不要7.0.6版本,7.0.6版本在搭配mysql上好像有点问题。)
2.安装mysql和mysql-devel,mysql就不多说了;
3.#yum install ttf,ttf是字体的软件;
4.#yum install gd gd-devel,gd是画图的软件;
5.#yum install freetype,这个也是字体有关的软件;
这些都下载准备完毕之后,就可以编译了。
编译过程
php的编译过程略恶心,这玩意不能网上照抄,抄的话就会出现编译不成功的情况,以mysql为例。
先通过#tar -zxvf php-5.6.21.tar.gz将下载包拆包解压缩之后,会跟以往一样得到configure文件,但是由于是要把php同nginx\mysql\gd\tty等软件整合,所以就不能./configure之后当甩手掌柜,而是要在configure的时候指定mysql\gd\tty的地址。
我们先用#./configure -help|grep mysql 查看一下mysql需要什么。
每一行的意思后面有注释,拿着英文字典去查,这里我们用到--with-mysql=DIR,但是这里不用DIR用mysqlnd,mysqlnd是php新的驱动,专门用于mysql的。
以此类推,#./configure -help|grep gd 等等,一个一个的把相关文件的要求查好。
然后#./configure --prefix=/usr/local/php --with-pdo-mysql=mysqlnd --enable-mysqlnd --with-gd --enable-gd-native-ttf --enable-gd-jis-conv --enable-fpm,回车之后就会大篇的滚动字幕,然后提示thanks和安装的文件。
下一步就是#make && make install,整个过程较长。
如果在make这一步,出现了“make: *** [sapi/cli/php] 错误 1”的提示,就#make ZEND_EXTRA_LIBS=‘-liconv‘,完之后#make test,最后#make install。
编译之后
整个make过程结束之后,来到php的文件夹ls一下,发现里面应该是bin etc include lib php sbin var这几个文件夹,然后再sbin里有一个php-fpm,启动这个就是启动php进程管理器。
启动php进程管理器之后,就返回到nginx的nginx.conf文件,在server进行如下的编辑:
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; }
这段代码的意思是,匹配到所有的.php 文件就交给fastcgi处理,默认主页是index.php,fastcgi_param很重要,配不对就会502,这个是指向路径,比如用户要请求的是abc.php,那么nginx就把它转到/usr/local/nginx/html/abc.php。
保存退出之后,在/usr/local/nginx/html/下建立一个叫test.php文件,里面的内容就是:
<?php
phpinfo();
保存退出之后,在浏览器输入地址:localhost/test.php,就会看到php的主页了。里面成功与gd和mysql勾搭上了:
本文出自 “生活就是等待戈多” 博客,请务必保留此出处http://chenx1242.blog.51cto.com/10430133/1770922
原文地址:http://chenx1242.blog.51cto.com/10430133/1770922