nginx是什么,最初接触到nginx是在一个论坛,这篇文章是张宴写的《搭建一个胜过apache十倍的web服务器》,当时刚接触linux没多久,就web服务器只知道大名顶顶的apache。通过一段时间的学习才了解nginx。nginx("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Nginx因为性能稳定、低系统资源消耗而闻名,现在国内很多网站都是采用nginx来搭建的。因此熟练运用nginx是很有必要的!以下是我学习笔记,可供大家参考,有不足之处,请大家指正!

1.准备工作
    下载相关的软件包到/root目录下:
#wget http://nginx.org/download/nginx-0.7.64.tar.gz
#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz
#wget http://php-fpm.org/downloads/php-5.3.0-fpm-0.5.12.diff.gz
#wget http://museum.php.net/php5/php-5.3.0.tar.gz
#wget http://down1.chinaunix.net/distfiles/mysql-5.0.40.tar.gz
#wget http://download.comsenz.com/Discuz/7.2/Discuz_7.2_SC_UTF8.zip

2.安装PCRE
    PCRE(Perl Compatible Regular Expressions)是perl语言正则表达式。安装此软件的目的是为了让nginx支持正则表达式,让nginx转发php请求到指定的应用服务器上(本机的web服务器也是应用服务器,所以转发到本机进行处理)
#tar zxvf pcre-8.00.tar.gz
#cd pcre-8.00
#./configure
#make
#make install

3.安装Nginx
#tar zxvf nginx-0.7.64.tar.gz
#cd nginx-0.7.64
#./configure    --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
#make
#make install
由于编译安装时指定了用户nginx,所以必须建立一个系统用户nginx
#useradd -r nginx

4.安装mysql
#useradd mysql
#tar zxvf mysql-5.0.40.tar.gz
#cd mysql-5.0.40
#./configure --prefix=/usr/local/mysql
#make && make install
#/usr/local/mysql/bin/mysql_install_db --user=mysql    
#chown -R mysql /usr/local/mysql/var
#/usr/local/mysql/bin/mysqld_safe &        
#/usr/local/mysql/bin/mysqladmin -u root password 123456
#cp support-files/my-medium.cnf /etc/my.cnf

5.安装PHP并整合 FastCGI
    在这里要说下php-fpm,这是一个用于管理FastCGI的一个PHP的补丁,安装时应该把补丁打到PHP的源码中!使用FastCGI技术可以实现应用服务器和web服务器的逻辑隔离,因此具有非常好的扩展性。启动php-fpm程序,他可以监听来至nginx转发过来的请求,并通过php应用程序对请求进行处理。
这种技术和apache+php是不同的,apache是采用加载动态库的形式运行并处理php的请求。
#tar zxvf php-5.3.0.tar.gz
#gzip -cd php-5.3.0-fpm-0.5.12.diff.gz | patch -d php-5.3.0 -p1
#./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --with-mysql=/usr/local/mysql
#make
#make install
#cp php.ini-production /usr/local/php/etc/php.ini
    注意:必须选择版本号向对应的php和php-fpm进行安装!!!

6.整合Nginx、 FastCGI、PHP
    完成了以上的安装,下面来要整合这些东西,否则无法完成请求处理!那么如何整合呢?下面我们给他们分工一下,Nginx接受访问本站点的全部请求,如果请求是静态文件就用Nginx进行处理,如果是动态的php程序文件就转发给php程序进行处理(这就涉及到正则表达式,所以在安装PCRE并让Nginx支持)。通过php-fpm进行监听转发过来的请求,并把这些请求交给php程序进行处理。处理完后返回给客户端。明白了工作原理,就可以修改Nginx和php-fmp的配置文件进行整合!

1)修改Nginx的配置文件
#vi /usr/local/nginx/conf/nginx.conf
     #location ~ \.php$ {
     #    root           html;
     #    fastcgi_pass   127.0.0.1:9000;
     #    fastcgi_index  index.php;
     #    fastcgi_param  SCRIPT_FILENAME   /scripts$fastcgi_script_name;
     #    include        fastcgi_params;
     #}
找到以上这段,去除前面的注释号#

2)修改php-fpm的配置文件
#vi /usr/local/php/etc/php-fpm.conf
        Unix user of processes
<--!    <value name="user">nobody</value>       -->
        Unix group of processes
<--!    <value name="group">nobody</value>      -->
找到以上选项去掉注释 "
<--!" 和 " -->"
      <value name="name">default</value>
          Address to accept fastcgi requests on.
          Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'
           <value name="listen_address">127.0.0.1:9000</value>
注意红色的字体,这段设置php-fmp监听来至哪里来的请求!

3)测试
vi /usr/local/nginx/html/info.php
   <?php
     phpinfo();
   ?>
写下以上内容。
在浏览器上输入:http://IP/info.php ,正确的显示了php设置相关的页面,CentOS5下nginx+fastcgi+php+mysql的环境设置成功!