TclHttpd是一个用Tcl语言开发的Web服务器。
可以到 TclHttpd 官方网站下载。推荐下载StarKit包。
"tclhttpd3.5.1.kit"文件的大小是850KB左右。
tclkit tclhttpd.kit -docRoot . -port 80 -host localhost
上面的命令启动TclHttpd服务器,监听本地主机的80端口,以当前目录作为根目录(DocumentRoot)。
如果省略-docRoot
选项,则使用内置的根目录,会显示相关文档。
tclkit tclhttpd.kit -port 80 -host localhost
Doc_Root /usr/local/htdocs Doc_AddRoot /foobar /some/path/to/foobar Doc_PublicHtml public_html ;# http://server/~user/ Doc_IndexFile index.{html,shtmll} Log_SetFile /usr/local/tclhttpd/log Log_FlushMinutes minutes ;# buffer is used for log Httpd_Server 80 localhost 127.0.0.1
Url_PrefixInstall / [list DocDomain $Doc(root)] ;# 默认的文件服务 Url_PrefixInstall /cgi-bin [list CgiDomain $directory] ;# CGI服务 ### TclHttpd 内置的控制器 proc DocDomain {directory sock suffix} { ... } proc CgiDomain {directory sock suffix} { ... } proc DirectDomain {directory sock suffix} { ... }
直接映射URL请求到Tcl procedure
Direct_Url /status Status Direct_Url /mail Mail proc Status/hello {args} { return "hello" } proc Mail {email subject args} { # $email 和 $subject 的值来自表单提交数据 # $args 的值来自其余的表单数据 ... ... }
TclHttpd服务器在得到请求的文档的MIME类型后,会检查并调用(如果其存在)相应的文档类型处理器。
文档类型MIME是根据文档后缀来推断的。文件"mime.types"描述了文件名后缀到MIMI的映射关系。
### TclHttp 内置的文档类型处理器 proc Doc_application/x-cgi {path suffix sock} { ... } proc Doc_application/x-imagemap {path suffix sock} { ... } proc Doc_application/x-tcl-subst {path suffix sock} { ... } proc Doc_application/x-server-include {path suffix sock} { ... }
请求"/some/path/file.html"时,会检查是否有相就的"file.tml"文件存在。如果有,则执行".tml"文件,并缓存其结果作为".html"文件的内容。
### File: file.tml [Doc_CheckTemplates true] ;# 推荐设置为true;默认值是false [DynamicOnly]
TclHttpd执行模板文件"file.tml"时,会逐层目录网上寻找(从下往上)并加载(从上往下)目录下的".tml"文件。
可以通过Tcl的C扩展 Thread 来支持线程。
可以通过Tcl的扩展库 TLS来支持 https/SSL。
TclHttpd的官方网站也提到了 OpenSSL 或 BSAFE 的扩展库。