Гид по технологиям

Виртуальные хосты по имени в Apache и Tomcat (Railo)

• 3 min read • DevOps • Обновлено 28 Nov 2025
Виртуальный хост по имени в Apache и Tomcat
Виртуальный хост по имени в Apache и Tomcat

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
   

Скриншот файла конфигурации виртуального хоста Apache со значением DocumentRoot /srv/www/htdocs

Обратите внимание на значения ServerName и DocumentRoot — они понадобятся при правке Tomcat.

2. Настройка Tomcat внутри Railo

Перейдите в каталог установки Railo и откройте файл конфигурации Tomcat:

cd /opt/railo
vi tomcat/conf/server.xml

В файле server.xml найдите подходящее место (в примере — около строки 143) и добавьте блок Host, указывающий имя виртуального хоста и docBase равный DocumentRoot Apache:

        
             
                
        

Фрагмент server.xml Tomcat с добавленным Host для www.example.com и docBase /srv/www/htdocs

Важные проверки:

  • имя атрибута 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

Создан файл index.cfm в /srv/www/htdocs с простым cfoutput для теста

Откройте браузер и перейдите на http://www.example.com — вы должны увидеть текущее время, выводимое Railo.

Браузер с успешным результатом — страница отдала содержимое index.cfm

Другой скриншот успешного результата в браузере

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, затем перезапустить сервисы и проверить результат.

Важно: никогда не меняйте пути изображений и не добавляйте пробелы в синтаксисе изображений — пути должны оставаться точными.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро