电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> 网管专栏
浅析Apache服务器中SSI和CGI的设定方法-网管专栏,WEB服务
作者:网友供稿 点击:16
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 

    由于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_include 及 moc_cgi 这两个模块。你可以在bin子目录下执行./httpd -l来查看你的apache是否装有这两个模块。执行的输出会是一长串apache现在安装的所有模块。如果mod_include及moc_cgi 这两个模块不在清单里,你必须重新编译服务器。重新编译时,确定依照如何含括 mod_include、moc_cgi 模块的说明。此外你还必需有提供实时网页的server-side includes(相关资料网址:http://www.oreilly.com/catalog/apache/excerpt/ch10.html)。有了 server-side includes (ssi)支持,你就能制作出实时的动态网页。接下来,我先从服务器的ssi支持设定开始,然后进入cgi的编写。

2、apache的设定
    首先你必须先找到apache这个设定文件。apache的原始安装目录在 unix下是/usr/local/apache,在windows下则是 c:\program files\apache。接着在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_include 处理。之后,mod_include 就会判断该如何响应这样的文件。接下来,寻找以下文字:

在这行文字及对应的 间会有一行选项行(options line)。原始的设定是:
options indexes followsymlinks multiviews
在这行尾端加上includes ,结果看起来会是这样:
options indexes followsymlinks multiviews includes
这是要求apache在htdocs子目录里执行 server-side includes 程序。为了让这些修改生效,我们必须重新启动服务器。在 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 modified 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 bytes long and it was last modified on wednesday, 02-aug-2000 20:18:28 pdt
    另外一种可以激活支持ssi程序的方法称为xbithack设定(相关资料网址:http://www.apache.org/docs/mod/mod_include.html#xbithack )。这个方法的由来是当你将文本文件的使用者可执行位(user-executable bit)设为可执行状态后,apache会将那些文件视为 ssi 程序文件。
    要激活这样的功能必须将以下指令(directive)放在所有目录的 .htaccess 文件里:xbithack status on (or full) status 的值可以设为on 、off 或是full。on 的设定会强制服务器将所有使用者可执行的文件视为ssi项。off则使服务器完全忽略使用者可执行的设定状态。若是设定为full,服务器会视所有使用者可执行档为ssi项,同时也会检查组可执行(group-executable bit)。如果组可执行项设定为可执行时,传回header的last modified time的值就会被设定为该文件最近一次被修改的时间。这样的设定可以让客户端的浏览器及代理服务器(proxy)进行缓存(caching)。不过在使用这样的功能时必须要小心。例如说,如果你的网页有提供轮替式广告看板你就不会想要设定群组可执行位为开启的状态,因为那么做会让第一个下载的广告被快取起来,导致使用者再也看不到其它页的广告。

4、执行cgi程序
    在apache原始安装里,cgi-bin子目录下附有两组cgi程序,test-cgi 以及printenv,只不过这两组程序有潜在的安全漏洞。但是由于我们只是要做设定测试,并且我们不会将这样的原始安装设定直接放在主运行服务器(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)进行调试。在这里我所介绍的仅只是设定文件相关知识的皮毛。设定文件的原始设定有着非常详尽的说明文件,而且每一个系统版本都附有核心模块及标准模块的说明文件,如果你花些时间在这些文件里摸索,你会找到任何你想要的功能。


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·如何查看本机打开的端口是被哪个程序使用的-网管专栏,操作系统
·如何在多台电脑上同时安装Windows-网管专栏,操作系统
·网管人员必备的网络命令(转贴)-数据库专栏,SQL Server
·Postfix + Courier-IMAP + Cyrus-SASL + MySQL + IMP完全指南(新版)-网管专栏,邮件服务
·一个IP建多个Web站点--主机头名法-网管专栏,WEB服务
·WinXP/2003网络服务详解-网管专栏,操作系统
·电信网管中的Java客户端(二)-JSP教程,Java技巧及代码
·Resin在Windows系统下的安装-网管专栏,WEB服务
·在Win2k3下配置Apache+php+mysql-网管专栏,WEB服务
·服务器配置SSL-网管专栏,操作系统

最新文章
·如何查看本机打开的端口是被哪个程序使用的-网管专栏,操作系统
·服务器配置SSL-网管专栏,操作系统
·一个IP建多个Web站点--主机头名法-网管专栏,WEB服务
·如何在多台电脑上同时安装Windows-网管专栏,操作系统
·Linux内核技术分析-网管专栏,操作系统
·在Win2k3下配置Apache+php+mysql-网管专栏,WEB服务
·在Redhat Enterprise AS 3 下源码安装配置 MONO-网管专栏,WEB服务
·网管人员必备的网络命令(转贴)-数据库专栏,SQL Server
·WinXP/2003网络服务详解-网管专栏,操作系统
·Apache安装设置-网管专栏,WEB服务




版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号