使用dh_systemd包安装多个.service文件



我目前正在用dh_virtualenv打包一个python应用程序,并用systemd进行守护。

我使用dh_systemd插件自动安装文件my_app.service将安装.deb包,但我想在另一个服务中运行另一个进程,该服务使用芹菜为我的应用程序调度任务。

因此,我创建了另一个服务文件my_app.scheduler.service,但我不知道如何在我的debian打包规则中声明这个文件/app/service,这样在安装整个包时,两个服务文件都将被复制,从而独立启动。

以下是dpkg buildpackage命令的debian conf文件:

debian/控制

Source: my_app
Section: python
Priority: extra
Maintainer: me
Build-Depends: debhelper (>= 9), python, dh-virtualenv (>= 0.6), dh-systemd (>= 1.5), adduser
Standards-Version: 3.9.5
Package: my_app
Architecture: any
Pre-Depends: dpkg (>= 1.16.1), python2.7, ${misc:Pre-Depends}
Depends: ${python:Depends}, ${misc:Depends}
Description: blabla

debian/规则:

#!/usr/bin/make -f
%:
    dh $@ --with python-virtualenv --with=systemd

debian/安装

etc/my_app.config /etc/

debian/dirs:

/var/lib/my_app
/var/log/my_app

当然还有.service文件:

debian/my_app.service

[Unit]
Description=APP
[Service]
Type=simple
User=app_user
EnvironmentFile=/etc/my_app.config
ExecStart=/usr/share/python/my_app/bin/gunicorn -w 10 -b 0.0.0.0:6000 -t 600 my_app_python_package:app
[Install]
WantedBy=multi-user.target

debian/my_app.scheduler.service

[Unit]
Description=APP Scheduler
[Service]
Type=simple
User=app_user
EnvironmentFile=/etc/my_app.config
ExecStart=/usr/share/python/my_app/bin/celery worker -A my_app_python_package.tasks 
[Install]
WantedBy=multi-user.targetroot

在此处找到解决方案:

override_dh_installinit:
        dh_installinit --name=service1
        dh_installinit --name=service2
#!/usr/bin/make -f
%:
        dh $@ --with-systemd, python2
override_dh_installinit:
        dh_installinit --name=service1
        dh_installinit --name=service2
override_dh_systemd_enable:
        dh_systemd_enable --name=service1
        dh_systemd_enable --name=service2
override_dh_systemd_start:
        dh_systemd_start --name=service1
        dh_systemd_start --name=service2

将服务名称保存为"debian/"目录下的"packagename.service1.service"one_answers"packagename]service2.service">

参见Yd Ahhrk的答案(在StackExchange中(:

从兼容性级别11开始,dh_installinit不再处理systemd服务。改为使用dh_installsystemd

override_dh_installsystemd:
  dh_installsystemd --name=service1
  dh_installsystemd --name=service2

(以上假设您有两个服务文件:debian/<package-name>.service1.servicedebian/<package-name>.service2.service.(

相关内容

  • 没有找到相关文章

最新更新