基于Delphi7 WebService 在Apache发布及Apache使用说明
基于Delphi7 WebService 在Apache 发布及Apache 使用说明
qq:394251165
前段时间,需要将基于Delphi7 WebService 发布在Apache, 很是苦脑, 通过研究以及在Google 上搜索到的资料终于解决了问题. 希望能对你有帮助
开发环境:
Delphi 开发环境是 Delphi7
Apache 版本是 apache_2.2.8
Delphi 7 以及Delphi6 支持的 WebService 中Apache 版本是 2.0 的, 生成的Apache dll 在 Apache 发布会报错. 根据网友资料, 需要 修改 HTTPD2.pas 文件,放在 Delphi 安装目录下 “Source/Internet”, 如我的安装目录为
“ D:/Program Files/Borland7/Delphi7/Source/Internet “
我把修改好的文件放到 ApacheTo Internet 目录中
目录中 apache2.0 中的文件是对于在 Apache2.0 下发布的WebService
目录中 apache2.2 中的文件是对于在 Apache2.2 下发布的WebService
根据自己的需要 而选择 将 HTTPD2.pas , ApacheTwoApp.pas ,ApacheTwoHTTP.pas
拷贝到 Delphi7/Source/Internet
就可以了,当然,如果不行的话,你要把 Delphi7/Lib 中的 HTTPD2.Dcu 删除,重新编译
在程序的搜索路径 添加 Delphi7/Source/Internet
其实, 主要是修改了文件 httpd2.pas 中涉及到Apache 的版本号码
如,你可以打开文件看看, 主要是修改下面的地方, 当然还有其它地方,已经做了注释说明
// AP22
MODULE_MAGIC_COOKIE = $041503232; (* "AP22" *)
// AP20
// MODULE_MAGIC_COOKIE = $041503230; (* "AP20" *) by tjb
{$EXTERNALSYM MODULE_MAGIC_COOKIE}
// MODULE_MAGIC_NUMBER_MAJOR = 20020903; { Apache 2.0.43 } by tjb
MODULE_MAGIC_NUMBER_MAJOR = 20051115; { Apache 2.2.x}
在Delphi 7 WebService 工程中 注意下面这个地方地修改, 下图说明
用户Delphi7 生成 WebService DLL .
说明:我使用的是Apache2.2.8 版本, 当然在上面选择的 Apache2.2 目录下的 HTTPD2.pas, 连同其它两个文件,我拷贝到 Delphi7/Source/Internet, 覆盖以前的文件, 当然, 你可以在覆盖前, 把这三个文件先备份.(我有修改好的pas文件,如有需要,可以和我联系)
下面, 先看看, 我们安装Apache.
apache_2.2.8-win32-x86-openssl-0.9.8g.msi(可以到官方下载), 直接安装, 安装比较简单, 要填域名, 如果你有网站, 就按实际情况填. 如果没有, 你随便填. 选择是 80 端口, 还是 选择8080 端口, 可以根据你自己的实际情况. 比如你的机子上已经安装IIS, 已经占用了80 端口, 你可以选择使用8080 端口 , 安装Apache. 后面我们还会讲到 怎样修改Apache 的配置文件中如端口的修改
当然Apache2.2 可以使用控制台, 也可通过Apache2.2 提供的工具
使用 Monitor Apache Servers , 里面怎么用, 自己看看就知道,很简单.
其二, 是使用控制台其它Apache2.2
启动之后 , 在 IE 中 http://127.0.0.1:8080/ , 出现下页面, 表明你的Apache 安装成功, 当然我配置的端口是8080, 如果你默认为80 端口 在 IE 中 http://127.0.0.1/ 不需要在URL添加端口, 如果是其它的端口 , 比如9090, 你输入 http://127.0.0.1:9090
显示 "It works!" 好了, 我们的Apache 配好, 现在将Delphi Build 好的 DLL, 比如我的是 EcTomRegister.dll, 拷贝到 Apache2.2 安装目录下 的Module 中. 注意我们刚才Delphi 中
exports
apache_module name 'EcTomRegisterProj_module';
用到的是 EcTomRegisterProj_module 这个名称 . 下一步我就要在 Apaache2.2 目录下 Conf 目录下修改 httpd.conf 配置文件, 用记事本打开就可以了
#begin by for register data server register the user's register information
LoadModule EcTomRegisterProj_module modules/EcTomRegister.dll
<Location /EcTomRegister >
SetHandler EcTomRegister-handler
</Location>
#end
注意 使用的是LoadModule 命令, 后面跟的就是 Delph7 中的Exprots 中Name 后面的名字. 注意红色字, EcTomRegister.dll , 在<Location / EcTomRegister>, 是Dll 中的文件名
EcTomRegister-handler, 安装这个模式就可进行配置了. 注意在 Delphi7 中的 新建 Apache2.2 WebService 时一定要选择,Apache2.x Shared Module
配置好了, 要重新启动Apache2.2。好了到此,我们在Delphi7下的WebService,在Apache下配置,就完了。如有问题,可以提意见。在Delphi后续的版本Delphi2007,Delphi2009以及最新的Delphi2010,都没有对Apache的支持。有兴趣的可以研究一下,有好的消息,可以通知我哦。下面是一些参考资料,我在网上找了很久,花了一些时间 ,可能对您有所用途。
另外可以参考:
附 录 一、 Apache2.2 配置虚拟目录配置命令
# virtur dir for user data down
Alias /ectom "C:/Program Files/Apache Software Foundation/Apache2.2/ectom "
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/ectom ">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
红色部分 是根据自己的情况进行配置, ectom 是虚拟目录, “C:/Program Files/Apache Software Foundation/Apache2.2/ectom ” 是路径. 其它的Apache2.2 的命令.
访问的URL http://127.0.0.1:8080/ectom/a.html ,测试其正确性。
附录二、 Apache2.2 启动 (Windows 平台) 命令
http://www.mybrand.com.cn/ebook/apache2.2/stopping.html
有更详细的 Apache2.2 各种命令, 可以学习.
运行中 输入 cmd 后台, 在Dos 窗口中, 使用 cd 命令切换到 Apache2.2/bin 目录下
Ø Httpd –k install //{ 安装一个服务}
Ø Httpd -k install -n " 服务名" //{ 安装一个带服务名的服务}
Ø apache -k uninstall //{ 卸载一个服务}
Ø apache -k uninstall -n " 服务名" //{ 卸载一个带服务名的服务 }
Ø httpd –k stop 或 httpd –k shutdown //{ 停止命令}
Ø httpd –k start //{ 启动命令}
Ø httpd -k restart //{ 重启动命令}
参考下面更详细
可以在 Apache 安装目录的bin 子目录下,使用如下命令将Apache 安装为Windows NT 服务:
httpd -k install
如果你想指定服务的名称,可以使用下面的命令。当你在同一机器上安装多个 Apache 服务时,你必须为它们指定不同的名字。
httpd -k install -n " 服务名"
如果你想为不同名称的服务使用不同的配置文件,则安装时需要指定配置文件:
httpd -k install -n " 服务名" -f "c:/files/my.conf"
如果你使用的是第一个命令,也 就是除 -k install 外没有其它命令行参数,那么被安装的服务名称将是:Apache2 ,配置文件将使用conf/httpd.conf 。
要移除一个 Apache 服务很简单:
httpd -k uninstall
或者使用下述命令移除特定名称的 Apache 服务:
httpd -k uninstall -n " 服务名"
通常,启动、重启、关闭 Apache 服务的方法是使用Apache Service Monitor 工具,另外也可以使用控制台命令:NET START Apache2 和 NET STOP Apache2 或者通过Windows 服务控制面板。在启动Apache 服务之前,你应当使用下面的命令检查一下配置文件的正确性:
httpd -n " 服务名" -t
你可以通过命令行开关来控制 Apache 服务。要启动一个已经安装的Apache 服务,可以使用:
httpd -k start
要停止一个已经安装的 Apache 服务,可以使用:
httpd -k stop
或
httpd -k shutdown
要重启一个运行中的 Apache 服务,强制它重新读取配置文件,可以使用:
httpd -k restart
附录三 、 将安装好的Apache2.2 直接拷贝到其它的目录 , 启动Apache
因为根据需要 , 很可能, Apache2.2 拷贝到其它的目录, 而不想通过 “ apache_2.2.8-win32-x86-openssl-0.9.8g.msi ” 安装, 每次安装都很麻烦.
只有将 Apache2.2 安装好的 目录 直接拷贝或到其它目录, 当然如果是以服务其的形式其它你的Apache, 你要把服务卸载掉. 在Conf 目录的 httpd.conf 目录下, 修改
ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2"
修改成你的新路径 , 保存文件, 就可以启动Apache 了, 是不是很简单.
文件中其它 , 比如Apache 监听的端口 8080
Listen 8080
你可以改成其它的 Listen 9090,
当然还有好的其它的命令 参考
|
Apache 服务器配置技巧 ( 发布者:飞翔 ) 引用: http://www.52z.com/info/ArticleView/2004-10-15/Article_View_27672.Htm http://www.52z.com:80/info/ArticleView/2004-10-15/Article_View_27679.Htm |
|
本文简要介绍了十几个Apache 的配置技巧: 1 、如何设 置请求等待时间 在 httpd.conf 里面设置: TimeOut n 其中 n 为整数,单位是秒。 设置这个 TimeOut 适用于三种情况: 2 、如何接收一个 get 请求的总时间 接收一个 post 和 put 请求的 TCP 包之间的时间 TCP 包传输中的响应( ack )时间间隔 3 、如何使得 apache 监听在特定的端口 修改 httpd.conf 里面关于 Listen 的选项,例如: Listen 8000 是使 apache 监听在 8000 端口 而如果要同时指定监听端口和监听地址,可以使用: Listen 192.170.2.1:80 这样就使得 apache 同时监听在 192.170.2.1 的 80 端口和 192.170.2.5 的 8000 端口。 当然也可以在 httpd.conf 里面设置: Port 80 这样来实现类似的效果。 4 、如何设置 apache 的最大空闲进程数 修改 httpd.conf ,在里面设置: MaxSpareServers n 其中 n 是一个整数。这样当空闲进程超过 n 的时候, apache 主进程会杀掉多余的空闲进程而保持空闲进程在 n ,节省了系统资源。如果在一个 apache 非常繁忙的站点调节这个参数才是必要的,但是在任何时候把这个参数调到很大都不是一个好主意。 同时也可以设置: MinSpareServers n 来限制最少空闲进程数目来加快反应速度。 5 、 apache 如何设置启动时的子服务进程个数 在 httpd.conf 里面设置: StartServers 5 这样启动 apache 后就有 5 个空闲子进程等待接受请求。 也可以参考 MinSpareServers 和 MaxSpareServers 设置。 6 、如何在 apache 中设置每个连接的最大请求数 在 httpd.conf 里面设置: MaxKeepAliveRequests 100 这样就能保证在一个连接中,如果同时请求数达到 100 就不再响应这个连接的新请求,保证了系统资源不会被某个连接大量占用。但是在实际配置中要求尽量把这个数值调高来获得较高的系统性能。 7 、如何在 apache 中设置 session 的持续时间 在 apache1.2 以上的版本中,可以在 httpd.conf 里面设置: KeepAlive on 这样就能限制每个 session 的保持时间是 15 秒。 session 的使用可以使得很多请求都可以通过同一个 tcp 连接来发送,节约了网络资源和系统资源。 8 、如何使得 apache 对客户端进行域名验证 可以在 httpd.conf 里面设置: HostnameLookups on|off|double 如果是使用 on ,那么只有进行一次反查,如果用 double ,那么进行反查之后还要进行一次正向解析,只有两次的结果互相符合才行,而 off 就是不进行域名验证。 如果为了安全,建议使用 double ;为了加快访问速度,建议使用 off 。 9 、如何使得 apache 只监听在特定的 ip 修改 httpd.conf ,在里面使用 BindAddress 192.168.0.1 这样就能使得 apache 只监听外界对 192.168.0.1 的 http 请求。如果使用: BindAddress * 就表明 apache 监听所有网络接口上的 http 请求。 当然用防火墙也可以实现。 10 、 apache 中如何限制 http 请求的消息主体的大小 在 httpd.conf 里面设置: LimitRequestBody n n 是整数,单位是 byte 。 cgi 脚本一般把表单里面内容作为消息的主体提交给服务器处理,所以现在消息主体的大小在使用 cgi 的时候很有用。比如使用 cgi 来上传文件,如果有设置: LimitRequestBody 102400 那么上传文件超过 100k 的时候就会报错。 11 、如何修改 apache 的文档根目录 修改 httpd.conf 里面的 DocumentRoot 选项到指定的目录,比如: DocumentRoot /www/htdocs 这样 http://localhost/index.html 就是对应 /www/htdocs/index.html 12 、如何修改 apache 的最大连接数 在 httpd.conf 中设置: MaxClients n n 是整数,表示最大连接数,取值范围在 1 和 256 之间,如果要让 apache 支持更多的连接数,那么需要修改源码中的 httpd.h 文件,把定义的 HARD_SERVER_LIMIT 值改大然后再编译。 13 、如何使每个用户有独立的 cgi-bin 目录 有两种可选择的方法: (1) 在 Apache 配置文件里面关于 public_html 的设置后面加入下面的属性: ScriptAliasMatch ^/~([^/]*)/cgi-bin/(.*) /home/$1/cgi-bin/$2 (2) 在 Apache 配置文件里面关于 public_html 的设置里面加入下面的属性: <Directory /home/*/public_html/cgi-bin> 14 、如何调整 Apache 的最大进程数 Apache 允许为请求开的最大进程数是 256,MaxClients 的限制是 256. 如果用户多了,用户就只能看到Waiting for reply.... 然后等到下一个可用进程的出现。这个最大数,是 Apache 的程序决定的 -- 它的 NT 版可以有1024 ,但 Unix 版只有 256 ,你可以在 src/include/httpd.h 中看到: #ifndef HARD_SERVER_LIMIT 你可以把它调到 1024 ,然后再编译你的系统。 15 、如何屏蔽来自某个 Internet 地址的用户访问 Apache 服务器 可以使用 deny 和 allow 来限制访问,比如要禁止 202.202.202.xx 网络的用户访问: <Directory /www/htdocs> 16 、如何在日志里面记录 apache 浏览器和引用信息 你需要把 mod_log_config 编译到你的 Apache 服务器中,然后使用下面类似的配置: CustomLog logs/access_log "%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"" 17 、如何修改 Apache 返回的头部信息 问题分析:当客户端连接到 Apache 服务器的时候, Apache 一般会返回服务器版本、非缺省模块等信息,例如: Server: Apache/1.3.26 (Unix) mod_perl/1.26 解决: 你可以在 Apache 的配置文件里面作如下设置让它返回的关于服务器的信息减少到最少: ServerTokens Prod 注意: 这样设置以后 Apache 还会返回一定的服务器信息,比如: Server: Apache 但是这个不会对服务器安全产生太多的影响,因为很多扫描软件是扫描的时候是不顾你服务器返回的头部信息的。你如果想把服务器返回的相关信息变成: Server: It iS a nOnE-aPaCHe Server 那么你就要去修改源码了。 |
http://blog.csdn.net/tjb_1216/article/details/4626983
基于Delphi7 WebService 在Apache发布及Apache使用说明的更多相关文章
- Apache发布支持Java EE微服务的Meecrowave服务器
Apache OpenWebBeans团队希望通过使服务器适应用户来消除复杂性.所以,该团队发布了Apache Meecrowave项目1.0版. Apache Meecrowave是一款小型服务器, ...
- Apache 整合 Tomcat (首先Apache 发布的是PHP项目,占用端口80,tomcat 发布的是Java 项目,占用端口8080)
情况简介: Apache 整合 Tomcat (首先Apache 发布的是PHP项目,占用端口80,tomcat 发布的是Java 项目,占用端口8080),而现在是虚拟出来两个域名(希望这两个域名都 ...
- vue项目打包后想发布在apache www/vue 目录下
使用的是vue-element-admin做示例,可以参考Vue项目根据不同运行环境打包项目,其他项目应该大同小异. 使用vue-router的browserHistory模式,配置mode: 'hi ...
- 转 WebService两种发布协议--SOAP和REST的区别
转发文章 https://blog.csdn.net/zl834205311/article/details/62231545?ABstrategy=codes_snippets_optimize_v ...
- 使用Apache Flink 和 Apache Hudi 创建低延迟数据湖管道
近年来出现了从单体架构向微服务架构的转变.微服务架构使应用程序更容易扩展和更快地开发,支持创新并加快新功能上线时间.但是这种方法会导致数据存在于不同的孤岛中,这使得执行分析变得困难.为了获得更深入和更 ...
- 再谈 apache设置virtualhost + apache的一些相关设值
首先 要弄懂究竟什么是, vitrual host: 虚拟主机, 他有什么用处? 就是说: 一台计算机(server)中, 通常只是放一个网站/站点 但是 如果机器紧张, 服务器性能比较好,或访问的站 ...
- 1.3.8、CDH 搭建Hadoop在安装之前(端口---Apache Flume和Apache Solr使用的端口)
Apache Flume和Apache Solr使用的端口 Apache Flume用于与Apache Solr通信的端口可能会有所不同,具体取决于您的配置以及是否使用安全性(例如,SSL).使用Fl ...
- 网站服务器压力Web性能测试(1):Apache Bench:Apache自带服务器压力测试工具
一个网站或者博客到底能够承受多大的用户访问量经常是我们在用VPS或者独立服务器搭建网站了最关心的问题,还有不少人喜欢对LNMP或者LAMP进行一些优化以便提高Web性能,而优化后到底有多大的效果,就需 ...
- Apache Flink vs Apache Spark——感觉二者是互相抄袭啊 看谁的好就抄过来 Flink支持在runtime中的有环数据流,这样表示机器学习算法更有效而且更有效率
Apache Flink是什么 Flink是一款新的大数据处理引擎,目标是统一不同来源的数据处理.这个目标看起来和Spark和类似.没错,Flink也在尝试解决 Spark在解决的问题.这两套系统都在 ...
随机推荐
- 算法复习——有源汇上下界可行流(bzoj2396)
题目: Description We are supposed to make a budget proposal for this multi-site competition. The budge ...
- centos7如何查看ip信息(centos 6.5以前都可以用ifconfig 但是centos 7里面没有了,centos 7用什么查看?)
展开全部 centos7如何查看ip信息可以这样解决: 1.首先要先查看一下虚拟机的ip地址,因为ipconfig不是centos7,因此要使用 ip addr来查看. 2.查看之后你就会发现ens3 ...
- 小Z的袜子(bzoj 2038)
Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...
- Yii2之创建定时任务
yii开发的项目需要使用定时任务其实也可以使用一些单独的脚本文件来完成,但若是定时任务代码中需要使用到项目中的一些类,特别是需要使用应用对象Yii::$app的时候,单独的脚本想要完成就比较麻烦了.这 ...
- chmod u g x o 777
chmod [ugoa] [+-= ] [rwx] 文件或者是目录u:表示文件的属主,g:表文件的属组内的成员,o:则表示其它用户,a:是所有用户的(ugo的总和)+—=:是对权限的操作,+表示增加相 ...
- python3.x对python2.x变动
原文地址:http://rookiedong.iteye.com/blog/1185403 python 2.4 与 python 3.0 的比较 一. print 从语句变为函数 原: pr ...
- 常用业务返回对象类ResponseJson
目录 1.ResponseJson类 2.使用举例 1.ResponseJson类 import java.io.Serializable; public class ResponseJson imp ...
- spring boot 文件上传大小配置
在启动类中,添加bean import javax.servlet.MultipartConfigElement; import org.springframework.boot.SpringAppl ...
- ios 处理内存警告
iPhone下每个app可用的内存是被限制的,如果一个app使用的内存超过20M,则系统会向该app发送Memory Warning消息.收到此消息后,app必须正确处理,否则可能出错或者出现内存泄露 ...
- org.apache.catalina.connector.ClientAbortException: java.io.IOException: APR error:-32
org.apache.catalina.connector.ClientAbortException: java.io.IOException: APR error:-32 Most likely, ...