使用 Supervisord 运行 PostgreSQL

2024-02-12

我想在 Ubuntu 10.04 上使用 Supervisor 运行 PostgreSQL 9.1。目前,我使用 init 脚本手动启动 PostgreSQL:

/etc/init.d/postgresql start

根据这篇文章:http://nicksergeant.com/using-postgresql-with-supervisor-on-ubuntu-1010/ http://nicksergeant.com/using-postgresql-with-supervisor-on-ubuntu-1010/,我需要修改 PostgreSQL 配置以使其在 TCP 端口而不是 Unix 套接字上运行,以便使 PostgreSQL 与 Supervisor 一起工作。

我对这种方法有两个问题:

  1. 考虑到这更多的是黑客行为,这样做是否有任何影响(例如安全/权限、性能等)?

  2. 为什么我们不能运行相同的初始化脚本postgresql在主管配置中?相反,如上面的链接所示,它运行postmaster?

UPDATE:

感谢下面两个答案的有用建议,我为 Supervisor 设置了一个脚本来直接调用 PostgreSQL:

#!/bin/sh

# This script is run by Supervisor to start PostgreSQL 9.1 in foreground mode

if [ -d /var/run/postgresql ]; then
    chmod 2775 /var/run/postgresql
else
    install -d -m 2775 -o postgres -g postgres /var/run/postgresql
fi

exec su postgres -c "/usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgresql/9.1/main -c config_file=/etc/postgresql/9.1/main/postgresql.conf"

我还设置了配置:/etc/postgresql/9.1/main/start.conf to manual这样 PostgreSQL 就不会在启动时自动启动(但是,我不清楚是否加载了此配置)。然后我将 postgres 的 Supervisor 配置设置为:

[program:postgres]
user=root
group=root
command=/usr/local/bin/run_postgresql.sh
autostart=true
autorestart=true
stderr_logfile=/home/www-data/logs/postgres_err.log
stdout_logfile=/home/www-data/logs/postgres_out.log
redirect_stderr=true
stopsignal=QUIT

现在,我可以启动 PostgreSQLsupervisorctl通过做start postgres,运行良好。然而,在我发出之后stop postgres, 虽然supervisorctl声明 postgres 已停止,服务器显然仍在运行,因为我可以 psql 进入它。

我想知道这是 Supervisor 配置问题还是 PostgreSQL 问题。欢迎任何建议!


博客文章写得相当糟糕。没有“TCP 模式”:帖子建议的方法仍然会监听 Unix 套接字,只是在不同的目录中。帖子中的评论(例如“外部 pid 文件 - TCP 模式不需要”)非常具有误导性。

postmaster是 postgresql 可执行文件的传统名称(以区分主调度进程和后端从进程)。一段时间以来,没有单独的可执行文件,现在它被简单地安装为“postgres”。

假设 Supervisor 与 qmail/daemontools 大致相似supervise方案,完全有可能(事实上,很正常)让它运行一个设置目录和环境的脚本,然后使用必要的参数执行 postgres(或传播给包装脚本的参数,这将是不寻常的与监督,但当你有一个配置文件来放入参数时更有意义)。

The way supervise有效的(我将继续假设“Supervisor”是相同的)是让主管进程按指定运行一个子进程,并在退出时简单地重新启动一个新的子进程。这是基于这样的想法:正在启动的进程是一个长期存在的守护进程,只有在出现严重错误时才会退出,并且只需重新启动它就是一个有效的修复。相比之下,初始化脚本如/etc/init.d运行子进程并分离它,并将控制权返回给调用者 - 如果子进程退出,则不会发生任何特殊情况,并且必须手动重新启动。如果你尝试简单地运行/etc/init.d/postgresql start从监督中,它将不断生成 postgresql 守护进程,因为从 init 脚本返回将被解释为守护进程已退出,而实际上它已启动并分离。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Supervisord 运行 PostgreSQL 的相关文章

  • 如何引用下一行的数据?

    我正在 PostgreSQL 9 2 中编写一个函数 对于股票价格和日期的表 我想计算每个条目较前一天的百分比变化 对于最早一天的数据 不会有前一天 因此该条目可以简单地为 Nil 我知道WITH声明可能不应该高于IF陈述 到目前为止 这就
  • Postgres JSON 数据类型 Rails 查询

    我正在使用 Postgres 的 json 数据类型 但想要使用嵌套在 json 中的数据进行查询 排序 我想在 json 数据类型上使用 where 进行订购或查询 例如 我想查询关注者数量 gt 500 的用户 或者我想按关注者或关注数
  • 本地 Postgres 实例和 Azure Cloud Postgres 实例之间的实时同步

    我需要在本地 postgresql 实例与云 postgresql 实例之间设置实时同步过程 请让我知道我可以通过哪些选项来实现它 我是否必须使用任何特定工具或者可以通过复制进行管理 请指教 使用 PgPool http www pgpoo
  • 使用 NLog .NET Core 将日志记录到 PostgreSQL DB

    我尝试将日志记录集成到 NET Core 中的数据库 我能够设置 NLog 并将消息记录到 SQL Server 这很容易 但是当我尝试将 DB 切换到 PostgreSQL 时 似乎没有记录任何内容 以下是startup cs中的代码 p
  • 使用 MacPorts 在 Mac OS X 10.5 上安装 PostgreSQL 时出错

    我已经使用 MacPorts 在几台不同的计算机上安装了 PostgreSQL 没有问题 但是当涉及到我自己的笔记本电脑时 我无法构建它 当我执行此命令时 sudo port install postgresql83 我收到此错误 chec
  • 如何在 Ubuntu VirtualBox 中运行 Meteor 应用程序并使用 Windows 主机上的编辑器进行编辑?

    我希望在运行 Ubuntu 的 virtualbox 来宾中运行一个用于开发目的的流星服务器 该项目将位于主机上的一个文件夹内 该文件夹将共享给来宾 该文件夹本身位于 Dropbox 文件夹内 这样我可以在多个虚拟机和工作站之间共享开发 但
  • 使用 g++ 5.3.1 编译的程序运行速度比使用 g++ 4.8.4 编译的相同程序慢 3 倍,相同的命令

    最近 我开始使用 Ubuntu 16 04 和 g 5 3 1 并检查我的程序是否运行慢3倍 在此之前我使用过 Ubuntu 14 04 g 4 8 4 我用相同的命令构建它 CFLAGS std c 11 Wall O3 我的程序包含循环
  • 使用 PostGIS 拥有通用 GEOGRAPHY 列

    在 PostgreSQL 9 PostGIS 1 5 中 有没有办法创建 通用 GEOGRAPHY 列 我指的是接受 POINT 以及 POLYGON LINESTRING 等的列 到目前为止 我只在 Internet 上看到过像 GEOG
  • PostgreSQL 错误 42501:架构权限被拒绝

    我正在 ASP NET 中构建一个用户注册系统 使用 PostgreSQL 数据库来维护用户信息 作为注册过程的一部分 用户会收到一条确认消息 他们必须单击其中的链接来验证其电子邮件地址 然后 他们将进入一个可以创建密码的页面 一旦用户提供
  • SQL查询查找具有特定数量关联的行

    使用 Postgres 我有一个架构conversations and conversationUsers Each conversation有很多conversationUsers 我希望能够找到具有确切指定数量的对话conversati
  • postgresql 不同的不工作

    我使用以下代码从数据库获取值 但是当我编写这段代码时 测试看看问题出在哪里 我注意到查询没有从数据库中获取不同的值 这是查询 select distinct ca id as id acc name as accName pIsu name
  • Postgres - 即使我的角色/用户已被授予“读取”权限,也无法从表中“选择”

    我在 postgres 上有一个管理员角色 用户和一个开发人员角色 开发人员角色继承了我为将来方便而创建的 readaccess 角色的属性 如果我运行 du 我得到 Role name Attributes Member of devel
  • 交叉编译armv5,但它创建v7二进制文件

    我设法为arm926ej s创建了一个目标文件我在 qemu 上使用 Debian Arm arm linux gnueabi gcc 4 4 static O c mcpu arm926ej s hello c o hello root
  • PLpgSQL 函数不返回匹配的标题

    当给定文本时 我试图返回电影名称以及演员和工作人员的数量 当我输入字符串并使用 ilike 时 我的查询返回不匹配的标题 我之前创建了一个视图 其中包含要在函数中输入的电影标题和工作人员数量 我的代码是 create or replace
  • Django 独特的不工作

    我在从查询中过滤掉重复项时遇到问题 我正在使用 Django 1 4 和 Postgres 8 4 13 我在我的模型对象上使用这个查询 它是一个 jquery 自动完成 term request GET get term field re
  • 如何关闭 gorm 1.20.0 中的数据库实例

    由于我没有在 Close 函数中找到 gorm 实例 任何帮助将不胜感激 dbURI fmt Sprintf user s password s dbname s port s sslmode s TimeZone s username p
  • 如何确定层级组织中的权限?

    我正在尝试创建高性能逻辑来确定分层组织内的权限 员工被分配到一个或多个单位 单元是分层的 理论上 无限深度 实际上不超过 6 层 例如 员工Jane可能是Supervisor of the Accounts Receivable单元 的子单
  • Rails 的多个数据库不适用于远程数据库

    我有一个远程只读 postgres 数据库 它是通过 docker 实例维护的卡尔达诺数据库同步 https github com input output hk cardano db sync 我设法将开发数据库连接到它 它工作正常 但由
  • “WHERE”处或附近的语法错误

    创建 postgres 函数时会导致错误 如下所示 错误 WHERE 处或附近的语法错误 第 19 行 其中 s shift id shiftid 错误 错误 WHERE 处或附近的语法错误 SQL状态 42601 人物 108 请帮忙 C
  • postgresql中的按日期聚合函数分组

    我在运行此查询时遇到错误 SELECT date updated at count updated at as total count FROM persons WHERE persons updated at BETWEEN 2012 1

随机推荐

  • Laravel:从多对多关系中进行条件选择

    我的帖子和主题有多对多的 Laravel 关系 帖子属于许多主题 主题属于许多帖子 我想获得帖子编号 gt 10 from 某个话题 以下代码将获取特定主题的所有帖子 topic Topic where id topic id gt get
  • 为什么没有 $(window).height();返回一个值,但是 $(document).height();做?

    我正在尝试使用 jQuery 来获取当前窗口高度 我打算用这个值设置一个变量 并在调整大小时更新该值 由于某种原因 window height 总是返回零 但是 document height 返回一个值 为什么会这样呢 为了简洁起见 代码
  • 按特定列选择不同的实体

    我有一个包含 4 列的表 id column a 和column b 我最初的查询基本上是 Session session initialize my hibernate session Criteria criteria session
  • Indy TIdTCPClient 接收文本

    我尝试在 idtcpclient 中接收文本 但它不起作用 这是我在计时器中使用的代码 procedure TForm1 Timer2Timer Sender TObject var receivedtext string begin if
  • Magento:从没有产品的属性集中获取属性

    我在 Magento 商店中设置了一个属性集 其中有几个二进制属性 对于下拉列表 我需要此属性集中所有属性的列表 包括它们的内部名称和标签 由于此下拉列表应该出现在不一定选择产品的地方 因此我不能走 获取产品属性 的通常路线 我如何获取集合
  • 如何设置 Job DSL 创建的多分支作业的发现模式

    我是詹金斯的新手 我正在尝试解决一些问题 有没有办法通过 Groovy 添加分支源行为 这是使用 Jenkins 分析 SonarQube 中的 GitHub 项目 I m creating a multi branch pipeline
  • elasticsearch 是非确定性的吗?

    由于elasticsearch计算分数的算法 每次执行查询时是否不会以相同的顺序返回相同的结果 或者是别的什么 有没有办法让每次执行查询时结果都以相同的顺序返回 这是正常的吗 这可能与 elasticsearch 默认在本地计算相关性分数的
  • 如何使 DockPanel 中的项目扩展以适应 WPF 中的所有可用空间?

    我有一个StackPanel含有一个StackPanel和其他一些物品 首先StackPanel具有垂直方向 内部具有水平方向 里面有一个TreeView and a ListView 我希望它们能够扩展并适应窗口的宽度 这是我通过窗口设置
  • 使用 TimeTCPClient 从公共时间服务器获取时间

    我尝试使用以下代码从公共时间服务器获取时间 package aaa import java util Arrays import java util List import org apache commons net TimeTCPCli
  • list.files 的性能问题

    我正在尝试使用以下命令从 3 个网络驱动器检索文件list files这需要永远 当我使用时find在 shell 中 它会在不到 15 秒的时间内返回所有结果 system time jnk lt list files c Volumes
  • Expo 安全存储在玩笑测试中不可用

    这个问题具体是关于expo secure store and jest 目前 我在登录时使用 expo secure store 来存储我的 JWT 它在模拟器上运行时工作正常 但是在 Jest 测试中根本不起作用 令牌返回为undefin
  • C# 通用复制构造函数

    我有一个接口和两个实现该接口的类 这些类具有泛型类型 我想从一个类的实例克隆到另一个类的实例 interface IFoo stuff class Foo
  • Intellij IDEA 11:如何从 .less 编译 .css?

    如何在 intellij 中从 less 编译 css 当然这应该很容易 但它让我难住了 有人知道怎么做吗 我写了一个当 LESS 文件发生变化时 它会自动将它们编译为 CSS 您可以配置多个 LESS 目录来监视每个项目 每个目录的输出将
  • 如何将 _locale 参数添加到安全路径?

    我设置了安全设置来保护根路径下的所有内容 除了查看隐私政策的公共页面外 privacy 一切正常 security yml access control path privacy role IS AUTHENTICATED ANONYMOU
  • 设置 PEP 代理

    我一直在研究 PEP Proxy Steelskin 以便我可以为我的 Orion Context 提供一些安全层 但是 有一些问题阻碍了我的进展 我想使用 IDM 和 Keystone 全局实例 我已按照相应的指示成功安装了 pepPro
  • PHP GD imagecreatefromjpeg 无法处理大尺寸图像?

    我的项目是当我自动上传图像时我的程序将创建拇指大小 如果图片大小约为 1024x768 我的程序可以正常工作 但是当我上传大小为 1576x2379 的图片时 显示如下错误 允许的内存大小 8388608 字节已耗尽 尝试分配 1576 字
  • SwiftUI 导航到 NavigationView 堆栈的底部

    我进行了以下设置 其中父视图包含NavigationView它显示一系列页面 A B 和 C 在页面 C 上有一个隐藏导航视图的按钮 我想要它 以便当再次显示导航视图时 它会自动导航到页面 A 但是我不确定如何使用 SwiftUI 执行此操
  • d3.js:具有多个 y 轴值的数据集数组

    我是 d3 js 的初学者 所以请友善 考虑这个 jsbin 示例 http jsbin com edatol 1 edit 我有以下数据集 var dataset d3 time hour utc offset now 5 1 10 d3
  • 如何将多个文件复制到docker数据卷中

    这听起来可能微不足道 但我找不到一种简单的方法将多个文件复制到 Docker 卷的根文件夹中 我正在使用Ubuntu仙尼尔 16 04 and 泊坞窗1 12 1 例如 如果我有一个带有卷的 Ubuntu 容器 my data docker
  • 使用 Supervisord 运行 PostgreSQL

    我想在 Ubuntu 10 04 上使用 Supervisor 运行 PostgreSQL 9 1 目前 我使用 init 脚本手动启动 PostgreSQL etc init d postgresql start 根据这篇文章 http