接下来cgi程序给客户端发送二个音信,那样apache的经过占用内存更多

CGI(二个说道)
是web服务器和外部应用程序(cgi程序)之间的接口标准,是cgi程序和web服务器之间传递音信的归程。

PHP+lghttpd + postgresql 环境搭建

cgi

 

在情理上是一段程序,运营在服务器上,提供同客户端HTML页面的接口。那样说差不多还不佳了解。那么大家看壹个实际例子:未来的个人主页上多数都有三个留言本。留言本的做事是这么的:先由用户在客户端输入一些新闻,如名字之类的东西。接着用户按一下“留言”(到如今甘休工作都在客户端),浏览器把那么些音信传送到服务器的CGI目录下一定的cgi程序中,于是cgi程序在服务器上依照约定的方法开展处理。在本例中就是把用户提交的新闻存入指定的文本中。然后cgi程序给客户端发送三个音讯,表示请求的天职已经截止。此时用户在浏览器里将看到“留言停止”的字样。整个进程停止。

Linux 下PHP环境搭建

拍卖步骤:

⑴通过Internet把用户请求送到web服务器

⑵web服务器收到用户请求并付诸CGI程序处理。

⑶CGI程序把处理结果传送给web服务器。

⑷web服务器把结果送回到用户。

安装环境:PHP+lghttpd + postgresql

1:yum install lighttpd

cgi程序是由用户的输入触发的,运维在web服务器上的次第。CGI是在HTTP服务器下运维外部程序(或网关)的3个接口,它能让互连网用户访问远程系统上的使用项目程序,就象是他们在事实上行使这么些中距离计算机一样。

学好自带apache2作为暗中认可的web服务器。在原来的种类中就是行使apache作为web页面的服务器,apache占用的内存很多,二个apache进度占用的内存大概是20M,最大的大概占到35M之上,占用的共享内存都在100多M以上。而且apache是多少个多进度响应服务,那样apache的进度占用内存越多。因而经长期运作,会产出是因为内存不够而无法访问界面的景色。

cgi

 
 lighttpd是2个完好无损的代表方案。其是1个尤其轻便的web服务器,即使它的功能没有apache强大,可是可以满意大多数的服务须求。它的内存占用量一般是2M左右,占用的共享内存是20M左右,而且与apache落成机制差距的是,lighttpd采纳单进度多路复用的办法响应请求,在系统中一般唯有二个lighttpd进度响应服务请求。(也可安排为多进度)所以从内存占用量的角度看,lighttpd就有很大的优势。其它,lighttpd也足以透过布署fast-cgi辅助php应用。

工作规律:

1.浏览器通过HTML表单超链接恳请指向三个CGI应用程序的U锐界L。

2.服务器收发到请求。

3.服务器执行指定所CGI应用程序。

4.CGI应用程序执行所急需的操作,平时是依照浏览者输入的情节。

5.CGI应用程序把结果格式化为网络服务器和浏览器可以知道的文档(平日是HTML网页)。

6.互连网服务器把结果重回到浏览器中。

最低水平,PHP能够做其余其余CGI程序所能做的事,例如收集表格数据,生成动态页面情节,恐怕收发cookies.只怕最强劲,最有意义的性状是PHP扶助大范围的数量库.书写一个辅助数据库的Web
页面是难以置信的简短。

参照:http://blogold.chinaunix.net/u3/109488/showart_2142285.html


 

法斯特CGI(贰个协商)

CGI 的属性缺点:web server 拿到二个request
后,会fork一个子进度,然后子进度执行cgi程序。那意味
假若N个请求并发访问同一cgi
程序,那么该程序会被装载入内存N次。cgi进程的数十次加载造成了cgi的本性低下。

法斯特CGI
就是三个常驻型(long-live)的cgi。它的基本点作为是将cgi解释器进度保存在内存中以赢得较高的天性。

干活原理:

壹,Web
Server运转时载入FastCGI进度管理器(IIS
ISAPI或Apache Module)

贰,法斯特CGI进程管理器本身早先化,运营多少个CGI解释器经过(可知七个php-cgi)并伺机来自Web
Server的一而再。

叁,当客户端请求到达Web
Server时,法斯特CGI进度管理器采纳并两次三番到三个CGI解释器。Web
server将CGI环境变量和业内输入发送到FastCGI子进度php-cgi。

四,法斯特CGI子进度完毕处理后将业内输出和错误音信从同再三再四接再次来到Web
Server。当法斯特CGI子进度关闭连接时,请求便告处理到位。法斯特CGI子进度接着等待并拍卖来自法斯特CGI经过管理器(运营在Web
Server中)的下二个老是。
在CGI格局中,php-cgi在此便退出了。

