Delphi6+Apache Web 应用

Delphi6目前只能和Apache 1.X兼容使用(有方法兼容2.2X但还未测试成功)。

1)新建Web Server Application

File--New--Others--Web Server Application,建立好Web项目。

2)编辑dpr文件

在exports语句前加入以下语句,将动态链接库的扩展名改为.so,并且输出的文件为'mod_'+项目名。

{$E so}
{$LIBPREFIX 'mod_'}

修改exports语句:

exports
  apache_module name 'test_module'

其中test_module 可以任意取名,只要与Apache配置文件中保持一致即可。 

3) 编辑TWebModule文件

在WebModule可视化界面双击空白,出来Action Editor界面,添加一个Action,PathInfo可以为空,Default=True。

在Event中添加onAction事件,添加测试代码:

Response.Content := '<H1>Hello World</H1>'

4)编译项目,生成.so动态链接库文件

测试为mod_WebApp.so

5)配置Apache Config文件,路径为Apache\conf\httpd.conf

在末尾加入以下代码:

LoadModule test_module "D:\SourceCode\WebAppTest\mod_WebApp.so"
<Location /delphi>
  SetHandler mod_webapp-handler
</Location>

"test_module" 为 2)中填写的 exports apache_module name

"D:\SourceCode\WebAppTest\mod_WebApp.so" 为生成的动态链接文件路径

"/delphi" 为 URL后面跟的应用程序名称

"mod_webapp-handler" 为 动态链接库名称不带后缀名(全部转为小写)+"-handler"  

6)输入网址进行测试

浏览器中输入 http://localhost/delphi  (delphi大小写敏感)

如果成功的话则返回 Hello World,错误则会返回404 Error

 

转载于:https://www.cnblogs.com/maopaidashu/p/5158676.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我们都知道,Bolrand 从Delphi 6.0 以后开始支持Apache web 服务器,而Apache 以其出色的性能及安全性是很多人青睐。Apache 现在最新的版本为2.0.43。虽然Borland 今年新出的Delphi 7 开始支持Apache 2.0 版本,但是Delphi 6 只支持Apache 1.x 版本,而Delphi 7 发行的版本也只支持到Apache 2.0.39 版,对Apache 2.0.40 以后的版本无法支持,本文给出了让Delphi 6和Delphi7 支持最新的Apache 2.0.43 的方法。首先让我们对Delphi 7 进行改造,Delphi 7.0 不支持 Apache 2.0.40 以后的版本的原因是Apache 2.0.40 以后版本修改了接口文件,因此要对Delphi 7.0 对应的接口文件进行修改,具体的修改文件为: HTTPD2.pas,修改内容为:打开 HTTPD2.pas (在c: Program Filesorlanddelphi7source Internet下) 修改一下常数: · MODULE_MAGIC_NUMBER_MAJOR = 20020628; { Apache 2.0.40 }· 如果是Apache 2.0.43 的话,应该修改为· MODULE_MAGIC_NUMBER_MAJOR = 20020903; { Apache 2.0.43 } MODULE_MAGIC_NUMBER_MINOR = 0; (* 0...n *)在结构 conn_rec 的定义里加入以下: · ap_conn_keepalive_e = (AP_CONN_UNKNOWN, AP_CONN_CLOSE, AP_CONN_KEEPALIVE);在结构 conn_rec 的定义里替换: · (** Are we still talking? *)· flags: Cardinal;· { The following are in the flags bitset:· unsigned aborted:1;· · (** Are we going to keep the connection alive for another request?· * -1 fatal error, 0 undecided, 1 yes *)· signed int keepalive:2;· · (** have we done double-reverse DNS? -1 yes/failure, 0 not yet,· * 1 yes/success *)· signed int double_reverse:2;· }为: (** Are we still talking? *) flags1: Cardinal; { The following are in the flags bitset: unsigned aborted:1; } (** Are we going to keep the connection alive for another request? * @see ap_conn_keepalive_e *) keepalive: ap_conn_keepalive_e; flags2: Cardinal; { The following are in the flags bitset: (** have we done double-reverse DNS? -1 yes/failure, 0 not yet, * 1 yes/success *) signed int double_reverse:2; }好了,保存这个文件,然后拷入c: Program Filesorlanddelphi7lib 目录。重新编译你的程序,加入相应的Apache 的配置(具体配置方法请参照我以前的文章),启动Apache,打开浏览器。 ok! 没问题了吧!好。现在我们看看怎么在Delphi 6 里面实现Apache 2.0 的支持,实际上很简单,只要把Delphi 7 里面相应的文件拷入 Delphi 6 的LIB 目录就可以了,具体为以下三个文件: ApacheTwoHTTP.pas, ApacheTwoApp.pas, HTTPD2.pas,然后打开你的现有的Apache 1.x 的程序,修改project 上面的 use 部分,把 Apacheapp改为Apachetwoapp,再把下面的ContentType 改为handler,好了,所有手术完成,现在你编译出来的就是支持Apache 2.0.43 的动态共享模块了。注意:以上的修改为非官方修改,不能保证不出问题,请大家慎重处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值