Виртуальные хосты по имени в Apache и Tomcat (Railo)
TL;DR
Коротко: настроьте name-based виртуальный хост в Apache, затем измените конфигурацию Tomcat (server.xml) в каталоге Railo так, чтобы Host с именем виртуального хоста указывал на тот же DocumentRoot. Перезапустите Railo и Apache и проверьте индекс.cfm.
Введение
Этот документ описывает шаги для запуска name-based виртуального хоста (например, www.example.com) под Apache с обработкой запросов приложением на Tomcat (Railo). Кратко: Apache обслуживает хост, а Tomcat должен «видеть» тот же DocumentRoot, чтобы обработка CFM-файлов работала корректно.
Требования
- Apache2 с поддержкой name-based виртуальных хостов
- Установленный Railo (Tomcat) в /opt/railo
- Права root или sudo для редактирования конфигурации и перезапуска служб
1. Пример конфигурации виртуального хоста Apache
Файл виртуального хоста находится, например, в /etc/apache2/vhosts.d/internal.conf:
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs
ServerName www.example.com
FileETag INode Size
ErrorLog /srv/www/htdocs/www.example.com-error_log
CustomLog /srv/www/htdocs/www.example.com-access_log combined

Обратите внимание на значения ServerName и DocumentRoot — они понадобятся при правке Tomcat.
2. Настройка Tomcat внутри Railo
Перейдите в каталог установки Railo и откройте файл конфигурации Tomcat:
cd /opt/railovi tomcat/conf/server.xmlВ файле server.xml найдите подходящее место (в примере — около строки 143) и добавьте блок Host, указывающий имя виртуального хоста и docBase равный DocumentRoot Apache:

Важные проверки:
- имя атрибута name в Host должно точно соответствовать ServerName в конфигурации Apache.
- docBase в Context должен указывать на тот же каталог, что и DocumentRoot в Apache.
3. Перезапуск и тестирование
Перезапустите Railo и Apache, чтобы применить изменения:
/opt/railo/railo_ctl restart(или используйте systemctl / service, если предпочитаете)
Затем создайте простой CFM-файл для проверки:
echo "#now()# " > /srv/www/htdocs/index.cfm
Откройте браузер и перейдите на http://www.example.com — вы должны увидеть текущее время, выводимое Railo.


Bingo, всё работает.
Частые проблемы и способы устранения
- Логи: проверяйте /srv/www/htdocs/-error_log, /srv/www/htdocs/-access_log, а также tomcat/logs/catalina.out для ошибок при деплое Context.
- Права: убедитесь, что пользователь, под которым работает Tomcat, имеет доступ к /srv/www/htdocs.
- SELinux/AppArmor: если включены, проверьте ограничения и контексты безопасности — они могут блокировать доступ Tomcat к файловой системе.
- Несовпадение имён: ServerName в Apache и name в Host должны быть одинаковы.
- Конфликты портов/проксирования: если вы используете mod_proxy или AJP, убедитесь, что запросы корректно проксируются в Tomcat или что Tomcat обслуживает статические/динамические ресурсы как ожидается.
Альтернативные подходы
- Использовать модуль mod_jk или mod_proxy_ajp для проксирования запросов Apache в отдельный Tomcat, сохраняя webapps Tomcat отдельно.
- Настроить Apache как обратный прокси (mod_proxy) к отдельному контексту Tomcat, если требуется явное разделение статического контента и приложения.
- Разделить DocumentRoot и приложение: держать статические файлы в Apache, а динамику обрабатывать в отдельном приложении Tomcat/CFML на другом контексте.
Контрольный чек-лист (для администратора)
- Файл /etc/apache2/vhosts.d/internal.conf содержит корректный ServerName и DocumentRoot.
- В /opt/railo/tomcat/conf/server.xml добавлен Host с name == ServerName и Context docBase == DocumentRoot.
- Пользователь Tomcat имеет права на DocumentRoot.
- Перезапущены Railo и Apache.
- index.cfm отображает ожидаемый вывод в браузере.
Критерии приёмки
- При обращении по http://
/ index.cfm должен возвращать корректный вывод Railo. - В логах отсутствуют ошибки доступа или деплоя Context.
- Права и SELinux не блокируют доступ.
Короткое резюме
Настройка name-based виртуального хоста для совместной работы Apache и Tomcat (Railo) сводится к двум шагам: синхронизировать ServerName/DocumentRoot в Apache и Host/Context (docBase) в server.xml Tomcat, затем перезапустить сервисы и проверить результат.
Важно: никогда не меняйте пути изображений и не добавляйте пробелы в синтаксисе изображений — пути должны оставаться точными.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента