记录学习过程中的点点滴滴
WebServer

C++ Web编程
四 7th
C++ Web编程
译者 yaronli (http://www.yaronspace.cn/blog)
原文地址:http://www.tutorialspoint.com/cplusplus/cpp_web_programming.htm
什么是CGI
CGI( Common Gateway Interface ),公共网关接口是一组标准,该标准定义了在 web server和普通脚本间是如何交换信息的。
Web浏览 (Web browsing)
为了更好的理解CGI的概念,我们看看当用户为了访问某个页面或者url点击链接时所发生的事情:
- 你的浏览器联系到HTTP 服务器,然后请求对应的URL,即对应的文件;
- Web服务器会解析这个URL,然后查找对应文件名。如果找到这个文件,Web服务器就会返回文件的内容给浏览器,否则 的话会返回一条错误信息;
- Web 浏览器从Web服务器获得响应信息,然后解析返回的文件内容或者是错误信息;
但是,可以这样设置HTTP服务器,当一个文件被请求时,不是将文件内容返回,而是将它作为程序来执行,并将程序产生的输出返回给你的浏览器来显示。
公共网关接口(CGI)就是这样一种协议,它使应用程序(叫做CGI程序或者是CGI脚本)能够与Web服务器交互。CGI程序可以使用Python、perl、Shell、C或者C++来编写。
CGI的架构图
下图展现了CGI的简单架构:
Web服务器的配置
在你处理CGI程序之前,请确定你的Web服务器支持CGI程序并且它配置为支持能够处理CGI程序。所有的被HTTP服务器执行CGI程序都会预先配置在规定的目录,这个目录传统上被命名为/var/www/cgi-bin/,默认情况下cgi程序的扩展名为.cgi,尽管它们是C++可执行文件。
Apache启动阶段分析[转载]
二 25th
l Apache的生命周期
这一节的内容将会阐述php模块的载入过程,请参考Apache的生命周期示意图(prefork模式下)。
Apache的运行分为启动阶段和运行阶段。
1. 启动阶段
在启动阶段,Apache主要进行配置文件解析(例如http.conf以及Include指令设定的配置文件等)、模块加载(例如mod_php.so,mod_perl.so等)和系统资源初始化(例如日志文件、共享内存段等)工作。
在这个阶段,Apache为了获得系统资源最大的使用权限,将以特权用户root(X系统)或超级管理员administrator(Windows系统)完成启动。
Apache和“php处理机”的装配过程就是在这个阶段完成的。
“php处理机”就是负责解释和执行你的php代码的系统模块。这个名字是我特意创造的,目的是为了帮助你理解本节的内容,后面的章节还会给出更专业的名称。
你单独做过php的安装配置吗?
如果你做过类似的工作,下面的内容很容易理解;如果你没有做过,可以尝试安装一下,有助于加深你的理解。不过,我的文章向来深入浅出,我会尽量把这个过程讲得更浅显一些。其实php的安装非常简单,如果你很感兴趣的话,可以到网上随便搜一篇安装指南,按步骤照做就可以了。
把php最终集成到Apache系统中,还需要对Apache进行一些必要的设置。这里,我们就以php的mod_php5 SAPI运行模式为例进行讲解,至于SAPI这个概念后面我们还会详细讲解。
假定我们安装的版本是Apache2和Php5,那么需要编辑Apache的主配置文件http.conf,在其中加入下面的几行内容:
Unix/Linux环境下:
LoadModule php5_module modules/mod_php5.so
AddType application/x-httpd-php .php
注:其中modules/mod_php5.so是X系统环境下mod_php5.so文件的安装位置。
Windows环境下:
LoadModule php5_module d:/php/php5apache2.dll
AddType application/x-httpd-php .php
注:其中d:/php/php5apache2.dll是在Windows环境下php5apache2.dll文件的安装位置。
这两项配置就是告诉Apache Server,以后收到的Url用户请求,凡是以php作为后缀,就需要调用php5_module模块(mod_php5.so/ php5apache2.dll)进行处理。
这个过程可以参考以下的示意图:
Apache启动阶段的源码包含在server/main.c中,我整理了一下源码中的对应关系:
不熟悉unix/linux的同学可能会问so文件(mod_php5.so)是个什么样的文件?
unix/linux下,so后缀文件是一个DSO文件,DSO与windows系统下的dll是等价概念,都是把一堆函数封装在一个二进制文件中。调用它们的进程把它们装入内存后,会将其映射到自己的地址空间。
DSO全称为Dynamic Shared Object,即动态共享对象。DLL全称为Dynamic Link Library即动态链接库。
Apache服务器的体系结构的最大特点,就是高度模块化。如果你为了追求处理效率,可以把这些dso模块在apache编译的时候静态链入,这样会提高Apache 5%左右的处理性能。
2. 运行阶段
在运行阶段,Apache主要工作是处理用户的服务请求。
在这个阶段,Apache放弃特权用户级别,使用普通权限,这主要是基于安全性的考虑,防止由于代码的缺陷引起的安全漏洞,象微软的IIS就曾遭受“红色代码(Code Red)”和“尼姆达(Nimda)”等恶意代码的溢出攻击。
本文地址:http://www.yaronspace.cn/blog/index.php/archives/467
axis2介绍与快速入门
十二 1st
Axis2 is a Web Services / SOAP / WSDL engine, the successor to the widely used Apache Axis SOAP stack. There are two implementations of the Apache Axis2 Web services engine – Apache Axis2/Java and Apache Axis2/C.
修改php文件的扩展名-apache配置
十一 10th
下面一行代码是apache配置的一个技巧,通过在自定义的.htaccess或者httpd.conf中添加一行就可以将xml文件作为php文件来解析。当然你也可以添加其他的扩展名文件来作为php文件来解析。当你想用到动态生成xml文件时就会用到下面的代码了
AddType application/x-httpd-php .php .xml
注意:不同的web server配置可能有稍有差别
利用apache的mod_deflate模块启用gzip页面压缩
十一 4th
前提知识:
利用Apache中的mod_gzip模块,我们可以利用gzip的压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端的浏览器。如果是纯文本的内容,效果非常明显,大约可以压缩到原来的30%-40%,使用户的浏览速度大大加快。
Gzip需要客户端浏览器支持,目前大部份浏览器都支持gzip,如IE,Netscape,Mozilla等,可以利用php中的预定义变量$_SERVER[‘HTTP_ACCEPT_ENCODING’]来判断客户端浏览器是否支持gzip。
配置方法:
修改http.conf的方法请参看:http://httpd.apache.org/docs/2.2/mod/mod_deflate.html 更多 >
近期评论