Месяц: Апрель 2011

  • Apache HTTPD, mod_jk, Apache Tomcat, Linux

    1. Начало.

    Если Вы ставите Tomcat как-то так: (от рута) aptitude install tomcat6 tomcat6-admin tomcat6-examples,
    то прежде чем двигаться дальше, вам возможно стоит обратить внимание на настройки URIEncoding в server.xml.

      
      
    

    Здесь и далее: Томкат => Apache Tomcat, Апач => Apache HTTPD.

    2. Вяжем.

    Классическая схема работы Томката (Apache Tomcat) в продакшене, это связка его с Apache (Apache HTTP Server) через mod_jk. Так делают уже много-много лет и это проверенное на практики и рекомендованное многими решение.
    Связка делается через протокол AJP (Apache JServ Protocol). Это специальный бинарный протокол для прокидки запросов от web-сервера в глубину к другим серверам (например Tomcat-у).

    Зачем такое нужно?
    1. Снижаем нагрузку с томката. Статику (картинки, html-ки и т.д.) пусть лучше отдает апач, а запросы к сервлетами и jsp-кам прокидываются томкату.

    2. Возможна балансировка нагрузки. Например один апач – несколько томкатов.

    Кстати, можно связывать апач не только с томкатом, а например с Jetty (через mod_proxy), и наоборот томкат прикручивать например к nginix. Мы здесь такие варианты не будем рассматривать.

    Итак, допустим у вас убунта с апачем и томкатом. На других линуксовых дистрибутивах аналогично.
    Ставим mod_jk: (от рута) aptitude install libapache2-mod-jk или скачаем и ставим отсюда : http://tomcat.apache.org/download-connectors.cgi

    Из общего правила структуры линуксовой файловой структуры мы знаем, что настройки должны находиться в папке /etc/.
    Легко видеть, что:
    – настройки томката будут в папке /etc/tomcat6
    – настройки mod_jk в /etc/libapache2-mod-jk
    – настройки апача в /etc/apache2

    Внимание! Дальше приводится упрощенная схема для работы в лабораторных условиях.
    На реальных серверах ввод в эксплуатацию без тщательного изучения документации по mod_jk, веб-серверу и томкату крайне опасен!
    Нужно обратить особое внимание на настройки безопасности.

    Теперь приступим. Начнем от фронта.
    В настройках сайта (например: /etc/apache2/sites-available/default) указываем какие запросы куда перенаправлять и кто должен делать обработку таких запросов.
    Например:

     
    ... 
        JkAutoAlias /usr/share/tomcat6-examples/
        JkMount /examples/* ajp13_worker
    
    

    ajp13_worker – название “ажп-работника”, он задается в файле workers.properties (в Убунте: /etc/libapache2-mod-jk/workers.properties):

      # список работников...
      worker.list=ajp13_worker
    

    Также в этом же файле нужно проверить другие параметры (порты, директории и т.д.).
    Если нужна балансировка загрузки, там уже есть заготовка для раунд-робина.

    Где находится файл workers.properties прописано в настройках mod_jk (в /etc/apache2/mods-available файл jk.load)
    Например, что-то типа этого:

    LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
    
    JkWorkersFile /etc/libapache2-mod-jk/workers.properties
    
    JkLogFile     /var/log/apache2/mod_jk.log
    JkLogLevel    info
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
    JkRequestLogFormat     "%w %V %T"
    
    JkOptions +ForwardURICompatUnparsed
    

    На что обратить внимание!
    Параметр JkWorkersFile указывает именно на правильный workers.properties
    Параметр JkOptions имеет значение “+ForwardURICompatUnparsed”, это нужно для нормальной обработки кодировок.

    Значение других параметров следует посмотреть в документации.

    Далее в настройках томката (/etc/tomcat6/server.xml) нужно проверить,
    что НЕ ЗАКОММЕНТИРОВАН AJP Connector (port 8009, URIEncoding=”UTF-8″):

    
     
       
    
    

    Общая схема конфигурационных файлов выглядит так:

    Не смотря на то, что в документации все хорошо описано, и есть такие полезные параметры как “JkAutoAlias”, которые сильно упрощают жизнь.
    Рекомендую, после того как завершите настройку тщательно проверить надежность и безопасность вашей конфигурации.

    По-крайне мере нужно проверить правильно ли будут работать ваши security-constraint и различные фильтры.
    Также проверить ограничение доступа к служебным ресурсам, работу в разных режимах (отключен томкат, реальные запросы из внешней сети и т.д.).

  • Java one, Day #2

    Java One, День Второй. Москва.

    По просьбе друзей выкладываю фотографии с конференции Java One. Фотки не мои, так что вопросы где взять исходные фотографии не ко мне.

    Как я туда попал. Вначале идти не очень хотелось – дел по работе выше крыши. Но поскольку Java One мероприятия последнее время проводились в Питере, то я их постоянно пропускал, в итоге стало уж больно любопытно посмотреть что изменилось… Плюс  товарищ со старой работы сказал, что тоже пойдет, в общем в итоге любопытство взяло вверх.

    Что изменилось?

    На первое что обратил внимание – платный вход. Тарифы были такие:
    Super Saver с 24 февраля по 20 марта, 2011: 500 руб
    Early Bird с 21 марта по 31 марта, 2011 : 1000 руб
    с 1 апреля по 11 апреля, 2011: 1500 руб
    (правда для студентов потом открыли бесплатную регистрацию, но я уже давно не студент )

    Само объявление о Java One увидел в твиттере, тогда еще был тариф Super Saver, так что прошел по минимальному прайсу. Правда с системой оплаты были какие-то глючки, но в итоге я свой билет получил.
    Конференция проходила в здании Академии Наук, м. Ленинский проспект. Такое интересное здание с часиками.

    По ходу были расставлены указатели куда идти.

    На входе дежурили полицейские и проверяли сумки, рюкзаки. На редкость не хамоватые, наверно влияет аура здания Академии Наук.

    Там же рядом сидела девушка с красным платочком на шее, помогала ориентироваться куда двигаться дальше.

    Т.к. я пришел позже открытия, то к гардеробу очереди уже не было.

    По коридорам ходил Duke. Довольно помятый и запачканный, видать в последнее время жизнь у него была не простая.

    человек-дюк

    Главный зал конференции конечно смотрелся мощно:

    На входе стояли девушки в фирменной одежде и сканировали бейджики. Устройство для сканирования смутно видно внизу на фото:

    Когда начался перерыв на кофе всю еду смели моментом. Вода в термосах закончилась почти сразу.

    Еще можно было сходить на мастер классы. Тоже записывала девушка с красным платочком.

    В этом помещении мастер-классы. Ноутбуки кажется DELL-ы.

    Обед был в пластиковых наборах. В первый день некоторым еда не досталась, а на второй день видел как один парень съел две порции… Вот такой “культур-мультур”, кто-то ходит голодный, кто-то хомячит за двоих )

    Зато были организованы такие приятные места с красными пуфиками,  где был WiFi и можно было посидеть с ноутбуком.

    Из чисто оракловых фишек, был занятный докладчик с очень красивым английским. Рассказывал про то как можно апгрейдить на живую оракловую БД (используя силу фичи – Edition). Грубо говоря как это делают сейчас у нас – когда наступает день Икс, отрубают всех пользователей и гонят ДБА-шников с программистами на работу на выходных (или в ночь), чтобы выложили новую версию в продакшн. Так вот, чтобы всем жилось легче, иногда ЭТО можно с помощью хитрых манипуляций делать постепенно и на живую. Главное знать когда это применимо и как это делать. Вот фото докладчика:

    Ну и конечно же самое главное это всегда не сами доклады… В общем-то я считаю вся соль таких тусовок это возможность пообщаться с другими программерами. Посплетничать о тенденциях,  посмотреть в глаза разработчикам API, помучить разные девайсы.