现有 Apache PHP 服务器上的 Railo-Tomcat

现有 Apache PHP 服务器上的 Railo-Tomcat

我需要在现有的 PHP 服务器 (Linux) 上运行 ColdFusion 应用程序。我在服务器上安装了 railo 和 tomcat,但 Railo 占用了所有流量。我希望这样安装它,以便只有对 /webapps/ROOT/ 内文件的请求通过 Railo 服务器,而所有其他请求都通过现有的 php 服务器。该服务器不是我自己的,而且我安装的 Railo 破坏了其他用户的网站。

有什么办法可以做到这一点吗?

附言:我对 Linux 不是很精通,而且拥有 Linux 的公司提供的支持也非常差,所以与他们交谈就是进两步退两步。

答案1

您需要安装mod_jkmod_proxy将请求从 Apache 转发到 Tomcat。

下面是一个例子mod_jk

  1. 安装 Tomcat
  2. 下载 *。战争 文件放入webapps文件夹并重命名为railo.war
  3. 安装mod_jk
  4. 创建/编辑文件workers.properties如下:

    worker.list=worker1
    
    worker.worker1.type=ajp13
    worker.worker1.host=127.0.0.1
    worker.worker1.port=8009
    
  5. 创建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>
    
  6. 为 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>

相关内容