fastcgi 效率官方配置
http://redmine.lighttpd.net/wiki/1/Docs:PerformanceFastCGI
fastcgi相比cgi的自然是速度快,主要体现在cgi服务进程一直提供服务,不想cgi每次请求都要启动结束一个cgi进程。
webserver可以通过unix domain socket和普通TCP/IP socket进行通讯。至此引入的另外一个好处是fastcgi和weberver可以
在不同机器上运行。
用php来做fastcgi,其实perl之类的都可以。在ubuntu下安装php后会有/usr/bin/php 和 /usr/bin/php-cgi.这两者是不一样的
前者不支持cgi后者支持cgi,互不兼容。从输出上看 php-cgi 会多输出一下两行,
X-Powered-By: PHP/5.3.2-1ubuntu4.7
Content-type: text/html
lighttpd 的fastcgi配置
fastcgi.debug 日志级别,目前就0和1两级,默认为0,设置为1时会有很多log打出。
fastcgi.map-extensions 后缀的映射 例如 fastcgi.map-extensions = ( ".php3" => ".php" )
fastcgi.server 具体fastcgi的配置
fastcgi.server =
( "extension" =>
(
( "host" => 192.68.4.4,
"port" => 9090
)
("host" => 192.68.4.3,
"port" => 9090
)
)
)
extension: 文件名的后缀,或者说是前缀(如果是前缀必须 / 开头)
"host": FastCGI 进程的服务器名字,可以是IP地址,域名
"port": FastCGI 进程的端口号
"socket": unix-domain socket路径。 因为fastcgi进程既可以跟webserver同一机器,也可以不同机器。所以当不同机器时使用 host:port, 同一台机器时使用unix域套接字。
"bin-path": FastCGI 的本地二进制文件
"mode": is the FastCGI protocol mode.
Default is "responder", also "authorizer"
mode is implemented.
"docroot":
"check-local": 在发送给fastcgi之前,检查请求的文件是否存在
:"broken-scriptfilename": breaks SCRIPT_FILENAME in a wat that
PHP can extract PATH_INFO from it (default: disabled)
:"disable-time": time to wait before a disabled backend is checked
again
:"allow-x-send-file": controls if X-LIGHTTPD-send-file headers
are allowed
:"fix-root-scriptname": fix broken path-info split for "/" extension ("prefix")
如果设置了 bin-path
"max-procs": 最大的fastcgi进程个数
"bin-environment": 在目前环境变量的基础上,增加新配置的。
"bin-copy-environement": 完全采用配置的环境变量。
"kill-signal": 杀掉fastcgi的信号,默认是SIGTERM
后缀配置
fastcgi.server = ( ".php" =>
(( "host" => "127.0.0.1",
"port" => 1026,
"bin-path" => "/usr/local/bin/php"
)),
".php4" =>
(( "host" => "127.0.0.1",
"port" => 1026
))
)
前缀配置
fastcgi.server = ( "/remote_scripts/" =>
(( "host" => "192.168.0.3",
"port" => 9000,
"check-local" => "disable",
"docroot" => "/" # remote server may use
# it's own docroot
))
)
负载均衡的配置,必须是相同后缀/前缀指定多个fastcgi后端
fastcgi.server = ( ".php" =>
(( "host" => "10.0.0.2", "port" => 1030 ),
( "host" => "10.0.0.3", "port" => 1030 ))
)
使用外部fastcgi 进程,如果直接写在lighttpd.conf里,只能在本地产生,再同机器可以用外部产生的方式。
用 spawn-fcgi,需要单独下载。
sudo apt-get install spawn-fcgi
源代码:http://download.lighttpd.net/spawn-fcgi/