IntraWeb 程序写完后,如何发布?(60分)

  • 主题发起人 主题发起人 Luckygyt
  • 开始时间 开始时间
L

Luckygyt

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟第一次用IntraWeb,程序完成后,也和Asp程序一样放在站点目录下,
然后在IE下调用,但还是出现象调试一样时的IntraWeb Server 界面。
请问各位大侠,IntraWeb程序如何发布?
 
下面文字摘自《delphi7下intraweb应用开发详解》

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.
就这样简单。我想反过来你也会,不作重复。

关于CGI
CGI程序的速度是一个问题,有些人认为CGI技术有些落后了,将要被淘汰。我对此不发表看法,我关心的一般都是很实际的问题。
很多人希望有自己的一个站点,这不算是奢侈的事,申请一个“虚拟主机”每年不到2000元,有的还免费给域名。假设这些你都有了,那么你肯定打算用IntraWeb开发一个漂亮Web应用放在上面。但是很可惜,国内的虚拟主机服务一般都不支持ISAPI,因为对他们来说太危险。但是他们多数都支持CGI。还好,PageMode开发方式使得你能借助WebSnap或者WebBroker来很容易的开发CGI程序。
 
不会贴图![:(]
 
可是为什么Guess改成ISAPI后不能Http://127.0.0.1/guess.dll来执行,必须用Http://127.0.0.1/guess.dll/Start来执行????
 
[:)][:D]
to yeskert1:
图2-19 通过命令行运行IntaWeb应用
你可以双击你的程序来运行它,也可以通过上图的方式来运行它。上图的好处在于能
够指定一些参数。关于参数我们在第一个例子结束的时候已经介绍了两个。这次你又
发现一个。这个参数干什么用的?原来IntraWeb的exe运行的时候总试图将自己作为
Windows的服务(当然这是在Windows NT/Windows2000/Windows XP下,参考下一节
Service Mode),如果你不是超级管理员,你肯定失败,此时必须告诉程序:“不要
试图将自己作为Windows的服务”,这个参数noservice就起这个作用,它的存在是因
为程序试图将自己作为Windows的服务。
这一段还不是很明白,Service Mode 如何设定?
我的系统window2000 server ,我也生成并启动了服务,但还是访问不了,可能是server mode 没有设置好,还请指教哦!
 
to apple117:
让ServerController.startcmd为空。

to Luckygyt:
 
后退
顶部