httpd cgi

1、cgi由来
httpd或者web服务器本身不处理动态内容,而是通过某种协议调用额外的应用程序来运行,并将处理后的结果响应给客户端。而cgi,全称是common gateway interface,翻译为通用网关接口,就是使web服务器能够跟其他应用程序通讯的一种机制(或者协议),能够调用额外的应用程序来处理动态内容。例如web服务器调用php解释器来解释php脚本。

2、fastcgi
web服务器与动态进程服务器通讯,动态进程不再归web服务器管理,而是统一由动态进程服务器进程管理。这个动态进程服务器进程同时生成了很多子进程,等待响应请求。也就是说,静态内容和动态内容分别由不同的主机处理(web服务器处理静态内容,动态进程服务器处理动态内容,然后返回html页面给web服务器)

3、动态网站
分两种类型:
1)客户端动态
过程:用户过来请求,把服务器端的源码下载到本地,在本地执行程序
安全性:如果有人恶意的在服务器端放了一个恶意脚本,用户下载到本地会对本地主机造成一定的危害
适应性:如果服务器端的脚本是java写的,要运行这段脚本,就必须要求用户本地主机必须安装有java的执行环境,否则脚本无法执行
2)服务器端动态
过程:脚本放在服务器端,通过cgi协议调用相关的解释器来执行脚本,并把执行后的结果返回给客户端

4、php
每一种程序开发语言都有其最适用的场景。比如,C,C++非常底层,执行效率很高,不适合开发那些多媒体,表现形式很丰富的程序,而适用于那些直接驱动硬件的程序。php是一种脚本语言,天生就是用来开发web页面的。

5、小于1024端口
1)httpd:root,root(master process) – 这个主导进程是root用户,root组 #并不会处理用户请求,而是用来创建进程或者销毁多余的进程
2)httpd:apache,apache(worker process) – 其他进程都是apache用户,apache组
备注:
a、在linux上,小于1024的端口只有管理员有权限使用,所以启动httpd的master进程的用户只有是管理员(httpd:80端口;如果是基于SSL:443端口)
b、在/etc/rc.d/init.d下有一个脚本叫做httpd,因此httpd也可以通过service httpd start|stop来启动或者停止httpd进程