[原创]Fedora8 + Nginx 0.6.3 + PHP 5.2.5

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。

对于高负载web服务器强烈推荐

uname -a
Linux gk 2.6.24.4-64.fc8 #1 SMP Sat Mar 29 09:54:46 EDT 2008 i686 athlon i386 GNU/Linux

一、先编译安装PCRE, 我用的是当时最新的版本 7.7
nginx的rewrite需要pcre库的支持,如果你不用rewrite也可以不装这个
CFLAGS=’-O2 -Wall’ ./configure –prefix=/usr/local/pcre
make -j 4 (此项根据个人机器而定 一般来说cpu * 2是没有问题的,多任务编译,机器扛得住就越多越快)
make install

(其实貌似不装也可以,nginx配置的时候设定的路径是源码包。。。。)

二、编译安装nginx 0.6.3

  • gzip 模块需要 zlib

  • rewrite 模块需要 pcre

  • ssl 功能需要 openssl

这里的用户(www)应该有对document_root完全操作权限(777)
md5和sha1系统应该是都有带了的,但是不指定的话它会找不到,还是得给个路径
openssl根据个人需要装吧 yum install openssl 就行,不知道是什么就别装了, 用来支持https的
./configure
        –prefix=/usr/local/nginx
        –user=www
        –group=www
        –with-http_ssl_module
        –with-http_stub_status_module
        –with-pcre=/workspace/software/pcre-7.7
        –with-md5=/usr
        –with-sha1=/usr
make -j 4
make install

三、编译安装PHP
PHP的配置是比较复杂的,不过网上的资料太多了,我就不多说了
注意两点:必须添加
–enable-fastcgi
–enable-force-cgi-redirect
不能保留(sapi / cli|cgi 貌似不能共存还是同时编译?如果有需要就弄到两个目录去好了)
–with-apxs2
下面是我的配置,仅供参考
./configure
        –prefix=/usr/local/php
        –with-config-file-path=/usr/local/php
        –with-mysql=/usr/local/mysql
        –with-iconv-dir=/usr/local
        –with-xsl –disable-rpath
        –enable-discard-path
        –enable-safe-mode
        –enable-bcmath
        –enable-shmop
        –enable-sysvsem
        –enable-inline-optimization
        –with-libexpat-dir=/usr/lib
        –with-gmp
        –with-curl
        –with-curlwrappers
        –enable-mbregex
        –enable-ftp
        –with-gd=/usr/local/gd2035
        –enable-zip
        –enable-sockets
        –enable-soap
        –enable-mbstring=all
        –enable-gd-native-ttf
        –with-freetype-dir
        –with-jpeg-dir
        –with-png-dir
        –with-zlib
        –with-pdo-mysql=/usr/local/mysql
        –without-pdo-sqlite
        –enable-fastcgi
        –enable-force-cgi-redirect

make -j 4
make install

复制 php.ini-(dis|recommended) 到 –with-config-file-path 设定的目录下
修改,去处其注释
cgi.fix_pathinfo=1
保持doc_root的值为空或者注释掉

其他根据需要设定即可,这里只提有别与普通设置的地方

四、我们需要ligthttpd 的 spawn-fcgi来启动php-cgi。。。
先down下来ligthttpd源码 。。
然后编译(对,就是编译,咱不装他)
configure && make -j 4 (省事的做法。。)

编译完成后 进入src目录
复制 spawn-fcgi 到 /usr/local/php/bin 目录下

然后可以先启动我们的fastcgi喽,用下面这个命令
/usr/local/php/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 20 -u www -g www -f /usr/local/php/bin/php-cgi

-f cgi程序路径
-a 绑定到的IP
-p 端口
-C 启动进程数, 内存大的话(3G以上推荐250,如果服务器内存小于3GB,可以只开启25个进程,性能损失不到一倍)
(作为root 启动才能用的参数)
-u <user>    使用指定的用户启动
-g <group>   指定组群。。。

千万要记住,这里的 用户和组都要有php文件目录(你的document_root)的读写权限噢…最好跟nginx设定的一样
血的教训阿…
如果出现什么 "No input file specified" 可能就是这个问题了

然后编辑
/usr/local/nginx/conf/fastcgi_params

如果你下的版本跟我一样呢,只要加上
fastcgi_param SCRIPT_FILENAME    $document_root$fastcgi_script_name;
这一句就好了, 就加在
fastcgi_param SCRIPT_NAME        $fastcgi_script_name;
的上面就可以了(顺序不重要..主要是要好看嘛…)

关于nginx.conf的设置我就懒得多说了(关键是我还没怎么弄明白呢)

有问题的跟帖说吧….(估计也没人问..哈…写给自己看的…人老了..就怕忘东西)

附上两篇我参考的文章地址:
Nginx 0.5.31 + PHP 5.2.4(FastCGI)搭建可承受3万以上并发连接数,胜过Apache 10倍的Web服务器[原创]
http://blog.s135.com/read.php/297.htm

利用Nginx替代apache实现高性能的Web环境
http://www.linuxpk.com/391/viewspace-7616.html

Read: 969

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注