Feed Rss



Ноя 20 2009

Переходим с PHP на Java. Шаг первый. Контейнер сервлетов.

рубрика: Java,PHP Автор:

Помню как я начинал осваивать PHP… Это была где-то середина 2004 года, вроде июль месяц и основной проблемой на тот момент стал не столько синтаксис, не столько конфигурация PHP, сколько конфигурация и развертывание окружения — веб сервера Apache.

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

Время шло дальше и сейчас, что бы развернуть апач и настроить первый виртуальный хост, у меня уходит чуть более минуты:

# aptitude install apache2 php5 php5-json php5-mysql php5-sqlite php5-tidy
# mkdir -p /home/azazel/projects/vhost/public
# nano /etc/apache2/sites-available/vhost.local
[...]
<virtualhost *:80>
    ServerName vhost.local
    DocumentRoot /home/azazel/projects/vhost/public
</virtualhost>
[...]
# echo -e "\n127.0.0.7\tvhost.local" >> /etc/hosts
# a2ensite vhost.local
# apache2ctl restart

…А пару месяцев назад я столкнулся с Tomcat6. И вроде бы все было логично и даже в коробочной поставке имелись webbased инструменты «Tomcat Web Application Manager» и «Tomcat Virtual Host Manager», но как ими пользоваться для меня была полная загадка, ибо словосочетания «Context Path», «XML Configuration file URL» и «WAR or Directory URL» вгоняли в уныние. Не столько непонятным переводом (потому что он был понятен), сколько тем смыслом, который был вложен в эти словосочетания.

Еще большее уныние вызывал тот факт, что установленный томкат я обнаружил разбросаным по всей системе, как макаронины после вызрыва на фабрике.
Тут тебе и каталог /etc/tomcat6 с конфигурациями, вот и /var/lib/tomcat6 со ссылками на разные части системы:

root@nemezys:~/ # ls -la /var/lib/tomcat6/
total 16
drwxr-xr-x  4 root    root    4096 2009-11-13 20:47 .
drwxr-xr-x 63 root    root    4096 2009-11-11 12:35 ..
lrwxrwxrwx  1 root    root      12 2009-10-31 00:50 conf -> /etc/tomcat6
lrwxrwxrwx  1 root    root      17 2009-10-31 00:50 logs -> ../../log/tomcat6
drwxrwxr-x  4 root    tomcat6 4096 2009-11-13 20:42 webapps
lrwxrwxrwx  1 root    root      19 2009-10-31 00:50 work -> ../../cache/tomcat6
 
root@nemezys:~/ # ls -la /etc/tomcat6/
total 100
drwxr-xr-x   4 root root     4096 2009-10-31 00:51 .
drwxr-xr-x 152 root root    12288 2009-11-20 15:58 ..
drwxrwxr-x   4 root tomcat6  4096 2009-11-13 21:28 Catalina
-rw-r--r--   1 root root     3665 2009-05-14 02:15 catalina.properties
-rw-r--r--   1 root root     1396 2009-05-14 02:15 context.xml
-rw-r--r--   1 root root     2370 2009-10-26 09:19 logging.properties
drwxr-xr-x   2 root root     4096 2009-10-31 00:51 policy.d
-rw-r--r--   1 root root     6648 2009-11-14 00:29 server.xml
-rw-r-----   1 root tomcat6  1222 2009-11-12 16:54 tomcat-users.xml
-rw-r--r--   1 root root    50757 2009-05-14 02:15 web.xml

И тогда я принялся штудировать документацию. Ее, как оказалось, в Сети было предостаточно, хотя вся она исключительно на английском, что многих может оттолкнуть. Конечно же самая полная информация находится на оф.сайте производителя, а вот на многочисленных форумах вопросы конфигурирования если и решались, то довольно запутанно и совершенно без пояснений, как будто любой аспект должен быть понятен априори.

Итогом двухдневного вечернего изучения документации и многочисленных экспериментов стало понимание назначения некоторых компонент.
Так tomcat-users.xml хранит в себе настройки групп и пользователей, которым доступно управление тем или иным виртуальным хостом. Зарезервированными группами являются admin и manager. Первый может создавать виртуальные хосты, второй же умеет только разворачивать и сворачивать приложения в рамках определенного ему хоста.

server.xml оказался полезным, что бы развернуть первый vhost. Именно в нем располагается секция , внутри которой описываются конкретные вхосты:

<host name="vhost.local" appBase="vhost.local"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
</host>

Располагаться файлы этого вхоста будут в директории /var/lib/tomcat6/vhost.local, а если мы хотим автоматизировать разворачивание проекта (например впоследствии через maven, о чем позже), то нам нужно сконфигурировать приложение менеджера в этом хосте:

# mkdir /var/lib/tomcat6/Catalina/vhost.local
# cp /var/lib/tomcat6/Catalina/localhost/manager.xml /var/lib/tomcat6/Catalina/vhost.local/

Вобщем-то и все. Осталось в /var/lib/tomcat6/vhost.local разместить файл ROOT.war или каталог ROOT, содержащий файлы нашего проекта и открыть в браузере адресс http://vhost.local:8080/, что бы попасть на главную страницу нашего первого виртуального хоста у томката.

Чего ждать далее: как я знакомился с maven, первое приложение на Spring, подключение Hibernate и много много другого, что предстоит использовать в полноценных совеременных веб приложениях. И конечно же все буду подавать в сравнении с PHP, ZendFramework, Doctrine и другими библиотеками и подходами, характерными для PHP

Понравился пост? Подпишись на RSS!

Метки: , , , , , ,

6 ответов на “Переходим с PHP на Java. Шаг первый. Контейнер сервлетов.”

  1. Сотомайор says:

    +1. Согласен что после апача томкат смотрится как минимум немного «разбросанно» =)
    Кстати, очень, я считаю, полезное направление в писании статей и книг — XXX for YYY developers. Во всех олдскульных книгах все сравнивают с C++, а вот например мне очень понравились статьи типа GIT for SVN users и Python for PHP developers где новое подается на контрасте с «родным».

  2. Bugagag says:

    хммм, это статья для совсем идиотов или для начинающих??? :)))))))))

  3. Bugagag says:

    мрак, автор ты здоров? :))))))))))))

  4. Bugagag says:

    PHP — отстой для дебилов у которых руги из сраки

    • Вася says:

      А что не для дибилов? Медленный Perl, медленная Java, медленный windows-only ASP.net?

      • Алексей Токарь says:

        Ну я бы не стал заходить так далеко и называть джаву медленной…