我在 CentOS 7 服务器上运行两个 PostgreSQL 实例,并且正在将 SysV 样式的 init 脚本转换为 systemd 单元。问题是 PostgreSQL RPM 附带一个单一的非模板服务单元文件。
据我所知,我必须在几个不愉快的选项中做出选择:
- 我可以使用已弃用的
.include
指令在 /etc/systemd/system 下创建两个自定义单元。当前的服务文件实际上建议用于.include
自定义,但我知道该指令已被弃用,这意味着它将来可能会停止工作。 - 我可以复制单元文件,但是当最终原始单元文件得到更新但复制的单元文件没有更新时,我就会面临发散的风险。
- 我可以根据现有的单元文件创建一个模板,这意味着我的单元要么运行良好,要么运行不佳,但当上游单元文件更新时它们仍然不会更新。
有没有更好的办法?对于想要跑步的人来说,这似乎是一个常见的用例多个数据库服务器, 或者多个 SSH 守护进程, 或者多个http服务器在同一台机器上。
答案1
模板单元可能是最好的解决方案。这就是 Debian 软件包的配置方式——您可以从postgres-common
来源并在必要时调整路径。单元文件确实不会随上游自动更新,但恐怕我没有办法解决这个问题。也许下一个主要版本会发布原生模板单元?