读书人

在linux上编译安装nginx+php(fastcgi)

发布时间: 2012-09-25 09:55:58 作者: rapoo

在linux下编译安装nginx+php(fastcgi)

nginx使用fastcgi方式连接php,在linux下面编译安装时要编译php支持fastcgi方式,其他的一些东西,照着原来的方式装就可以了。

?

分为以下步骤:

0、准备

1、安装php的fastcgi版

2、使用spawn-fcgi启动php的fastcgi引擎

3、配置nginx连接php的fastcgi引擎

?

0、准备

基本环境要求(如无特殊要求可以使用系统自带)

zlib-1.2.1.tar.gz

freetype-2.1.5.tar.gz

libpng-1.2.5.tar.gz?

gd-2.0.28.tar.gz?

jpegsrc.v7.tar.tar

pcre-x.x.tar.gz 正则表达式下载地址:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

nginx-x.x.xx.tar下载地址:http://www.nginx.net/

php-x.x.x.tar.bz2下载地址:http://www.php.net/releases/ #php-x.x.x-fpm-x.x.x.diff.gz

#php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi下载地址:http://php-fpm.anight.org/

注:PHP的版本要和fpm的版本一致

?

1、安装php的fastcgi版

A1、安装zlib

?

tar xzvf zlib-x.x.x.tar.gz cd zlib-x.x.x./configuremake make install
?

?

A2、安装freetype

tar xzvf freetype-x.x.x.tar.gzcd freetype-x.x.x./configure --prefix=/usr/local/modules/freetypemakemake install
?

?

?

A3、安装libpng

tar xzvf libpng-x.x.x.tar.gzcd libpng-x.x.xcp scripts/makefile.std makefilemake testmake install
?

?

A3、安装jpeg

tar xzvf jpegsrc.v6b.tar.gzcd jpeg-6b./configure --prefix=/usr/local/modules/jpeg6 --enable-shared --enable-staticmake && make install?

?

?A4、安装GD

tar xzvf gd-x.x.xx.tar.gzcd gd-x.x.xx./configure --prefix=/usr/local/modules/gd --with-jpeg=/usr/local/modules/jpeg6 --with-png --with-zlib --with-freetype=/usr/local/modules/freetypemake && make install
?

?

A5、安装pcre

tar -zxvf pcre-x.x.tar.gzcd pcre-x.x./configuremake && make install
?

?

A6、安装Linux Nginx

?

tar -zxvf nginx-x.x.xx.tar.gz cd nginx-x.x.xx./configure --prefix=/usr/local/nginxmake && make install
??

?

A7、安装PHP

这里产生的是可执行文件,和apache的不一样,和apache结合的时候产生的是动态库

tar -jxvf php-x.x.x.tar.bz2cd php-x.x.x./configure --prefix=/usr/local/php --with-gd --with-jpeg-dir=/usr/local/jpeg6 --with-zlib --with-png --with-freetype --enable-magic-quotes --enable-fastcgi --with-mysql=/local/server/mysql/ --enable-track-vars --enable-ftp --with-config-file-path=/usr/local/php/etc --with-zip --enable-force-cgi-redirectmake && make installcp php.ini-recommended /usr/local/php/etc/php.ini

??注意加上--enable-fastcgi参数和--enable-force-cgi-redirect参数

?

启动nginx?

 /usr/local/nginx/sbin/nginx

?停止nginx?

kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`

?重启nginx

kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

?添加到自启动

 echo "/usr/local/nginx/sbin/nginx">>/etc/rc.local
??

?

?

2、使用spawn-fcgi启动php的fastcgi引擎

编译完成后在/usr/local/php/bin/下面就会有php-cgi这个可执行程序,使用spawn-fcgi启动php的fastcgi引擎:?

?

/data/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 9000 -U nobody -f /usr/bin/php-cgi -C 20
?

意思是fastcgi使用本机ip和端口9000提供服务,权限nobody,启动20个进程。其中主要留意-C这个参数,一般20个进程足够用了,觉得不够亦可开大,在我的机器上每个php-cgi进程会占用7-8兆内存,开100个就是700-800兆。

spawn-fcgi这个程序在nginx里没有提供,可以在http://www.sudone.com/download/spawn-fcgi

?

下载到,一般放在nginx的sbin目录下,然后要给它加上可执行权限:

?

chmod +x /data/nginx/sbin/spawn-fcgi
?

?

?

3、配置nginx连接php的fastcgi引擎

?

首先弄一份fastcgi-params配置,在nginx的conf目录下建一份文本文件,内容是:?

?

#fastcgi-params fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; #end
?

?

?

?

这个是最原始的fastcgi-params,在网上也可能有更优化的版本,可以相应取用。

然后配置nginx.conf,比如www.sudone.com,这样配置就可以用了:

?

?

server { include port.conf; server_name www.sudone.com sudone.com;location / { index index.html index.php; root /data/sudone/php/; } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/sudone/php$fastcgi_script_name; include fastcgi_params; } }
?

拿下来之后,有几个需要改的地方:

1、server_name

2、location /里面的root

3、location ~ .php$里面的fastcgi_param SCRIPT_FILENAME

?

其中fastcgi_param SCRIPT_FILENAME的参数中,$fastcgi_script_name前面是php文件的路径一般和root一样的,最后不用写/,貌似会有点问题,不要画蛇添足。

?

注意事项:可能会有的管理员启动nginx后总是忘记启动spawn-fcgi,所以最好是写一份脚本来启动,然后要养成测试服务可用性的习惯。

读书人网 >UNIXLINUX

热点推荐