Я пытаюсь настроить кластер PostgreSQL в моем домашнем каталоге Debian.
РЕДАКТИРОВАТЬ: Есть несколько причин, по которым я считаю это хорошей идеей:
systemd
служба включена. Я просто начинаю с service
когда мне это действительно нужно.Я создал кластер и могу успешно запустить сервер, но не могу его демонизировать.
Вот как я создал кластер с помощью специальной команды оболочки Debian:
$ PG_CLUSTER_CONF_ROOT=/home/user/.local/etc/postgresql pg_createcluster -u user -d /home/user/.local/var/lib/postgresql -s /home/user/.local/var/run/postgresql -l /home/user/.local/var/log/postgresql -p 5434 --start-conf manual --locale en_GB.UTF-8 9.5 mycluster
install: cannot change owner and permissions of ‘/home/user/.local/etc/postgresql/9.5’: Operation not permitted
Creating new cluster 9.5/mycluster ...
config /home/user/.local/etc/postgresql/9.5/mycluster
data /home/user/.local/var/lib/postgresql
locale en_GB.UTF-8
socket /home/user/.local/var/run/postgresql
port 5434
Warning: The parent /var/run/postgresql of the selected
stats_temp_directory is not writable for the cluster owner. Not adding this
setting in postgresql.conf.
(Я вручную добавил stats_temp_directory
вариант.)
Теперь я могу запустить кластер следующим образом (опять же, с помощью команды оболочки Debian):
$ PG_CLUSTER_CONF_ROOT=/home/user/.local/etc/postgresql pg_ctlcluster --foreground 9.5 mycluster start
И он запускается, и я вижу сообщения журнала в своей консоли, и я могу использовать createdb
и psql
(если я установил файл сокета с -h
и порт с -p
, что нормально).
Но я не могу начать без --foregound
вариант. Он ждет некоторое время, а затем говорит:
The PostgreSQL server failed to start. Please check the log output:
Я пробовал установить файл журнала, как это:
$ PG_CLUSTER_CONF_ROOT=/home/user/.local/etc/postgresql pg_ctlcluster -o '-r /home/user/.local/var/log/postgresql/server.log' 9.5 mycluster start
А вот так:
$ PG_CLUSTER_CONF_ROOT=/home/user/.local/etc/postgresql pg_ctlcluster 9.5 mycluster start -- -l /home/user/.local/var/log/postgresql/server.log
Но я все равно получаю тот же результат. И файл журнала не создается.
В вашем случае может быть проще обойти оболочки Debian / Ubuntu для postgres.
Как насчет инициализации и запуска частного кластера postgres с помощью:
$ mkdir $HOME/pg
$ /usr/lib/postgresql/9.5/bin/initdb -D $HOME/pg
$ vi $HOME/pg/postgresql.conf
# change `port` and `unix_socket_directories`, for example:
port= 5495
unix_socket_directories = '/tmp'
# start the server, will run in background and processes belonging to $USER
$ /usr/lib/postgresql/9.5/bin/pg_ctl -D $HOME/pg -l /path/to/logfile start
# use it (initdb has already created a superuser from your $USER name)
$ psql -p 5495 -h/tmp -d postgres
# stop the server
$ /usr/lib/postgresql/9.5/bin/pg_ctl -D $HOME/pg -l /path/to/logfile stop