在上述景况中,你可以想象CGI平时有多慢。每1个Web请求PHP都不能不重新分析php.ini、重新载入全部增添比量齐观开端化全体数据结构。使用FastCGI,所有这几个都只在经过运行时暴发两回。3个附加的裨益是,持续数据库连接(Persistent
database connection)可以干活。


2:yum install fcgi lighttpd-fastcgi

PHP-CGI(实现了FastCGI的程序)

PHP-CGI是PHP自带的FastCGI管理器。

PHP-CGI的不足:

php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不能够平滑重启。

一向杀死php-cgi进程,php就不能够运维了。(PHP-FPM和Spawn-FCGI就从未那几个题材,守护进度会平滑从新兴成新的子进度。)


 

PHP-FPM(实现了FastCGI的程序)

PHP-FPM是三个PHP 法斯特CGI管理器,是只用于PHP的。化解了php-cgi的一对难点。

PHP5.3.3已经集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP进度管理章程,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更加多有点,所以被PHP官方收录了。在./configure的时候带
–enable-fpm参数即可打开PHP-FPM

CGI格局是种种请求fork三个子进度,然后再销毁.高频度的访问下,频仍的fork爆发额外的连串开发,限制了处理能力,所以在apache下跑php一般都是内嵌模块的方法(mod_php)

话说CGI还有一种变种FASTCGI, 为了消除CGI的那种缺陷,
大约是上世纪90年份中期出现了FASTCGI, 以常驻进度的措施提供CGI服务,

只是大抵与此同时,apache有了mod_perl,
mod_php等模块,质量一般比较有优势,大家都爱好用那种方法,
所以fastcgi没及时火起来。

什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI

http://www.mike.org.cn/articles/what-is-cgi-fastcgi-php-fpm-spawn-fcgi/)

 CGI全称是“公共网关接口”(Common Gateway
Interface),HTTP服务器与您的或其余机器上的先后进行“交谈”的一种工具,其先后须运行在网络服务器上。

CGI可以用其余一种语言编写,只要那种语言具有专业输入、输出和环境变量。如php,perl,tcl等

  什么是FastCGI

法斯特CGI像是二个常驻(long-live)型的CGI,它可以平素举行着,只要激活后,不会每回都要开支时间去fork一回(这是CGI最为人诟病的fork-and-execute
格局)。它还支持分布式的运算, 即 法斯特CGI
程序可以在网站服务器以外的主机上实施并且接受来自其余网站服务器来的呼吁。

法斯特CGI是语言无关的、可伸缩架构的CGI开放扩充,其首要作为是将CGI解释器进程保持在内存中并由此拿到较高的本性。遐迩闻名,CGI解释器的多次加载是CGI质量低下的主要原因,假使CGI解释器保持在内存中并收受法斯特CGI进度管理器调度,则可以提供卓绝的性质、伸缩性、Fail-
Over脾性等等。

  FastCGI与CGI特点

  一,如CGI,FastCGI也装有语言无关性.

  二,如CGI,
法斯特CGI在进程中的应用程序,独立于大旨web服务器运营,提供了1个比API更安全的条件。(APIs把应用程序的代码与主干的web服务器链接在一道,那代表在三个谬误的API的应用程序大概会破坏其余应用程序或骨干服务器;
恶意的API的应用程序代码甚至足以窃取另多少个应用程序或基本服务器的密钥。)

  叁,法斯特CGI技术方今援救语言有:C/C++、Java、Perl、Tcl、Python、SmallTalk、Ruby等。相关模块在Apache,
ISS, Lighttpd等风靡的服务器上也是可用的。

  4、如CGI,法斯特CGI的不借助于任何Web服务器的内部架构,由此即便服务器技术的更动,
法斯特CGI如故平静不变。

FastCGI的办事原理

  一,Web Server运行时载入法斯特CGI进度管理器(IIS ISAPI或Apache Module)

  2、法斯特CGI进度管理器本人发轫化,运转七个CGI解释器进度(可知多少个php-cgi)并等候来自Web
Server的连日。

  三,当客户端请求到达Web
Server时,法斯特CGI进程管理器采取并连接到一个CGI解释器。Web
server将CGI环境变量和规范输入发送到法斯特CGI子进度php-cgi。

  4、法斯特CGI子进度达成处理后将业内输出和错误音信从同屡次三番接重返Web
Server。当法斯特CGI子进度关闭连接时,请求便告处理完了。FastCGI子进度接着等待并拍卖来自法斯特CGI进度管理器(运转在Web
Server中)的下二个一连。 在CGI情势中,php-cgi在此便退出了。

  在上述意况中,你可以设想CGI平日有多慢。每2个Web请求PHP都必须另行分析php.ini、重新载入全体扩充相提并论起始化全部数据结构。使用法斯特CGI,所有那一个都只在经过运营时爆发三遍。贰个附加的利益是,持续数据库连接(Persistent
database connection)可以干活。

FastCGI的不足

因为是多进度,所以比CGI多线程消耗越来越多的服务器内存,PHP-CGI解释器每经过消耗7至25兆内存,将以此数字乘以50或100就是很大的内存数。

  Nginx 0.8.46+PHP
5.2.14(法斯特CGI)服务器在3万并发连接下,开启的13个Nginx进度消耗150M内存(15M*10=150M),开启的6几个php-cgi进度消耗1280M内存(20M*64=1280M),加上系统自个儿消耗的内存,总共消耗不到2GB内存。纵然服务器内存较小,完全可以只开启二十二个php-cgi进程,那样php-cgi消耗的总内存数才500M。

  上边的数额摘自Nginx 0.8.x + PHP
5.2.13(法斯特CGI)搭建胜过Apache十倍的Web服务器(第6版)

        

什么是PHP-CGI

  PHP-CGI是PHP自带的FastCGI管理器。

  运行PHP-CGI,使用如下命令:php-cgi -b 127.0.0.1:柒仟

  PHP-CGI的不足

  一,php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不得以平滑重启

  二,直接杀死php-cgi进程,php就无法运作了。(PHP-FPM和Spawn-FCGI就没有这几个题材,守护进程会平滑从新兴成新的子进度。)

  什么是PHP-FPM

  PHP-FPM是3个PHP 法斯特CGI管理器,是只用于PHP的,可以在
http://php-fpm.org/download下载得到.

  PHP-FPM其实是PHP源代码的三个补丁,意在将法斯特CGI进度管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才得以行使。

  今后大家可以在风行的PHP
5.3.2的源码树里下载得到第一手整合了PHP-FPM的分段,听说下个版本会融合进PHP的主分支去。绝对Spawn-FCGI,PHP-FPM在CPU和内存方面的支配都更胜一筹,而且前者很不难崩溃,必须用crontab进行督查,而PHP-FPM则并未那种不快。

  PHP5.3.3已经集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP进度管理艺术,可以有效控制内存和经过、可以平滑重载PHP配置,比spawn-fcgi具有更加多有点,所以被PHP官方收录了。在./configure的时候带
–enable-fpm参数即可打开PHP-FPM。

使用PHP-FPM来控制PHP-CGI的FastCGI进
           
/usr/local/php/sbin/php-fpm{start|stop|quit|restart|reload|logrotate}

–start  启动php的fastcgi进程

–stop 强制为止php的fastcgi进度

–quit 平滑终止php的fastcgi进度

–restart 重启php的fastcgi进程

–reload 重新平整加载php的php.ini

–logrotate 重新启用log文件

  什么是Spawn-FCGI

  Spawn-FCGI是二个通用的法斯特CGI管理服务器,它是lighttpd中的一部份,很两个人都用Lighttpd的Spawn-FCGI举行法斯特CGI格局下的管理工作,但是有成百上千缺陷。而PHP-FPM的出现略微缓解了部分标题,但PHP-FPM有个毛病就是要再一次编译,那对于一些早已运营的条件或然有不小的高危害(refer),在php
5.3.3中可以直接动用PHP-FPM了。

  Spawn-FCGI方今一度独成为二个门类,尤其安定一些,也给众多Web
