Настраиваем eclipse для работы с tomcat под ubuntu


Чтобы настроить Eclipse на работу с сервером Tomcat, ему необходимо указать директорию с сервером (installation directory). Проблема в том, что если устанавливать Tomcat из репозитория Ubuntu,  то он размазывается по системе, в частности, директории CATALINA_HOME и CATALINA_BASE оказываются разнесены в /usr/share/tomcat6 и /var/lib/tomcat6 соответственно. При указании eclipse директории CATALINA_HOME, он начинает искать директорию conf в ней и, естественно, не находит, т.к. она находится в CATALINA_BASE. Для решения этой проблемы есть несколько путей.


Начнем по порядку. Установим tomcat из репозитория:
sudo apt-get install tomcat6

Запустим eclipse и настроим его на работу с нашим веб-сервером:
Window -> Preferences -> Server -> Runtime enviroment -> Add...

Выбираем Apache -> Apache Tomcat v6.0

Далее в Tomcat installation directory указываем /usr/share/tomcat6 и жмем Finish.


Теперь на вкладке Servers кликаем правой кнопкой мыши и выбираем New -> Server

Чтобы открыть вкладку с серверами идем в Window -> Open Perspective -> Other и выбираем Servers.

Выбираем интересующий нас сервер из списка и с удивлением обнаруживаем, что выбрать то не удается!


Сообщение об ошибке, мягко говоря, не очень информативное. Подробности, наверное, можно найти в недрах логов eclipse, но я честно не хочу в них копаться. Фокус в том, что если бы мы сразу начали с добавления сервера к проекту, то пройти этот этап нам бы удалось и мы бы получили более подробный отчет о проблеме:



Из этого сообщения проблема становится достаточна очевидна и мы можем попытаться найти пути ее решения.

1. Ссылка

 Первый вариант решения проблемы наиболее интуитивен - создать ссылку на директорию conf:
cd /usr/share/tomcat6
sudo ln -s /var/lib/tomcat6/conf conf

Этого окажется недостаточно, так как потребуется еще файл catalina.policy и возможность читать конфигурационные файлы:
cd /usr/share/tomcat6/conf
sudo ln -s ./policy.d/03catalina.policy ./catalina.policy
sudo chmod -R +r /usr/share/tomcat6/conf

Это достаточно грубое решение. При такой конфигурации администрирование сервера может потребовать неуместно много привилегий (сам не пробовал, только догадываюсь). К тому же, в случае многопользовательского использования машины, возникает естественное желание разделить права доступа к устанавливаемым приложениям. В этом нам может помочь утилита tomcat6-user.

2. tomcat6-user

Установка:
sudo apt-get install tomcat6-user

Выполняем:
tomcat6-instance-create ~/tomcat6

Добавим ссылку на директорию lib и файл catalina.policy:
cd ~/tomcat6
sudo ln -s /usr/share/tomcat6/lib
cd ./conf
sudo ln -s /usr/share/tomcat6/conf/policy.d/03catalina.policy ./catalina.policy

Теперь можно управлять сервером, редактируя специфичные для пользователя настройки. Но сам сервер следует запускать не как сервис через service tomcat6 start, а с помощью скрипта ~/tomcat6/bin/startup.sh.

3. Кардинальный

Ну и наконец, можно пойти совершенно иным путем - оставить в покое репозиторий и установить вручную более свежий сервер.

! Приводимые здесь ссылки и версии файлов могли устареть с момента написания статьи. Убедитесь в их состоятельности или сделайте поправки на текущие версии.

Скачиваем архив со свежей версией сервера:
wget http://www.sai.msu.su/apache/tomcat/tomcat-7/v7.0.29/bin/apache-tomcat-7.0.29.tar.gz

Распаковываем и перемещаем в установочную директорию:
tar xvzf apache-tomcat-7.0.29.tar.gz
sudo mv  apache-tomcat-7.0.29 /opt/tomcat7

Для работы с сервером из eclipse этого достаточно.

Чтобы иметь возможность запускать сервер как сервис,создайте файл /etc/init.d/tomcat7 со следующим содержимым (в простейшем случае):
# Tomcat 7 auto-start
#
# description: Auto-starts tomcat7
# processname: tomcat7
# pidfile: /var/run/tomcat7.pid
case $1 in
    start)
        sh /opt/tomcat7/bin/startup.sh
        ;;
    stop) 
        sh /opt/tomcat7/bin/shutdown.sh
        ;;
    restart)
        sh /opt/tomcat7/bin/shutdown.sh
        sh /opt/tomcat7/bin/startup.sh
        ;;
    esac
exit 0
Теперь необходимо сделать скрипт исполняемым:
sudo chmod 755 /etc/init.d/tomcat7

Осталось настроить скрипт на автоматическую загрузку с системой.Тут есть несколько вариантов.

Добавить ссылки на созданный скрипт в соответствующие директории:
sudo ln -s /etc/init.d/tomcat7 /etc/rc1.d/K99tomcat7
sudo ln -s /etc/init.d/tomcat7 /etc/rc2.d/S99tomcat7

Или воспользоваться утилитой sysv-rc-conf.

Подробности использования sysv-rc-conf и пояснения, что за директории и почему скрипт в них надо копировать именно указанным способом, выходят за рамки статьи, т.к. затрагивают обширную тему инициализации SysV init scripts link.

В составлении статьи помогали источники:

  1. http://stackoverflow.com/questions/1356616/configuring-tomcat-6-with-eclipse-in-ubuntu
  2. http://possiblygonewrong.blogspot.com/2010/11/setting-up-tomcat-server-adapter-in.html
  3. http://www.howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu/
  4. http://floppix.ccai.com/rc.html

Комментариев нет: