2012-05-22 5 views
35

В настоящее время я запускаю одиночный tomcat с одним приложением WAR на порт 80. Доменное имя www.foo.org указано на этом сервере ip.Tomcat и несколько доменов/приложений

Какова процедура добавления www.bar.org домен для другого клиента на порту 80?

Спасибо

ответ

44

С самого начала у вас есть один "Host" запись в вашем конф/server.xml для localhost

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
       prefix="localhost_access_log." suffix=".txt" 
       pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
</Host> 

Теперь вы можете добавить еще "Host" записей, например

<Host name="anotherclient.com" appBase="anotherclient" unpackWARs="true" autoDeploy="true"> 

     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
      prefix="anotherclient_access_log." suffix=".txt" 
      pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
    </Host> 

где name="anotherclient.com" - это домен нового клиента, а appBase="anotherclient" - это имя его корневого каталога веб-приложения (где вы развертываете свою войну); это относительно домашнего каталога tomcat.

Изменения будут приниматься после перезапуска tomcat.

запросы, идущие любые другие домены (не указанных в server.xml), но указывающие на IP-адрес вашего сервера будет передано приложение по умолчанию, он указан в Engine элемент

<Engine name="Catalina" defaultHost="localhost"> 
+5

Означает ли это, что войны находятся в '/ opt/tomcat/webapps/ROOT.war' для исходного сайта foo.org, а затем'/opt/tomcat/anotherclient/ROOT.war' для нового сайта bar.org ? – CodeMed

+1

@CodeMed Да, это правильно. Я просто попробовал это сам, и, похоже, это похоже на работу. –

+1

мы должны создать этот каталог anotherclient ourself или создадим после перезагрузки tomcat7 – dollar

3

Обычно у вас есть кот (или другой сервер приложений) на порт, отличный от 80 (например, 8080 или 7001, или все, что вы хотите). После этого вы поместите веб-сервер (например, apache http server) на порт 80 и настройте один или несколько соединителей, чтобы указать на другой порт на другом сервере приложений с другим адресом.

Для Apache HTTP + кот вы посмотрите на эту ссылку можно:

http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

+2

Там нет особых причин добавьте другой продукт в среду OP: эту проблему можно решить, используя только Tomcat. –

+1

Это просто лучшая практика в профессиональной среде, где есть веб-сервер и сервер приложений. – Guaido79

+3

Malarkey: Tomcat - вполне приемлемый веб-сервер. Вызов чего-то «лучшей практики» не делает его лучшей практикой. Это обычная практика, но, конечно, не «лучшая» практика. –

5

В конфигурации по умолчанию, Tomcat принимает запросы на любое имя хоста и отправляет их все на «локальный» < хост > определенный в conf/server.xml. Если вы этого не изменили, то все, что вам нужно сделать, это убедиться, что у вас есть записи DNS, настроенные для обоих имен хостов, чтобы указать на ваш сервер.

Если вы хотите иметь другой набор webapps для каждого имени хоста, вам необходимо определить второй <Host> в conf/server.xml и использовать для него соответствующее имя хоста. (Обратите внимание, что вам всегда нужно иметь хост «по умолчанию», куда идут все запросы, которые не соответствуют ни одному из явно определенных хостов).

Вы можете прочитать документацию для < хоста > здесь: http://tomcat.apache.org/tomcat-7.0-doc/config/host.html (Это для Tomcat 7.0.x. Вы не упомянули свою версию, так что я дал вам ссылку на документацию последней версии в).

+0

Спасибо - его версия 7, а как насчет файлов WAR? каждому клиенту требуется различное развертывание? – user648026

+1

@ user648026 Каждый получает свою собственную базу приложений, поэтому вы можете поместить свои файлы WAR в одну или обе из них. Выбрав один из них, вы получите доступ к этому файлу WAR только с использованием имени хоста , в то же время помещая файл WAR в оба способа, что у вас будет две копии веб-приложения, работающие одновременно в одном контейнере: один для одного хоста, а другой для другого , –

+0

Таким образом, одиночный tomcat, работающий на порту 80, может обрабатывать несколько хостов на одном и том же порту (80) с помощью одной WAR, используя несколько конфигураций «хостов». – user648026

Смежные вопросы