按日归档: 2008/05/09

[原创]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: 975

ulimit使用简介

src: http://www.chinaitpower.com/2005September/2005-09-13/204427.html

1,说明:
ulimit用于shell启动进程所占用的资源.
2,类别:
shell内建命令
3,语法格式:
ulimit [-acdfHlmnpsStvw] [size]

4,参数介绍:

-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes 5,简单实例:

1]在RH8的环境文件/etc/profile中,我们可以看到系统是如何配置ulimit的:
#grep ulimit /etc/profile
ulimit -S -c 0 > /dev/null 2>&1
这条语句设置了对软件资源和对core文件大小的设置
2]如果我们想要对由shell创建的文件大小作些限制,如:
#ll h
-rw-r–r– 1 lee lee 150062 7月 22 02:39 h
#ulimit -f 100 #设置创建文件的最大块(一块=512字节)
#cat h>newh
File size limit exceeded
#ll newh
-rw-r–r– 1 lee lee 51200 11月 8 11:47 newh
文件h的大小是150062字节,而我们设定的创建文件的大小是512字节x100块=51200字节
当然系统就会根据你的设置生成了51200字节的newh文件.
3]可以像实例1]一样,把你要设置的ulimit放在/etc/profile这个环境文件中.

Read: 754