ColdFusion 11独立内部Web服务器多个网站

时间:2014-12-03 19:11:55

标签: tomcat coldfusion coldfusion-11

(我没有从Adobe ColdFusion安装技术帮助或Adobe ColdFusion论坛获得任何反馈。我希望我没有正确地询问,并且不是没有人知道答案)。

我们正在从CF9升级到CF11,因此我已经将CF11安装为独立的内部Web服务器。由于我们没有使用像IIS这样的外部网络服务器,我们有4个不同的网站需要配置,为了不将所有(或至少某些)网页代码更改为指向不同的级别并且可以找到它,我必须使用虚拟目录[即我复制了所有CF9代码(4个不同的网站),只是将_CF11添加到主网站文件夹名称的末尾,即website1_CF11,并为这些网站创建了一个别名,即别名=“/ alias1 = E:\ website1_CF11等......”]

可以创建多个VD吗?他们是如何定义的?一个VD定义为

<Context
            path="/" 
            docBase="C:\ColdFusion10\cfusion\wwwroot" 
            WorkDir="C:\ColdFusion10\cfusion\runtime\conf\Catalina\localhost\tmp"
            aliases="/VD=C:\newwebroot\VD">
</Context>

我如何创建多个?这是我需要做些什么来实现我的目标,让我的网页看到正确的目录结构?

我的server.xml目前有以下内容:

<Context
                Path=”/”
                docBase=”D:\ColdFusion11/cfusion/wwwroot”
                WorkDir=”D:\ColdFusion11/cfusion/runtime/conf/Catalina/localhost/tmp”
                Aliases=”/CFIDE=D:\ColdFusion11\cfusion\wwroot\CFIDE,
                                /WEB-INF=D:\ColdFusion11\cfusion\wwwroot\WEB-INF,
                                /website1=E:\website1,
                                /website2=E:\website2,
                                /website3=E:\website3,
                                /website4=E:\website4”>
</Context>

我可以把

/VD=E:\website1,

进入上面的代码和CF管理工作,但我想我对虚拟目录应该做什么有点模糊。我认为它本质上是网址或主机名的IP地址的别名。

但我是否正确理解它只是允许网站指向不在wwwroot路径中的不同文件夹位置?我想要的是每个网站我必须能够指向该网站的根文件夹。我想为每个网站提供以下内容,以便代码正常运行:

For website1:       http://localhost:8500/index.html
For website2:       http://localhost:8501/index.html
For website3:       http://localhost:8502/index.html
For website4:       http://localhost:8503/index.html

现在别名不起作用,因为改变所有代码只是为了找到所有网页以便我们可以测试功能并修复中断,这将是毫无意义和耗时的。例如,我目前需要将代码更改为以下内容:

<cf_location url=”#URLSessionFormat(‘/webpage/’)#” addtoken=”false”>

<cf_location url=”#URLSessionFormat(‘/alias1/webpage/’)#” addtoken=”false”>

我们最终将运行wsconfig可执行文件以连接到IIS,因此我们可以完全从CF9迁移到CF11。我错过了什么?我无法想象Adobe内部Web服务器的功能与外部Web服务器不同。我们没有足够的资源将CF9,CF11和IIS放在一台单独的机器上来测试直接迁移,而无需并排安装CF11。

2 个答案:

答案 0 :(得分:2)

内部Web服务器仅适用于dev,并且功能不全。如果你想要一个功能齐全的网络服务器......请使用一个!如果你不想搞砸IIS,只需安装Apache。

也就是说,您可以通过简单地运行多个CF实例来解决您的问题,每个实例都有自己的内部Web服务器。

答案 1 :(得分:0)

我不确定这对你有帮助,但我有同样的问题。我厌倦了对我的开发环境和实时服务器有不同的要求,我不知道你上面提到的问题有哪些选择。我没有在server.xml的选项中挖掘并找到解决方案,而是为每个开发站点创建了一个不同的server.xml,其根文件夹指向相应的站点。所以website1有一个website1.xml,website2使用了website2.xml,每个不同的.xml文件指向它对应的webroot。

获得所有xml文件后,我创建了一个批处理文件,该文件将接受服务器名称,删除server.xml,将websiteN.xml复制到server.xml,然后重新启动CF应用程序服务器。然后我用它的名字为每个站点创建了一个快捷方式,所以当我需要在website1上工作时,我点击website1,它会为该网站启动我的CF服务器。我将主机文件更新为指向www.website1.com的127.0.0.1,并将开发端口更改为80(我不确定是否适用于CF11)。这为我创造了一个几乎完全的开发环境,这就是我所追求的。

这是批处理文件代码:

ECHO OFF

cd c:\ColdFusion10\cfusion\runtime\conf\
DEL server.xml
COPY %1%.xml server.xml

net stop "ColdFusion 10 Application Server"
net start "ColdFusion 10 Application Server"

快捷方式都指向同一个批处理文件,只需传入相应的网站名称,该名称对应于复制的[website] .xml文件。因此,快捷方式的目标是:C:\ path \ to \ batch \ cfserver.bat website1

只要你不是经常在常规开发职责中来回切换,这应该可以解决问题。如果我每天必须更换服务器10x,这真的很烦人,但因为对我来说通常最多只有2或3,所以这解决了你为我描述的问题。