站点的安顿带来便利。已经有为数不少站点将它与nginx搭配来解决动态网页。

  最新的lighttpd也未尝包涵这一块了(http://www.lighttpd.net/search?q=Spawn-FCGI),
但能够在原先版本中找到它。在lighttpd-1.4.15版本中就富含了(http://www.lighttpd.net/download/lighttpd-1.4.15.tar.gz)

  近日Spawn-FCGI的下载地址是http://redmine.lighttpd.net/projects/spawn-fcgi,最新版本是http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz

  注:最新的Spawn-FCGI可以到lighttpd.net网站搜索“Spawn-FCGI”找到它的新式版本公布地方

  下边大家就可以拔取Spawn-FCGI来控制php-CGI的法斯特CGI进度了
/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g
www-data -f /usr/bin/php-CGI

  参数含义如下:

  -f
指定调用法斯特CGI的历程的举行顺序地点,按照系统上所装的PHP的处境具体设置

  -a 绑定到地点addr

  -p 绑定到端口port

  -s 绑定到unix socket的路径path

  -C 指定发生的法斯特CGI的进度数,暗许为5(仅用于PHP)

  -P 指定发生的历程的PID文件路径

  -u和-g 法斯特CGI使用什么地位(-u 用户 -g
用户组)运行,Ubuntu下得以采取www-data,其他的基于气象计划,如nobody、apache等

  PHP-FPM与spawn-CGI相比测试

  PHP-FPM的拔取尤其方便,配置都以在PHP-FPM.ini的文件内,而运行、重启都足以从php/sbin/PHP-FPM中展开。更方便的是修改php.ini后可以平素利用PHP-FPM
reload举行加载,无需杀掉进程就能够已毕php.ini的修改加载结果突显使用PHP-FPM可以使php有不小的天性进步。PHP-FPM控制的历程cpu回收的快慢相比较慢,内存分配的很均匀。

  Spawn-FCGI控制的进度CPU降低的神速,而内存分配的可比不均匀。有很多历程就像是未分配到,而其它一些却占有很高。恐怕是出于经过职责分配的不均匀导致的.而那也导致了一体化响应速度的降落。而PHP-FPM合理的分配,导致全体响应的涉及以及任务的平分。

  PHP-FPM与Spawn-FCGI作用相比

  http://php-fpm.org/about/

  PHP-FPM、Spawn-FCGI都以看护php-cgi的历程管理器。

  参考文档:

  http://topic.csdn.net/u/20100216/22/5809e272-6f67-4248-bde9-99deeae5215b.html

  http://topic.csdn.net/u/20101015/19/8ae74452-ec6b-448e-9942-21faeb008cd7.html

  http://club.topsage.com/thread-768488-1-1.html

  http://www.unixaid.info/index.php/productsapp/23-servsf/842-spawn-fcgi

  http://www.fastcgi.com/drupal/node/2

  http://baike.baidu.com/view/641394.htm

  http://baike.baidu.com/view/32614.htm

http://blog.yation.com/network/fastcgi/

 

#yum install mysql mysql-server

#yum install php

#yum install postgresql

#yum install phpmyadmin phppgadmin pgadmin3

设置完结

粗略安插

lighttpd、mysql的截至运转命令(root身份实施)

#/etc/init.d/linghttpd start

#/etc/init.d/mysqld start

活动运转的装置

#chkconfig –level 345 mysqld on

#chkconfig –level 345 lighttpd on

 

配置lighttpd

 

#vi /usr/local/lighttpd/etc/lighttpd.conf

修改一下内容

—————- 加载cgi,fastcgi模块————-

14 server.modules              = (

 15                                 “mod_rewrite”,

 16 #                               “mod_redirect”,

 17 #                               “mod_alias”,

 18                                 “mod_access”,

 19 #                               “mod_cml”,

 20 #                               “mod_trigger_b4_dl”,

 21 #                               “mod_auth”,

 22 #                               “mod_status”,

 23 #                               “mod_setenv”,

 24                                 “mod_fastcgi”,

 25 #                               “mod_proxy”,

 26 #                               “mod_simple_vhost”,

 27 #                               “mod_evhost”,

 28 #                               “mod_userdir”,

 29                                 “mod_cgi”,

 30 #                               “mod_compress”,

 31 #                               “mod_ssi”,

 32 #                               “mod_usertrack”,

 

—————————-网站根目录———————————

 38 ## a static document-root, for virtual-hosting take look at the

 39 ## server.virtual-* options

 40 server.document-root        = “/var/www/lighttpd/”

 

—————————-日志目录——————————

42 ## where to send error-messages to

 43 server.errorlog             =”/var/log/lighttpd/error.log”

…..

…..

115 #### accesslog module

116 accesslog.filename          = “/var/log/lighttpd/access.log”

 

—————————–专断认同首页格式————————-

 45 # files to check for if …/ is requested

 46 index-file.names            = ( “index.php”, “index.html”,

 47                                 “index.htm”, “default.htm” )

 

—————————–FastCgi模块—————————

## for PHP don’t forget to set cgi.fix_pathinfo = 1 in the php.ini

fastcgi.server  = ( “.php” =>

                   ( “localhost” =>

                                    (

                              “socket”=>
/var/run/lighttpd/php-fastcgi.socket”,
                                                                                                           
“bin-path” => “/usr/bin/php-cgi”

                            )

                        )

                 )

 

 

——————————CGI模块———————————-

#### CGI module

cgi.assign                 = (

                                “.sh” => “/bin/bash”,

                                “.pl”  => “/usr/bin/perl”,

                               “.cgi” => “/usr/bin/perl”

                                )

 

5 修改php.ini

设置 cgi.fix_pathinfo = 1

 

6 计划达成,重起lighttpd

# /etc/init.d/lighttpd restart

 

测试

index.php 内容

# cat /var/www/lighttpd/test.php

 

phpinfo();

echo “\ndajia hao \n”;

echo “同学们 ,有人炒盐了,十块钱一袋\n”;

?>

test.html

# cat /var/www/lighttpd/index.php

 

…..

…………

 ximo sias web started
###添加的

 西默实验室的同桌们,大家的web服务器运营了
###添加的

……………..

 

在浏览器中分别输入
http://localhost、http://localhost/test.php,查看输出效果。

相关文章