Поиск по блогу

среда, 2 февраля 2011 г.

Настройка автозапуска tomcat7

Задача: автозапуск tomcat7 от имени специального пользователя, например tomcat. Так безопаснее и удобнее.
  1. Скачать tomcat с официального сайта http://tomcat.apache.org/. Желательно скачать tar.gz - zip предназначен для windows окружения. Установить tomcat7. Это просто распаковка. Например, в /opt. Подробнее в readme файле тарболла.
  2. В папке bin находятся скрипты запуска, останова и другие полезные. Они и будут делать всю основную работу. Необходимо написать скрипт - обертку, которая и запускает эти скрипты. 
Примерный код скрипта:


#!/bin/sh
#
# tomcat7 This shell script takes care of starting and stopping Tomcat
#
# chkconfig: - 80 20
#
### BEGIN INIT INFO
# Provides: tomcat7
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start:
# Default-Stop:
# Description: Release implementation for Servlet 3.0 and JSP 2.1
# Short-Description: start and stop tomcat
### END INIT INFO

export CATALINA_HOME=/opt/apache-tomcat-7.0.6

NAME=`basename $0`

case $1 in

start)

echo "Starting ${NAME} service: "

su - tomcat -c $CATALINA_HOME/bin/startup.sh

;;

stop)

echo "Stopping ${NAME} service: "

su - tomcat -c $CATALINA_HOME/bin/shutdown.sh

;;

restart)

echo "Restarting ${NAME} service: "

su - tomcat -c $CATALINA_HOME/bin/shutdown.sh

su - tomcat -c $CATALINA_HOME/bin/startup.sh

;;

*)


echo "Usage $0 {start|stop|restart}"

exit 1

;;

esac

exit 0


Мини-поянение: Начальные строчки с решеткой нужны для chkconfig. Далее указываем переменную CATALINA_HOME где указан путь до нашего tomcat7. NAME - здесь первый аргумент строки - получаемое имя приложения из командной строки.

3. Сохранить скрипт под говорящим именем в директории /etc/init.d/<имя>. Мой файл называется my_tomcat7.

4. Добавим скрипту права на запуск, т.е. исполнение. Например, так:
[root@machine] # chmod +x /etc/init.d/my_tomcat7
владелец файла рут, само собой.

5. Создадим (и это можно было сделать вначале) пользователя и группу под именами tomcat. Дадим им права на папку tomcat7 и сделаем их владельцами:
# sudo groupadd tomcat
# adduser tomcat
# usermod -g tomcat tomcat

[root@machine] # chown tomcat.tomcat -R /папка/с/tomcat7/

6. Добавим наш tomcat7 в chkconfig
[root@machine] # chkconfig --add /etc/init.d/my_tomcat7
Для centOS: chkconfig --add my_tomcat7
[root@machine] # chkconfig /etc/init.d/my_tomcat7 on

7. Да, и если в папке tomcat7  /webapps есть приложения, которые важны, то нужно дать права на запись группе tomcat в папку /webapps: rwxrwxr-x
chmod g+w /webapps или mc => [F9] => File => Chmod => write by group. 

8. Для проверки можно перезапустить сначала вручную сервис, а можно сразу ребутнуться и посмотреть логи:
[root@machine] # service my_tomcat7 start
[root@machine] # service my_tomcat7 stop
[root@machine] # service my_tomcat7 restart

5 комментариев:

  1. Большое спасибо, у меня всё получилось, кроме шага 6 - долго гуглил, как понял, во второй строке ещё и --level нужно указывать.

    ОтветитьУдалить
  2. Здравствуйте! Очень рада, что моя заметка помогла :) Насчет --level вероятно вы правы, только я не указывала опцию по причине неполного знания об уровнях выполнения и не особой надобности указывать конкретные уровни. Когда разберусь с ними подробнее, перепишу немного 6 шаг. Спасибо!

    ОтветитьУдалить
  3. Хорошая статья, спасибо.

    Дополнения к шагу 5 -

    # sudo groupadd tomcat
    # adduser tomcat
    # usermod -g tomcat tomcat

    ОтветитьУдалить
  4. Рада, что статья помогла! За дополнения спасибо, добавила в пост.

    ОтветитьУдалить
  5. Благодарю, даже через 2 года статья не теряет актуальности) Ни разу не линуксоид, но сделал и заработало)

    ОтветитьУдалить