Чтобы настроить 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...
Теперь на вкладке 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.
Комментариев нет:
Отправить комментарий