Сочетание Apache, Tomcat, порт 80, 8080 и другие вещи - PullRequest
0 голосов
/ 21 января 2011

У меня есть Centos5 с запущенными httpd, mysql и tomcat6. Все хорошо. Моя цель - достичь следующего

www.domain.com >>> переадресация / прокси на www.domain.com:8080/myapplication (обслуживается tomcat) www.domain.com/phpmyadmin >>> www.domain.com/phpmyadmin (обслуживается Apache от htdocs) www.domain.com/* >>> также serverd из папки htdocs как «обычный» контент Apache

Как мне этого добиться? Есть идеи?

THX

Ответы [ 2 ]

1 голос
/ 22 января 2011

Похоже, что ваше единственное отклонение от apache, обслуживающего htdocs, это отправка чего-либо на tomcat, который запускает сервлет "myappplication".В этом случае

  1. Определить работника (некоторая текстовая строка, назовем ее «myworker»).
  2. В конце файла /etc/apache2/apache2.conf добавьтестроки

- игнорировать эту строку в сообщении -

# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
JkWorkersFile /etc/apache2/workers.properties

# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
JkLogFile /var/log/apache2/mod_jk.log

# Set the jk log level [debug/error/info]
JkLogLevel info

# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"


             JkMount /myapplication/* myworker
  1. В этом каталоге создайте файл "worker.properties", которыйсодержит следующее:

    worker.myworker.type=ajp13
    worker.myworker.host=localhost
    worker.myworker.port=8081
    worker.myworker.cachesize=10
    worker.myworker.cache_timeout=600
    worker.myworker.socket_keepalive=1
    worker.myworker.socket_timeout=300
    
  2. Отредактируйте строку tomcat_inst_dir / conf / server.xml, чтобы поместить ее в строку

    [Connector port = "8081" protocol = "AJP / 1,3 "/]

Примечание: замените квадратные скобки на угловые.Вышеуказанная строка идет внутри тегов [service] ... [/ Service] и из тегов [Engine] ... [/ Engine], помещается прямо над строкой [Engine].

  1. Перезапустите apache и tomcat

Теперь любой запрос к "http://www.domain.com/myapplication/servletName[?par=value...]" перенаправляется с помощью apache (на порт 80) на tomcat (на порт 8081) и на сервлет myapplication. Я предполагаю, что у вас естькаталог "tomcat_home / webapps / myapplication", который, в свою очередь, содержит каталог WEB-INF с файлом "web.xml". "servletName" выше - это то, что вы определяете между [servlet-name] ... [/теги servlet-name] в этом файле.

Я выбрал номер 8081 (не стесняйтесь выбирать номер порта, если он не конфликтует с другими стандартными службами), так что порт 8080 все еще активен для тестирования"http://www.domain.com:8080/myapplication/servletName" (должен выдавать тот же вывод на портах 8080 и 80, порт apache).

ВАЖНО: Сохраняйте резервную копию всех файлов, измененных в вышеуказанном процессе, чтобы вы могли вернуться к своей работеСистема, если вышеперечисленное не работает.Мне пришлось пройти через бесчисленные итерации вышеописанного, чтобы заставить его работать!

Удачи, и надеюсь, что это сработает для вас, - MS

PS.Извините за форматирование - я не могу получить это лучше

0 голосов
/ 21 января 2011

Перенаправьте ваш индексный файл на www.domain.com на www.domain.com:8080/myapplication. Пример index.php:

<?php

  header("Location: http://www.domain.com:8080/myapplication");

?>

Не самый чистый или самый элегантный способ, но он работает. Элегантный подход - использовать vhosts в apache.

...