Запуск PostgreSQL с помощью Supervisord

Я хочу запустить PostgreSQL 9.1 с помощью Supervisor на Ubuntu 10.04. На данный момент я вручную запускаю PostgreSQL с помощью сценария инициализации:

/etc/init.d/postgresql start

Согласно этому посту: http://nicksergeant.com/using-postgresql-with-supervisor-on-ubuntu-1010/, Мне нужно изменить конфигурацию PostgreSQL, чтобы она работала на порту TCP вместо сокета Unix, чтобы PostgreSQL работал с Supervisor.

У меня есть два вопроса относительно этого подхода:

  1. Учитывая, что это больше похоже на взлом, есть ли какие-либо последствия (например, безопасность/разрешения, производительность и т. д.) для этого?

  2. Почему мы не можем просто запустить тот же сценарий инициализации 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 не запускался автоматически при загрузке (впрочем, мне непонятно, загружается ли этот конфиг). Затем я настраиваю конфигурацию Supervisor для postgres следующим образом:

[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

Итак, теперь я могу запустить PostgreSQL в supervisorctl, выполнив start postgres, что работает нормально.Однако после того, как я выдал команду stop postgres, несмотря на то, что supervisorctlобъявляет, что postgres остановлен, сервер, по-видимому, все еще работает, так как я могу подключиться к нему с помощью psql.

Интересно, проблема в конфигурации Supervisor или в PostgreSQL? Любое предложение приветствуется!

5
задан Martijn Pieters 24 October 2012 в 14:02
поделиться