Задача: автозапуск tomcat7 от имени специального пользователя, например tomcat. Так безопаснее и удобнее.
- Скачать tomcat с официального сайта http://tomcat.apache.org/. Желательно скачать tar.gz - zip предназначен для windows окружения. Установить tomcat7. Это просто распаковка. Например, в /opt. Подробнее в readme файле тарболла.
- В папке 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
Большое спасибо, у меня всё получилось, кроме шага 6 - долго гуглил, как понял, во второй строке ещё и --level нужно указывать.
ОтветитьУдалитьЗдравствуйте! Очень рада, что моя заметка помогла :) Насчет --level вероятно вы правы, только я не указывала опцию по причине неполного знания об уровнях выполнения и не особой надобности указывать конкретные уровни. Когда разберусь с ними подробнее, перепишу немного 6 шаг. Спасибо!
ОтветитьУдалитьХорошая статья, спасибо.
ОтветитьУдалитьДополнения к шагу 5 -
# sudo groupadd tomcat
# adduser tomcat
# usermod -g tomcat tomcat
Рада, что статья помогла! За дополнения спасибо, добавила в пост.
ОтветитьУдалитьБлагодарю, даже через 2 года статья не теряет актуальности) Ни разу не линуксоид, но сделал и заработало)
ОтветитьУдалить