使用 dh_systemd 打包安装多个 .service 文件
Install multiple .service files with dh_systemd packaging
我目前正在用 dh_virtualenv 打包一个 python 应用程序,用 systemd 进行守护进程。
我使用 dh_systemd 插件来自动安装文件 my_app.service 将安装 .deb 包,但我想 运行 另一个安排在不同服务中的进程我的应用程序的任务,使用芹菜。
所以,我创建了另一个服务文件,my_app.scheduler.service,但我不知道如何在我的 debian 打包规则中声明这个 file/app/service,所以在安装整个包时,这两个服务文件将被复制,因此将独立启动。
这是我的 dpkg-buildpackage 命令的 debian conf 文件:
debian/control
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/rules:
#!/usr/bin/make -f
%:
dh $@ --with python-virtualenv --with=systemd
debian/install
etc/my_app.config /etc/
debian/dirs:
/var/lib/my_app
/var/log/my_app
当然还有 .service 文件:
debian/my_app.服务
[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
找到解决方案 here:
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' 和 'packagename.service2.service'
我目前正在用 dh_virtualenv 打包一个 python 应用程序,用 systemd 进行守护进程。
我使用 dh_systemd 插件来自动安装文件 my_app.service 将安装 .deb 包,但我想 运行 另一个安排在不同服务中的进程我的应用程序的任务,使用芹菜。
所以,我创建了另一个服务文件,my_app.scheduler.service,但我不知道如何在我的 debian 打包规则中声明这个 file/app/service,所以在安装整个包时,这两个服务文件将被复制,因此将独立启动。
这是我的 dpkg-buildpackage 命令的 debian conf 文件:
debian/control
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/rules:
#!/usr/bin/make -f
%:
dh $@ --with python-virtualenv --with=systemd
debian/install
etc/my_app.config /etc/
debian/dirs:
/var/lib/my_app
/var/log/my_app
当然还有 .service 文件:
debian/my_app.服务
[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
找到解决方案 here:
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' 和 'packagename.service2.service'