intraweb的发布(50分)

  • 主题发起人 主题发起人 herui
  • 开始时间 开始时间
H

herui

Unregistered / Unconfirmed
GUEST, unregistred user!
yeskert1朋友,你好,又要向你请教了。是这样的,我用intraweb+mysql做了一个系统,已编制成了可执行程序,在本机上可以运行,但在局域网内其他的计算机里输入http://本机ip:端口号不能访问。请问如何发布呢?
 
你这样用exe发布也可以。可能因为他们不能访问你IP,或者你的那个端口吧。

关于发布的资料如下:
2.5.7 IntraWeb应用的发布

在发布之前,请到IWServerController窗口上来,请务必为它的Port属性设置一个值,如图2-18:

图2-18 为IWServerController的Port指定一个值
Port最好是80,但一般80可能已经被占用,那么选别的也没有关系。然后编译,准备发布。当开发到了这一步,离庆贺就不远了。

IntraWeb应用可以当作window服务/linux后台程序、一个独立的exe、ISAPI、Apache DSO发布。用page方式开发的IntraWeb还可以以其他的方式发布。

独立运行
用Delphi编写一个IntraWeb应用,一般是使用stand alone模式以便于调试。此时编译的结果是一个exe文件。实际上它就是最简单的发布形式。你只要运行这个程序就行了,外部就可以访问我们的程序了(参阅“访问我们的程序”)。如图2-19:

图2-19 通过命令行运行IntaWeb应用
你可以双击你的程序来运行它,也可以通过上图的方式来运行它。上图的好处在于能够指定一些参数。关于参数我们在第一个例子结束的时候已经介绍了两个。这次你又发现一个。这个参数干什么用的?原来IntraWeb的exe运行的时候总试图将自己作为Windows的服务(当然这是在Windows NT/Windows2000/Windows XP下,参考下一节Service Mode),如果你不是超级管理员,你肯定失败,此时必须告诉程序:“不要试图将自己作为Windows的服务”,这个参数noservice就起这个作用,它的存在是因为程序试图将自己作为Windows的服务。
Service Mode
以服务形式运行程序的好处是:你不需要为了启动该程序而跑过去登陆那个机器了;不好之处是:没有调试信息窗口了。
让程序以服务方式运行,你需要做几个步骤。
首先,你必须将程序安装成服务程序:在Windows的命令行下,改变目录到你的应用所在的目录,然后敲如下命令:
Application_name –install
如:E:/workshop/test_d7/test1/IWProject.exe -install
这样你就安装了你的程序,并且它会出现在服务面扳里。

图2-20 将IntraWeb应用作为一个服务
在图2-20中它的“名称”实际是你的应用中的IWServerController的Description的值,默认都是“My IntraWeb Application”,如果有两应用的Description相同,而且都以Service方式运行就有问题。右键点击,然后点“属性”,设置它的启动类型为自动,这样,每次系统启动的时候它也自动启动了。如图2-21:

图2-21 让服务自动启动
图2-21中“登陆”一页中的“允许服务与桌面交互”不要选中,那样会降低效率。
与安装相似,如果需要卸载,那么首先停止该服务,然后敲入:
Application_name –uninstall
即可。
最后请注意:只有Windows NT,Windows 2000,Windows XP支持“服务”,Windows 95,Windows 98和Windows ME都不支持“服务”。
ISAPI
如果你已经将程序编译成ISAPI dll了,那么只要将dll拷贝到虚拟目录下即可(参阅“访问我们的程序”)。
App Mode开发的Stand Alone Application与ISAPI Application可以相互转换。


ISAPI App与Stand Alone App的转换
假设有一个Stand Alone App,如何将它变成ISAPI App呢?以Guess那个例子来说明。
Guess的工程文件的内容如下:
program Guess;

uses
IWInitStandAlone, Main in 'Main.pas' {formMain: TIWFormModuleBase},
ServerController in 'ServerController.pas' {IWServerController: TDataModule};

{$R *.res}

begin
IWRun(TFormMain, TIWServerController);
end.
将它转换成ISAPIApp只要做两件事:
1 将关键字 program改成关键字library;
2 将uses里的IWInitStandAlone改成IWInitISAPI。
结果这样:

library Guess;

uses
IWInitISAPI, Main in 'Main.pas' {formMain: TIWFormModuleBase},
ServerController in 'ServerController.pas' {IWServerController: TDataModule};

{$R *.res}

begin
IWRun(TFormMain, TIWServerController);
end.
就这样简单。我想反过来你也会,不作重复。



--摘自《delphi7下Intraweb开发详解》
 
to yeskert1,我是按照你你上面说的方法作的,但还是不行。你上面有提到如图2-19,但看不到图片,不知我在哪里是否设置有误,能否说详细点吗?
 
配置IIS文件
肯定可以的
 
to zhaozhijun朋友,如果用iis,那就得编译成dll文件了,我这样试过也不行。另外说明一下,以前我配置iis后,将自已制作的一个网站拖到里面去,在局域网里其他的算机能访问,现在单位里对我们科室增加了一个网关,通过网上邻居只能访问本科室的计算机,不能访问其他科室的计算机。现在不明白的是配置好iis后在本科室也不能访问自已的网站了。是不是与单位里增加网关有关?敬请指教,谢谢。
 
to yeskert1朋友,因有事好久没来了,我和程序已编译成独立运行程序,在其他的计算机里输入服务器及端口号可以正常访问,现在的问题一是其他的计算机访问时不能显示背景图片,二是每次都要在服务哭器里运行该程序后其他计算机才访问,有没有办法使服务器端在电脑启动时自动在后台运行服务器程序?只有再一次请求你的帮助了,谢谢!
 
>>一是其他的计算机访问时不能显示背景图片
路径不对,某些版本必须在Files目录下,或者设置是否允许子目录

>>二是每次都要在服务哭器里运行该程序后其他计算机才访问
IntraWeb应用作为一个服务安装就可以了 或者直接把你的exe放到启动或注册表run里面
 
我直接把文件复制到服务器上运行,就可以了! 注意防火墙的设置。
 
可以把IW的编译成Apache模块,用Apache发布,稳定。[8D]
不知道yeskert1书中可曾提到?
 
后退
顶部