【发布时间】:2012-06-20 23:37:14
【问题描述】:
我想在 Ubuntu 10.04 上使用 Supervisor 运行 PostgreSQL 9.1。目前,我使用 init 脚本手动启动 PostgreSQL:
/etc/init.d/postgresql start
根据这篇帖子:http://nicksergeant.com/using-postgresql-with-supervisor-on-ubuntu-1010/,我需要修改 PostgreSQL 配置以使其在 TCP 端口而不是 Unix 套接字上运行,以使 PostgreSQL 与 Supervisor 一起工作。
我对这种方法有两个问题:
考虑到这更像是 hack,这样做是否有任何暗示(例如安全/权限、性能等)?
为什么我们不能在 Supervisor 配置中运行相同的初始化脚本
postgresql?相反,如上面的链接所示,它运行postmaster?
更新:
感谢下面两个答案的有用建议,我已经为 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 设置为 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
所以现在,我可以通过 start postgres 在 supervisorctl 中启动 PostgreSQL,它运行良好。 然而,在我发出stop postgres 之后,虽然supervisorctl 声明postgres 已停止,但服务器显然仍在运行,因为我可以psql 进入它。
我想知道这是主管配置问题,还是 PostgreSQL 问题。欢迎提出任何建议!
【问题讨论】:
标签: postgresql ubuntu postgresql-9.1 supervisord