设为首页 收藏本站
查看: 1311|回复: 0

[经验分享] 基于Delphi7 WebService 在Apache发布及Apache使用说明

[复制链接]

尚未签到

发表于 2017-12-24 11:36:50 | 显示全部楼层 |阅读模式
  基于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 >
  SetHandlerEcTomRegister-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 目录下
  &Oslash;  Httpd –k install            //{ 安装一个服务}
  &Oslash;  Httpd -k install -n " 服务名" //{ 安装一个带服务名的服务}
  &Oslash;  apache -k uninstall          //{ 卸载一个服务}
  &Oslash;  apache -k uninstall -n " 服务名" //{ 卸载一个带服务名的服务 }
  &Oslash;  httpd –k stop   或 httpd –k shutdown  //{ 停止命令}
  &Oslash;  httpd  –k start    //{ 启动命令}
  &Oslash;  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
  Listen 192.170.2.5:8000
  这样就使得 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
  KeepAliveTimeout 15
  这样就能限制每个 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>
  Options ExecCGI
  SetHandler cgi-script
  </Directory>
  14 、如何调整 Apache 的最大进程数
  Apache 允许为请求开的最大进程数是 256,MaxClients 的限制是 256. 如果用户多了,用户就只能看到Waiting for reply.... 然后等到下一个可用进程的出现。这个最大数,是 Apache 的程序决定的 -- 它的 NT 版可以有1024 ,但 Unix 版只有 256 ,你可以在 src/include/httpd.h 中看到:
  #ifndef HARD_SERVER_LIMIT
  #ifdef WIN32
  #define HARD_SERVER_LIMIT 1024
  #else
  #define HARD_SERVER_LIMIT 256
  #endif
  #endif
  你可以把它调到 1024 ,然后再编译你的系统。
  15 、如何屏蔽来自某个 Internet 地址的用户访问 Apache 服务器
  可以使用 deny 和 allow 来限制访问,比如要禁止 202.202.202.xx 网络的用户访问:
  <Directory /www/htdocs>
  order deny,allow
  deny from 202.202.202.0/24
  </Directory>
  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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-427482-1-1.html 上篇帖子: RewriteMap(apache) 下篇帖子: Apache htaccess 中的RewriteCond 规则介绍 (转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表