Ubuntu10.04でSupervisorを使用してPostgreSQL9.1を実行したい。現時点では、initスクリプトを使用して手動でPostgreSQLを起動します。
/etc/init.d/postgresql start
この投稿によると:http://nicksergeant.com/using-postgresql-with-supervisor-on-ubuntu-1010/、UNIXソケットではなくTCPポートで実行されるようにPostgreSQL構成を変更する必要があります。 PostgreSQLをSupervisorと連携させます。
このアプローチに関して2つの質問があります。
これがよりハッキングであることを考えると、これを行うことの意味(たとえば、セキュリティ/許可、パフォーマンスなど)はありますか?
postgresql
スーパーバイザー構成で同じinitスクリプトを実行できないのはなぜですか?代わりに、上記のリンクに示されているように、実行され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"
また、config:/etc/postgresql/9.1/main/start.conf
をに設定しmanual
て、PostgreSQLが起動時に自動的に起動しないようにしました(ただし、この構成がロードされているかどうかはわかりません)。次に、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
これで、正常に実行されるを実行supervisorctl
してPostgreSQLを起動できますstart postgres
。ただし、を発行した後stop postgres
、supervisorctl
postgresが停止していることを宣言しましたが、psqlを実行できるため、サーバーはまだ実行されているようです。
これはスーパーバイザー構成の問題なのか、PostgreSQLの問題なのか疑問に思います。どんな提案も歓迎します!