Trac系列(5):将Tracd封装为Windows服务

在第一篇文章里提到,在使用trac站点期间不能关闭tracd运行的窗口,因为关闭了窗口,tracd就停止运行 了,Trac站点也就不能访问了。这会带来一些安全方面的问题,因为tracd要以dos窗口的方式运行,那就要求用户必须登陆操作系统,进入 windows桌面运行tracd,这样任何人都可以在这台机器上关闭tracd或做其他的事情,系统管理员肯定希望程序能以windows service的形式提供服务,这样更安全。

有两种方式可以将tracd封装成windows服务,一种是使用trac的插件TracServiceScript,另一种是使用Windows 2003 Resource Kits中的SrvAny.exe将tracd封装成windows服务。第一种,我没有试验成功,所以这里只讲第二种,这两种方式的讨论大家可以看看这篇帖子

下面介绍使用SrvAny.exe将tracd封装成windows服务,本人使用的是XP SP2,其他windows系统应该大同小异:
1.下载
Windows 2003 Resource Kits,在微软官方有下载。下载后安装,默认安装到C:\Program Files\Windows Resource Kits\Tools目录,其实我们只需要该目录下的SrvAny.exe和instsrv.exe文件即可,在此目录下还有rktools.chm帮助文件,大家可以查看SrvAny.exe如何使用。
2.创建服务,语法如下:instsrv 服务名称 srvany所在路径\srvany.exe。假设我们的
Windows 2003 Resource Kits都安装在C:\Program Files\Windows Resource Kits\Tools目录,待建立的服务名称是TracSrv,那么我们的命令如下:
"C:\Program Files\Windows Resource Kits\Tools\instsrv" TracSrv "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"
需要注意的是,srvany前的路径不能省略,必须是绝对路径。
具体如下图:

Trac系列(5):将Tracd封装为Windows服务_第1张图片

 

现在我们已经创建了一个名叫TracSrv的服务,下一步我们来配置这个服务,让它封装tracd命令。
3.在注册表中配置TracSrv服务,运行“regedit”,进入注册表。找到注册表项“HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\TracSrv”,在TracSrv项里建立新的子项“Parameters”,再在新建的 Parameters项里新建字符串值,数值名称设为“Application”,数值数据设为我们在第一篇说的启动tracd的行命令,也就是
c:\python24\python c:\python24\scripts\tracd -p 8001 C:\SCM\Angel\Angel_Trac
(注意使用全路径)。这样,我们就配置好了TracSrv服务。配置结果见下图:

Trac系列(5):将Tracd封装为Windows服务_第2张图片
4.启动TracSrv服务。 现在我们就可以在浏览器中访问Trac网站,只要服务器启动,不需要进入登陆Windows桌面,我们就可以访问Trac站点了。

 

如何删除这个服务呢?使用sc.exe即可,此命令在xp系统自带。
1.停止TracSrv服务。
2.运行cmd,进入行命令窗口,输入“sc delete TracSrv",回车即可。

以上是在使用Tracd作为Web服务器时的做法,其他的Web服务器(比如Apache)本身就已经作为服务运行,不需要进行此设置。
另外,以上讲的封装服务的方法是通用的,可以使用这种方法创建新的服务来封装你的程序。

你可能感兴趣的:(C++,c,windows,XP,C#)