我需要在现有的 PHP 服务器 (Linux) 上运行 ColdFusion 应用程序。我在服务器上安装了 railo 和 tomcat,但 Railo 占用了所有流量。我希望这样安装它,以便只有对 /webapps/ROOT/ 内文件的请求通过 Railo 服务器,而所有其他请求都通过现有的 php 服务器。该服务器不是我自己的,而且我安装的 Railo 破坏了其他用户的网站。
有什么办法可以做到这一点吗?
附言:我对 Linux 不是很精通,而且拥有 Linux 的公司提供的支持也非常差,所以与他们交谈就是进两步退两步。
答案1
您需要安装mod_jk
或mod_proxy
将请求从 Apache 转发到 Tomcat。
下面是一个例子mod_jk
。
- 安装 Tomcat
- 下载
*。战争
文件放入
webapps
文件夹并重命名为railo.war
。 - 安装
mod_jk
创建/编辑文件
workers.properties
如下:worker.list=worker1 worker.worker1.type=ajp13 worker.worker1.host=127.0.0.1 worker.worker1.port=8009
创建
mod_jk.conf
文件:LoadModule jk_module modules/mod_jk.so JkWorkersFile /etc/httpd/conf/workers.properties JkShmFile /var/log/httpd/jk.shm JkLogFile /var/log/httpd/mod_jk.log JkLogLevel info JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " <VirtualHost *:80> ServerName your.domain.com JkMount /railo/* worker1 </VirtualHost>
为 Tomcat 添加虚拟主机:
<Host name="your.domain.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="/railo" docBase="railo"/> </Host>
这意味着请求http://your.domain.com/railo将转发到 Tomcat,同时railo
上下文和其他请求仍由 Apache 提供服务。
答案2
Mod Proxy 示例(感谢 Jamie Krug 对此进行了简化):
httpd配置文件
<Proxy *>
Allow from 127.0.0.1
</Proxy>
ProxyPreserveHost On
ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://localhost:8009/$1$2
<VirtualHost *:80>
ServerName testhost1
DocumentRoot "/path/to/testhost1"
DirectoryIndex index.html index.cfm
ErrorLog "logs/testhost1-error.log"
CustomLog "logs/testhost1-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerName testhost2
DocumentRoot "/path/to/testhost2"
DirectoryIndex index.html index.cfm
ErrorLog "logs/testhost2-error.log"
CustomLog "logs/testhost2-access.log" common
</VirtualHost>
server.xml(Tomcat)
确保这些定义在 LOCALHOST 的定义之上
<Host name="testhost1" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/path/to/testhost1" />
</Host>
<Host name="testhost2" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/path/to/testhost2" />
</Host>