专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »web服务器 » apachessi:浅析Apache服务器中SSI和CGI设定思路方法 »正文

apachessi:浅析Apache服务器中SSI和CGI设定思路方法

来源: 发布时间:星期四, 2009年1月15日 浏览:14次 评论:0
  由于Apache具有相当高可移植性它支持超过30种操作系统包括Unix、Windows 及Darwin等系统所以目前在网络上已注册网域里大部份是使用Apache网页服务器目前ApacheSoftware Foundation 正致力于发展现在已进入alpha测试阶段Apache2.0在这里我和大家探讨如何修改服务器选项让服务器能提供简单动态网页内容也就是支持CGI及 Server-Side Include(SSI)

  1、准备工作

  首先我假设你已经安装好Apache而且你Apache能提供静态网页供浏览Apache安装会自动附上静态HTML测试页也就是说如果能看到那测试页就代表你Apache能正常运作了基本安装下Apache仅能提供静态HTML网页然而你可以通过使用模块(modules)来提升它功能在原始设定下Apache编译会包含mod_ 及 moc_cgi 这两个模块你可以在bin子目录下执行./httpd -l来查看你Apache是否装有这两个模块执行输出会是长串Apache现在安装所有模块如果mod_及moc_cgi 这两个模块不在清单里你必须重新编译服务器重新编译时确定依照如何含括 mod_、moc_cgi 模块介绍说明此外你还必需有提供实时网页Server-Side Includes(相关资料网址:http://www.oreilly.com/catalog/apache/excerpt/ch10.html)有了 server-side s (SSI)支持你就能制作出实时动态网页接下来我先从服务器SSI支持设定开始然后进入CGI编写

  2、Apache设定

  首先你必须先找到Apache这个设定文件Apache原始安装目录在 Unix下是/usr/local/apache在Windows下则是 c:Program FilesApache接着在conf子目录下你会找到httpd.conf 文件这就是Apache设定档这个设定文件是个纯文字文件所以你可以使用文字编辑器如vi或Notepad 等来编辑首先要注意是在这个设定档里有些行起始文字是#符号这表示这行文字全为批注适当地在你设定档内做批注是个好习惯那帮你记得你曾做了哪些设定以及为什么

  3、执行 SSI

  开启设定文件并寻找以下这些文字:

#
# To use server-parsedHTMLfiles
#
#AddType text/html .shtml
#AddHandler server-parsed .shtml


  删除AddType及AddHandler这两行指令前#符号AddType指令会要求服务器在传回任何附属档名为.shtml网页时以 text或HTML做为传回文件内容格式AddHandler 则是用来指示服务器将文件内容送交给mod_ 处理的后mod_ 就会判断该如何响应这样文件接下来寻找以下文字:

  在这行文字及对应 间会有行选项行(options line)原始设定是:

  Options Indexes FollowSymLinks MultiViews

  在这行尾端加上Includes 结果看起来会是这样:

  Options Indexes FollowSymLinks MultiViews Includes

  这是要求Apache在htdocs子目录里执行 server-side s 为了让这些修改生效我们必须重新启动服务器在 Unix 下重新激活执行"kill -HUP `cat /usr/local/apache/logs/httpd.pid`"在 Windows 下执行"Apache-k restart"现在我们来试试刚才设定结果在/usr/local/apache/htdocs 目录里新增个文件 test.shtml这个文件必须要包含以下代码:

  The file hello.txt is long and it was last modied on

  这段 SSI 会去读取个称为 hello.txt 文件并将该文件大小以及最近修改日期输出到网页上显然我们还必须在 htdocs 目录下新增这个hello.txt 文件在我hello.txt 文件里只有行文字:HOW ARE YOU!完成新增这些文件后打开你惯用浏览器并开启http://localhost/test.shtml网页如果你服务器安装并不是通过root用户你可能必须改为开启http://localhost:8080/test.shtml的后将得到如下结果:

  HOW ARE YOU! The file hello.txt is 1k s long and it was last modied on Wednesday, 02-Aug-2000 20:18:28 PDT

  另外种可以激活支持SSI思路方法称为XbitHack设定(相关资料网址:http://www.apache.org/docs/mod/mod_.html#xbithack )这个思路方法由来是当你将文本文件使用者可执行位(user-executable bit)设为可执行状态后Apache会将那些文件视为 SSI 文件

  要激活这样功能必须将以下指令(directive)放在所有目录 .htaccess 文件里:XbitHack status on (or full) status 值可以设为on 、off 或是fullon 设定会强制服务器将所有使用者可执行文件视为SSI项Off则使服务器完全忽略使用者可执行设定状态若是设定为Full服务器会视所有使用者可执行档为SSI项同时也会检查组可执行(group-executable bit)如果组可执行项设定为可执行时传回headerlast modied time值就会被设定为该文件最近次被修改时间这样设定可以让客户端浏览器及代理服务器(proxy)进行缓存Cache(caching)不过在使用这样功能时必须要小心例如说如果你网页有提供轮替式广告看板你就不会想要设定群组可执行位为开启状态那么做会让第个下载广告被快取起来导致使用者再也看不到其它页广告

  4、执行CGI

  在Apache原始安装里cgi-bin子目录下附有两组CGItest-cgi 以及prenv只不过这两组有潜在安全漏洞但是由于我们只是要做设定测试并且我们不会将这样原始安装设定直接放在主运行服务器(live server)所以我们还是会激活其中组CGI看看Apache当初是如何被设定来执行这组最后我们会自己撰写支简单CGI

  首先要确定这组是能执行进入cgi-bin子目录确定文件被设定为使用者(服务器执行时使用者)可执行以及使用组(服务器执行时使用组)可执行对 Windows系统来说步应该是非必要接着对服务器要求这样内容:

  http://localhost:8080/cgi-bin/test-cgi

  注意:只有在通过非root使用者进行服务器安装情况下才需要指定8080端口(port)这支Apache内建test-cgi会列出CGI会存取变量值激活CGI支持是设定在httpd.conf设定文件内ScriptAlias 指令区段这个指令区段原始设定值是:

  ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

  这行指令是告诉Apache如果要求网页路径是以cgi-bin为起始这些文件可在/usr/local/apache/cgi-bin/ 目录下找得到这行指令同时也告诉Apache要在这个目录下执行文件在下面我准备了个会输出"How are you!"简单CGI我将它命名为 how.sh

#!/bin/sh
echo "Content-type: text/html"
echo
echo "How are you!"


  修改这个文件权限使其成为可执行文件并且向你服务器提出以下要求:

  http://localhost:8080/cgi-bin/how.sh

  虽然这组CGI是采用shell script来编写其实它可以用任何适用于该系统语言来撰写至于有关CGI撰写如果有机会我会和大家作更深入探讨

  结论:

  Apache支持所有SSI 指令可以在Apachedocumentation 里找到Apache所有功能都可以通过设定文件 (config file)进行调试在这里我所介绍仅只是设定文件相关知识皮毛设定文件原始设定有着非常详尽介绍说明文件而且每个系统版本都附有核心模块及标准模块介绍说明文件如果你花些时间在这些文件里摸索你会找到任何你想要功能

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: