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