У меня есть приложение Java - хотя ответ здесь должен быть тем же независимо от того, является ли это Java, Ruby, Python, и т.д. - что я хотел бы распределить таким способом, которым, когда devops люди идут для установки его, это автоволшебно работает как демон с нулевой конфигурацией на их стороне. Мое вдохновение для этого прибывает от демона Докера, который записан в Движении, но это автоволшебно настраивает себя как демон на машинах Ubuntu. Я хочу сделать то же, но не иметь никакой подсказки, где даже начать.
Я предположил бы что также:
deb
; илиinit
/systemd
/upstart
/ и т.д. сценарии, которые так или иначе установлены локально без конечного пользователя, имеющего необходимость выполнять их. Однако в этом случае я не уверен, как выбрать, какие сценарии установить, поскольку у пользователя может быть любой из нескольких init
- как установка инструментов.Какие-либо идеи?
На Ubuntu (и Debian), создавая deb
пакет был бы лучшим способом пойти, поскольку все может быть автоматизировано, так, чтобы никакое вмешательство конечного пользователя не было необходимо. Единственные случаи, где установка пакета или обновления не автоматизированы, - то, если пакет имеет некоторые параметры конфигурации, которые должны ввести от пользователя (главным образом только во время установки) или если конфигурационный файл был изменен пользователем и также изменяется более новой версией пакета (во время обновления). Кроме того, после установки/обновления пакета, любые сценарии запуска, которые это устанавливает, автоматически запускаются.
Вы можете иметь приблизительно init
сценарии быть установленными и иметь все, все еще работают. В случае systemd
устанавливаемый и используемый на компьютере пользователя, если существует и init
сценарий и systemd
сценарий для того же сервиса, то init
сценарий проигнорирован и systemd
, используется сценарий.
С точки зрения упаковки себя, Debian предоставляет сценарии помощника, которые (среди прочего) автоматически устанавливают любые сценарии запуска, которые Вы предоставляете (я не думаю upstart
, поддерживается их сценариями помощника, так как это только используется на Ubuntu), и запустите сервис. Для примера упаковки см. это debian
папка для dump1090-mutability
пакет. (Правовая оговорка: это - моя учетная запись GitHub), Примечание, которое dump1090-mutability.init
файл содержит init
сценарий, в то время как dump1090-mutability.service
файл содержит systemd
сценарий. Обратите внимание, что названия этих файлов должны быть package-name.init
и package-name.service
, где package-name
название двоичного создаваемого пакета. (См. man dh_systemd_enable
и man dh_systemd_start
для systemd случая.)
На упаковке, оба из этих файлов помещаются в соответствующие каталоги в системе пользователя, и сервис затем запускается. Для rules
файл, я рекомендую иметь что-то как следующее, так, чтобы Вы извлекли выгоду из автоматизации (см. это для --with systemd
часть):
#!/usr/bin/make -f
%:
dh $@ --with systemd
override_dh_auto_build:
# Specify how to build the Java files here, if there is no Makefile provided
override_dh_auto_install:
# Specify how to install the Java files here, if there is no `install` target in the Makefile. Don't worry about anything in the `debian` directory unless you need to install some icons.
override_dh_auto_build
(где исходные файлы компилируются и упаковываются в JAR), и override_dh_auto_install
(где JAR установлен). install
цель, удаляет эти override_dh_auto_build
цель и заполняет override_dh_auto_install
. install
цель (который может использоваться), удалите обе цели. override_dh_auto_build
и заполните override_dh_auto_install
.