Назад | Перейти на главную страницу

Postgresql не прослушивает правильный порт с помощью служебной команды

В моем /var/lib/pgsql9/data/postgresql.conf я добавил port = 55434 и если я начну Postgres с /usr/bin/pg_ctl start -D /var/lib/pgsql9/data/ как postgres пользователь, то Postgres прослушивает правильный порт lsof -i -nP:

COMMAND    PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
postgres 12127 postgres    3u  IPv4  49394      0t0  TCP *:55434 (LISTEN)
postgres 12127 postgres    4u  IPv6  49395      0t0  TCP *:55434 (LISTEN)
postgres 12127 postgres   10u  IPv4  49402      0t0  UDP 127.0.0.1:57562->127.0.0.1:57562
postgres 12130 postgres   10u  IPv4  49402      0t0  UDP 127.0.0.1:57562->127.0.0.1:57562
postgres 12131 postgres   10u  IPv4  49402      0t0  UDP 127.0.0.1:57562->127.0.0.1:57562
postgres 12132 postgres   10u  IPv4  49402      0t0  UDP 127.0.0.1:57562->127.0.0.1:57562
postgres 12133 postgres   10u  IPv4  49402      0t0  UDP 127.0.0.1:57562->127.0.0.1:57562
postgres 12134 postgres   10u  IPv4  49402      0t0  UDP 127.0.0.1:57562->127.0.0.1:57562

Но если я попробую service postgresql start так как root, затем он прослушивает значение по умолчанию 5432

COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
postmaste 12256 postgres    3u  IPv4  49690      0t0  TCP *:5432 (LISTEN)
postmaste 12256 postgres    4u  IPv6  49691      0t0  TCP *:5432 (LISTEN)
postmaste 12256 postgres   10u  IPv4  49698      0t0  UDP 127.0.0.1:42404->127.0.0.1:42404
postmaste 12260 postgres   10u  IPv4  49698      0t0  UDP 127.0.0.1:42404->127.0.0.1:42404
postmaste 12261 postgres   10u  IPv4  49698      0t0  UDP 127.0.0.1:42404->127.0.0.1:42404
postmaste 12262 postgres   10u  IPv4  49698      0t0  UDP 127.0.0.1:42404->127.0.0.1:42404
postmaste 12263 postgres   10u  IPv4  49698      0t0  UDP 127.0.0.1:42404->127.0.0.1:42404
postmaste 12264 postgres   10u  IPv4  49698      0t0  UDP 127.0.0.1:42404->127.0.0.1:42404

Я заметил разницу в COMMAND (postmaste против postgres) но я действительно не знаю, почему работает service не читает postgresql.conf что я редактировал. Я бы предположил root мог прочитать это. Я бы хотел использовать service так как я могу легко настроить Postgres для запуска при загрузке с chkconfig postgresql on, но если мне придется использовать pg_ctrl тогда я думаю, мне придется добавить команду запуска в /etc/rc.local (что-нибудь не так?).

Это на t1.micro экземпляр 64-битного Amazon Linux AMI 2014.03 (последний на момент написания). И бег psql (PostgreSQL) 9.2.7 (устанавливается через yum).

Я не очень хорошо разбираюсь в Linux, поэтому приветствую любую помощь и советы! Спасибо!

На самом деле оказалось, что я не читал postgres.conf достаточно осторожно. Он читал (в комментариях):

#port = 5432                # (change requires restart)
# Note: In RHEL/Fedora installations, you can't set the port number here;
# adjust it in the service file instead.

Итак, я обнаружил, что файл для редактирования был /etc/rc.d/init.d/postgresql и я изменил настройку порта в следующих строках:

# Set defaults for configuration variables
PGENGINE=/usr/bin
PGPORT=55434
PGDATA=/var/lib/pgsql9/data
PGLOG=/var/lib/pgsql9/pgstartup.log
# Value to set as postmaster process's oom_adj
PG_OOM_ADJ=-17

Тогда я просто сделал service postgresql restart и он наконец начал слушать мои 55434 порт.