介绍nginx之前我们先领略一种技术:

Fastcgi是一种动态的、开放、安全的网络服务器接口技术。是由CGIcommon gateway interface通用网关接口的技术)升级过来的。

CGI就是图示的应用进程,它反复加载来完成响应,而fastCGI同时启动多个CGI并且让进程常驻内存,使得fastcgi的效率是cgi的数倍。

支持fastcgiweb服务器有:nginxapache(需要加入mod_fastcgi模块,并且只支持单进程所以效果一般)、lighttpdIIS等。

下面我们来搭建:centos+nginx+mysql+php

Nginx简介:是俄罗斯人igor sysoev(伊戈尔。赛索耶夫)编写的一款高性能的HTTP和反向代理服务器。Nginx应该是web服务器软件中的一匹黑马,自从出世便表现不凡。

Centos安装phpopenbsd安装nginx,实现分布安装。

Pcre下载:http;//pcre.org  (使nginx支持正则表达式rewrite规则)

Nginx下载:http://www.nginx.net

先安装pcre库:

Tar zxvf pcre-8.21.tar.gz

Cd /pcre-8.21

./configure

Make && make install

安装nginx

Tar zxvf nginx-1.2.0.tar.gz

cd /nginx-1.2.0

./configure –prefix=/usr/local/nginx (指定安装目录)

Make && make install

注:安装过程中可以执行./configure –help 会介绍详细的安装选项

nginx配置文件:/usr/local/nginx/conf/nginx.conf

启动nginxcd /usr/local/nginx/sbin

           ./nginx

Ps –aux|grep nginx 查看进程

访问:http://ip

 

关闭nginxcd /usr/local/nginx/logs

           cat nginx.pid

           kill –QUIT 进程号

重启nginxkill –HUP 进程号   当然我们也可以用下面这个命令重启nginx

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

安装php

Php下载地址:http://www.php.net/

Php-fpm下载地址:http://php-fpm.org/  (是php的一个补丁,更好的支持nginx

安装php

Tar php-5.2.17.tar.gz

Gzip –cd php-5,2,17-fpm-0.5.14.diff.gz| patch –d php-5.2.17 –p1     将补丁打入php

Cd php-25.2.17

./configure –prefix=/opt/php-5.2.17  –enable-fastcgi –enable-fpm

Make && make install

注当然还有好多的选项可以配置如:--with-http_ssl_module –with-http_stub_status --with-mysql=/usr/local/mysql 还有一些GD库的支持都可以打上

如果遇到configure- error- XML configuration could not be found

可执行yum -y install libxml2 libxml2-devel修复,应该是我安装包时缺少包才出现这个问提。

启动php-cgi

Php配置文件:/opt/php-5.2.17/php.ini-recommended

一般启动php要先执行:cp php.ini-recommended  /usr/local/lib/php.ini

Php-fpm配置文件:/opt/php-5.2.17/etc/php-fpm.conf

如果分布式安装,这个配置文件需要修改一下:

如果是别的机器安装,需要将默认的127.0.0.1改成自己的ip

这个是增加需要认证的ip,多个ip用逗号隔开

Cd /opt/php-5.2.17/sbin

./php-fpm start

Ps ef|grep php

Netstat –ntl |grep 9000

修改一下nginx配置文件

Vi /usr/local/nginx/conf/nginx.conf

我们将127.0.0.1:9000改成需要php支持的主机ip

修改Root后面我们接我们需要指定的解析php文件路径,

修改fastcgi-param SCRIPT_FILENAME /opt/php/www/$fastcgi_script_name;

注:默认的html文件是在nginx目录下的/usr/local/nginx/html目录

启动nginxcd /usr/local/nginx/sbin    ->   ./nginx

建立网页测试文件

Cd /opt/php

Mkdir www

Cd www

Vi info.php

<?php phpinfo(); ?>

测试:

http://ip/info.php

 

配置开机自动重启nginx

Vi /etc/rc.local

ulimit  -SHu 65535

/opt/php-5.2.17/sbin/php-fpm start

/usr/local/nginx/sbin/nginx

检查配置文件:

/usr/local/nginx/sbin/nginx -t -nginx.conf

安装Discuz

下载discuzhttp://discuz.net

Cd /opt/php-5.2.17/www

Wget http://download.comsenz.com/DiscuzX/2.5/Discuz_X2.5_SC_UTF8.zip
unzip Discuz_X2.5_SC_UTF8.zip

Mysql>create database discuz;

Mysql>grant all privileges on discuz.* to 'saisai'@'localhost' indentified '123456';

Mysql>flush privileges;

Mysql>quit

http://192.168.213.129/upload

 

Php的安全可以参考网页:http://www.php.net/manual/security.php

总结:对于配置文件,我们会发现server用于记录服务器信息,location用于记录网页文件的所在路径,我们设置多个serverlocation便可以代理多台服务器了,反向代理这个我就不探讨了,如果有需要再进行进一步的探讨。