`

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

    博客分类:
  • php
阅读更多

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
./configure
make make install
 

 

A2、安装freetype

tar xzvf freetype-x.x.x.tar.gz
cd freetype-x.x.x
./configure --prefix=/usr/local/modules/freetype
make
make install
 

 

 

A3、安装libpng

tar xzvf libpng-x.x.x.tar.gz
cd libpng-x.x.x
cp scripts/makefile.std makefile
make test
make install
 

 

A3、安装jpeg

tar xzvf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --prefix=/usr/local/modules/jpeg6 --enable-shared --enable-static
make && make install 

 

 A4、安装GD

tar xzvf gd-x.x.xx.tar.gz
cd 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/freetype
make && make install
 

 

A5、安装pcre

tar -zxvf pcre-x.x.tar.gz
cd pcre-x.x
./configure
make && make install
 

 

A6、安装Linux Nginx

 

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

 

A7、安装PHP

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

tar -jxvf php-x.x.x.tar.bz2
cd 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-redirect
make && make install
cp 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,所以最好是写一份脚本来启动,然后要养成测试服务可用性的习惯。

分享到:
评论

相关推荐

    Nginx+php(FastCGI)一键安装

    本教程将详细介绍如何在Linux系统上进行Nginx+php-FastCGI的一键安装,以及添加memcache缓存服务和部署Discuz论坛系统,打造LAMP(Linux + Apache + MySQL + PHP)架构的替代方案——LNMP(Linux + Nginx + MySQL + ...

    centos 6.0最简化编译安装Nginx+Mysql+PHP+Zend

    本文将详细解析如何在CentOS 6.0上通过编译安装Nginx、Mysql、PHP以及Zend Optimizer的过程,旨在为开发者提供一个高效、简洁的Web服务环境搭建指南。 #### Nginx:小巧而高效的Web服务器 Nginx是一款由Igor ...

    centos的nginx+php的fastcgi模式编译安装

    这里我们关注的是在CentOS操作系统上使用Nginx作为Web服务器,并结合PHP的FastCGI模式进行编译安装。这种组合通常被称为“Nginx + PHP-FPM”配置,能够提供高性能、低资源消耗的网站服务。下面将详细阐述这一过程...

    CentOS 6.0最小化编译安装Nginx+MySQL+PHP+Zend.pdf

    在本文中,我们将深入探讨如何在CentOS 6.0最小化安装环境下,手动编译安装Nginx、MySQL、PHP以及Zend Optimizer。这个过程对于理解这些软件的工作原理、自定义配置以及优化性能非常有帮助。以下是详细的步骤: 1. ...

    FreeBSD7.0编译安装nginx+php+mysql.pdf

    在本教程中,我们将深入探讨如何在FreeBSD 7.0操作系统上手动编译和安装Nginx、PHP和MySQL,构建一个基本的LEMP(Linux、Nginx、MySQL、PHP)堆栈。请注意,虽然这个教程适用于FreeBSD 7.0,但一些步骤可能与较新...

    CentOS 6.0最小化编译安装Nginx+MySQL+PHP+Zend

    在本教程中,我们将详细介绍如何在CentOS 6.0最小化安装环境下,手动编译安装Nginx、MySQL、PHP以及Zend Optimizer。这个过程主要用于学习和掌握服务器配置及软件编译安装技术,同时也适用于那些希望自定义配置组件...

    FreeBSD7.0编译安装nginx+php+mysql借鉴.pdf

    在本教程中,我们将详细介绍如何在FreeBSD 7.0操作系统上手动编译和安装Nginx、PHP和MySQL,而不是使用预构建的ports。这是一个适用于熟悉Unix/Linux环境且希望自定义安装配置的用户的过程。 首先,我们来看一下每...

    Linux下php+nginx+mysql环境搭建(CentOS)

    Linux下php+nginx+mysql环境搭建的知识点主要包括以下几个方面: 一、搭建环境前的准备工作: 1. 准备知识:首先需要了解VMware的原理及使用方法,熟悉Linux系统常用命令,为后续操作打下基础。 2. 准备资料:熟悉...

    Linux下Nginx+PHP+MySQL配置(图).pdf

    由于Nginx需要PCRE库,所以在安装Nginx之前,需要先卸载系统自带的旧版本PCRE,再编译安装新版本。 最后是Nginx的安装。同样采用源码编译的方式,解压源码后进行配置。在配置阶段,可能需要指定PCRE库的位置,确保...

    Linux上配置Nginx+PHP5(FastCGI)

    首先,创建一个名为`fastcgi_params`的文件,存放在Nginx的配置目录下,如`/usr/local/nginx/conf`(Ubuntu存放在`/etc/nginx`),该文件定义了FastCGI的基本环境变量,如请求方法、查询字符串等。 接下来,在...

    linux+nginx+mysql+php服务器配置(可用于工业生产).doc

    在Linux系统上,首先需要确保系统已经安装了必要的编译工具和库,以支持后续的软件编译和安装。这里列出了如`gcc`, `gcc-c++`, `autoconf`等基础工具,以及针对图像处理、XML解析和压缩等的库。另外,还包含了中文...

    linux+nginx+mysql+php搭建高性能web服务器

    在搭建过程中,需要下载Nginx的源码并进行编译安装,配置合适的参数以优化性能。 3. **MySQL**:作为关系型数据库管理系统,MySQL是许多Web应用程序的首选,因为它提供了高效的存储和检索数据的能力。在搭建过程中...

    LNMP源码安装详细笔记(Linux+Nginx+Mysql+php).pdf

    本篇笔记详细记录了在Linux环境下,通过源代码方式安装LNMP各组件的过程。 首先,我们来看安装环境: - MySQL:5.1.59 版本 - PCRE:8.12 版本 - Nginx:1.1.6 版本 - PHP:5.2.17 版本,且包含了PHP-FPM(FastCGI ...

    Debian+Nginx+PHP(FastCGI)+MySQL搭建LNMP服务器(二版).doc

    本篇文章将详细解读如何在 Debian 系统上通过源码编译的方式安装 Nginx、PHP(FastCGI 模式)、MySQL 以构建 LNMP(Linux+Nginx+MySQL+PHP)服务器。该文档适用于希望了解具体安装步骤和技术细节的 IT 技术人员。 #...

    Linux下mysql+PHP+nginx的搭建(已测试)

    在Linux系统中搭建一个基于MySQL、PHP和Nginx的环境是常见的Web开发配置,这种组合通常被称为LAMP(Linux, Apache, MySQL, PHP)架构,但在本例中使用的是Nginx代替Apache,所以是LNMP(Linux, Nginx, MySQL, PHP)...

    linux+nginx+php+mysql环境配置指南.docx

    在安装过程中,选择中文简体界面、美国英语式键盘,并配置存储设备、网络(选择DHCP获取IP地址)、时区(如上海)以及创建自定义分区。确保为系统分配足够的swap空间,通常是内存的两倍,剩余空间分配给根分区。安装...

Global site tag (gtag.js) - Google Analytics