Lighttpd是一款輕量級(jí)、高性能的Web服務(wù)器軟件,PHP是一種流行的腳本語(yǔ)言,用于開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站和應(yīng)用程序。在Lighttpd服務(wù)器上安裝PHP可以為網(wǎng)站提供處理動(dòng)態(tài)內(nèi)容的能力。這里為大家介紹下Lighttpd安裝PHP教程,推薦使用 FastCGI 作為 SAPI 模塊來(lái)連接 PHP 和 Lighttpd,在 php-cgi 中自動(dòng)啟用 FastCGI。
Lighttpd產(chǎn)生 php 進(jìn)程
要配置 Lighttpd 連接到 PHP 并產(chǎn)生 FastCGI 進(jìn)程, 編輯 lighttpd.conf。 推薦使用套接字在本機(jī)連接 FastCGI 進(jìn)程。
示例 #1 部分 lighttpd.conf
server.modules?+=?(?"mod_fastcgi"?) fastcgi.server?=?(?".php"?=> ??(( ????"socket"?=>?"/tmp/php.socket", ????"bin-path"?=>?"/usr/local/bin/php-cgi", ????"bin-environment"?=>?( ??????"PHP_FCGI_CHILDREN"?=>?"16", ??????"PHP_FCGI_MAX_REQUESTS"?=>?"10000" ????), ????"min-procs"?=>?1, ????"max-procs"?=>?1, ????"idle-timeout"?=>?20 ??)) )
bin-path 指令允許 lighttpd 動(dòng)態(tài)產(chǎn)生 FastCGI 進(jìn)程。PHP 會(huì)根據(jù) PHP_FCGI_CHILDREN 環(huán)境變量產(chǎn)生子進(jìn)程。bin-environment 指令設(shè)定了所產(chǎn)生的進(jìn)行的環(huán)境。PHP 會(huì)在達(dá)到 PHP_FCGI_MAX_REQUESTS 所指定的請(qǐng)求數(shù)目之后殺死一個(gè)子進(jìn)程。在 PHP 中通常應(yīng)避免 min-procs 和 max-procs 指令。PHP 自己管理其子進(jìn)程,并且例如 APC 之類的 opcode 緩存僅在 PHP 管理下的子進(jìn)程之間共享。如果 min-procs 被設(shè)定成某個(gè)大于 1 的值,則 PHP 應(yīng)答器的總數(shù)目為該值乘以 PHP_FCGI_CHILDREN(如 min-procs 為 2,PHP_FCGI_CHILDREN 為 16 則會(huì)產(chǎn)生 32 個(gè)應(yīng)答器)。
spawn-fcgi 產(chǎn)生進(jìn)程
Lighttpd 提供一個(gè)名為 spawn-fcgi 的程序來(lái)簡(jiǎn)化產(chǎn)生 FastCGI 進(jìn)程的手續(xù)。
產(chǎn)生 php-cgi
有可能不通過(guò) spawn-fcgi 來(lái)產(chǎn)生進(jìn)程,但需要做些工作。設(shè)定 PHP_FCGI_CHILDREN 環(huán)境變量控制了 PHP 產(chǎn)生多少個(gè)子進(jìn)程來(lái)處理請(qǐng)求。設(shè)定 PHP_FCGI_MAX_REQUESTS 將決定每個(gè)子進(jìn)程存活多久(以請(qǐng)求數(shù)目決定)。 以下為一個(gè)簡(jiǎn)單的 bash 腳本來(lái)幫助產(chǎn)生 php 應(yīng)答器。
示例 #2 產(chǎn)生 FastCGI 應(yīng)答器
#!/bin/sh #?Location?of?the?php-cgi?binary PHP=/usr/local/bin/php-cgi #?PID?File?location PHP_PID=/tmp/php.pid #?Binding?to?an?address #FCGI_BIND_ADDRESS=10.0.1.1:10000 #?Binding?to?a?domain?socket FCGI_BIND_ADDRESS=/tmp/php.sock PHP_FCGI_CHILDREN=16 PHP_FCGI_MAX_REQUESTS=10000 env?-i?PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN?\ ???????PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS?\ ???????$PHP?-b?$FCGI_BIND_ADDRESS?& echo?$!?>?"$PHP_PID"
連接遠(yuǎn)程 FCGI 實(shí)例
FastCGI 實(shí)例可被產(chǎn)生于多個(gè)遠(yuǎn)程機(jī)器以分散應(yīng)用程序。
示例 #3 連接遠(yuǎn)程 php-fastcgi 實(shí)例
fastcgi.server = ( ".php" => (( "host" => "10.0.0.2", "port" => 1030 ), ( "host" => "10.0.0.3", "port" => 1030 )) )