Назад | Перейти на главную страницу

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

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

Есть ли способ сделать это?

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

Вам необходимо установить 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>