В этом посте я собираюсь рассказать как превратить REST сервис, написанный на Java, в Linux службу, устанавливаемую пакетным менеджером.
Итак, первым делом забудьте о тяжеловесных серверах приложений вроде JBoss AS или Oracle WebLogic. Выбираем какой-нибудь легковесный встраиваемый сервер. Это может быть Jetty, Grizzly или даже Simple. Логи предпочтительнее писать в syslog. И Log4j и Logback позволяют это сделать. Для написания сервиса я выбираю Dropwizard (готовая связка Jetty + Jersey + Logback + Metrics), но это совсем необязательно. При сборке нужно положить зависимости в отдельную внешнюю папку или запаковать внутрь jar рядом c вашим кодом (maven-assembly-plugin или maven-shade-plugin в помощь). Для простоты демонстрации я выбрал второй вариант.
Теперь всё готово для превращения. Для запуска службы будем использовать systemd - современную систему инициализации и менеджер служб для Linux. Нам понадобится простой shell скрипт и service файл. Выглядеть это будет примерно так:
При инсталляции нужно правильно разложить файлы по папкам, не забыть сделать скрипт исполняемым, добавить службу в автозапуск командой systemctl enable testrest.service
, проверить наличие systemd и rsyslog. Это слишком много для установки вручную. Так пускай за нас эту работу выполняет пакетный менеджер. Для этого необходимо создать пакет. Ниже показано как это сделать с помощью
Содержимое postinstall:
Комментарии