Home  >  Article  >  Backend Development  >  nginx+php的配置

nginx+php的配置

WBOY
WBOYOriginal
2016-06-23 14:31:35768browse

作了N多次php环境的搭建,网上的方法还真是多,但是实际操作起来总有一些大大小小的出入,很多错误经常让我纠结不已.久病成医,渐渐地我自己就总结出了一些经验。自我感觉良好。

这种方法并非以前所流行的apache 加 php_module 的方式运行,我是采用nginx 作为web服务器,以fastcgi的方式运行php。

linux下编译:

nginx我还是习惯选择8.54的版本,它的编译依赖以下几个软件包,解压这些源码包,在configure中设置好这些源码的路径,nginx在编译的时候会自己将他们编译进去的:

   pcre:  主要用于rewrite等模块

   zlib: 这个不用说了

   openssl: 如果你还知道https这个东西,那么你懂的~~~(当然你可以不需要这个功能)

   md5 /sha1:  这两者都是用于生成信息摘要的希哈算法,这俩个东西不是必须的,但是我发现如果不选择其中一个那么openssl是不会成功地编译进nginx的

下面是我自己写的一个安装脚本,有temp-path字样的编译选项所设置都是nginx在运行时产生的临时文件的路径,pid-path,lock-path也是临时文件路径,log-path是日志文件路径,我因为自己机子上一些权限的问题所以要设置一下.一般情况下其实这些是不必要的,nginx默认会统统把生成的这些文件放在自己的安装目录下.

tmp=/tmp/nginx

log=/home/jsckdao/log

pcre=~/Downloads/pcre-8.02

zlib=~/Downloads/zlib-1.2.5-src

openssl=~/Downloads/openssl-0.9.8q

md5=~/Downloads/md5-1.3.0

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

--http-proxy-temp-path=${tmp}/nginx-proxy.tmp \

--http-fastcgi-temp-path=${tmp}/nginx-fcgi.tmp \

--http-uwsgi-temp-path=${tmp}/nginx-uwsgi.tmp \

--http-scgi-temp-path=${tmp}/nginx-scgi.tmp \

--http-client-body-temp-path=${tmp}/nginx-client.tmp \

--pid-path=${tmp}/nginx.pid \

--lock-path=${tmp}/nginx.lock \

--http-log-path=${log}/http.log \

--error-log-path=${log}/http-error.log \

--with-pcre=$pcre \ #pcre 源码包的路径

--with-zlib=$zlib \ #zlib 源码包的路径

--with-http_ssl_module \ #起用ssl支持

--with-openssl=$openssl #openssl 源码包路径

make

make install

php(5.2)的编译可以复杂点,也可以简单点,因为我们编译php时主要目的是编译它的脚本引擎和一些核心库,很多外围的东西不一定非要在编译php的时候加进去,可以在需要的时候将它们编译成扩展库再修改配置文件来加载它们。

我的编译代码如下:

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

--with-mysql=/usr/local/mysql \#设置mysql的安装路径

--enable-fastcgi \ #开启fastcgi支持

--enable-debug #支持调试

make

make install

其实关于mysql的那一句都是可以不要的,只是我懒得再编译一次mysql扩展,所以就这样把它直接编译进php了,这样做的前提是你必须先安装mysql。

令外还有一些注意事项:编译php时必须确保系统中拥有libxml2与libxml2-dev这俩个软件包,因为php默认会将xml的功能编译进去,所以xml的支持是必不可少的。还有一个就是autoconf这条命令了,在编译扩展的时候,phpize会调用系统中的这个命令来生成扩展包的configure文件,没有它你就不能作扩展了,这一点也是要记住的,毕竟linux下的php不像windows版那样事先把所有的扩展都编译好了。

至于window下nginx,php的安装就没有什么难度了,下个zip包,解压就能用,只要稍微配置就可以了.

配置:

如果只是想让php能运行的话那么直接输入命令:

./php-cgi   -b   3344 

这样就开启了php的fastcgi进程了,-b参数是绑定该进程的侦听端口,随便找个没用的端口填就可以了,这里绑定的是3344.

然后在nginx的配置文件中加上这么几行:

location ~ \.php$ {

  root              /home/jsckdao/www;          #这是你网站的根目录

  fastcgi_pass  127.0.0.1:3344;            #这里指定了fastcgi进程侦听的端口,nginx就是通过这里与php交互的

  fastcgi_index   index.php;            

  fastcgi_param SCRIPT_FILENAME  $document_root/$fastcgi_script_name;            

  include           fastcgi_params;        

}

如果要改nginx的侦听端口的话找到"listen"这么一项,改就是了.运行nginx,在/home/jsckdao/www目录中写一个测试文件test.php:

phpinfo();

?>

访问http://localhost:8080/test.php,如果显示了php所以的配置信息,那么就基本没什么问题,已经可以用这个环境写些php代码了.

至于php的调试器我选择xdebug,不为什么,习惯所致。加载xdebug时,在配置文件中的写法根据系统的不同好像也有点不同。linux下是:zend_extension_debug=,window中加载的dll有两种,一种文件名会带有ts的后缀,这种要这要样写:zend_extension_ts=另外一种就这样:zend_extension=,path一定要写绝对路径。虽然ts为何意我也不是很清楚,但是这些设置是一定不可以搞错的。

设置好后重新运行php-cgi,然后重新访问test.php,如果有xdebug的那一块出现了,那么就成功了.

当然这是一个很简单的配置,只能让你运行php,要想真正做成你需要的开发环境,还需要你根据自己的需要修改php和nginx的配置文件,这些配置内容很多,我自己也在学习中,就不好多讲了.

另外有一点需要注意,php的配置文件在它的源码包中有两个:php.ini-dist和php.ini-recommended,分别是针对生成环境和开发环境的配置.你需要把其中一个改名为php.ini.重启后查看phpinfo()的页面,靠上的地方有一项" Loaded Configuration File",它的值如果就是你的php.ini的路径,那么就没问题了,如果不是话,就看看上面一项" Configuration File (php.ini) Path",你把你的php.ini文件移到这个目录下在重启就可以了.因为php默认会在这个路径下寻找php.ini的.当然你也可以在运行php-cgi的时候设置你的php.ini路径,比如这样:

php-cgi    -b    3344   -c   /home/jsckdao/php.ini

这样就是把/home/jsckdao/php.ini这个文件作为配置文件了. 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:erlang 连接php-fpmNext article:PHP的三点精华