Railo-Tomcat на существующем PHP-сервере Apache

Мне нужно запустить приложения ColdFusion на моем существующем сервере PHP (Linux). Я установил на сервере railo с tomcat, но Railo загружает весь трафик. Я хочу, чтобы он был установлен таким образом, чтобы только запросы к файлам в /webapps/ROOT/ проходили через сервер Railo, а все остальные через существующий сервер php. Сервер не мой, и моя установка Railo ломает сайты других пользователей.

Есть ли способ, которым я могу сделать это?

PS: я не очень хорошо разбираюсь в Linux, и у компании, которой он принадлежит, есть полная поддержка, поэтому общение с ними - это шаг вперед и два назад.

2 ответа

Решение

Вам необходимо установить mod_jk или же mod_proxy пересылать запросы от Apache к Tomcat.

Вот пример с mod_jk,

  1. Установить Tomcat
  2. Загрузите файл *.war в 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.

Пример Mod Proxy (спасибо Джейми Кругу за упрощение):

httpd.conf

<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>
Другие вопросы по тегам