Postgresql não está escutando na porta correta usando o comando service

1

Em meu /var/lib/pgsql9/data/postgresql.conf , adicionei port = 55434 e, se eu iniciar o Postgres com /usr/bin/pg_ctl start -D /var/lib/pgsql9/data/ como o usuário postgres , o Postgres estará ouvindo a porta correta 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

Mas se eu tentar com service postgresql start como root , então ele escuta o padrão 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

Percebi a diferença em COMMAND ( postmaste vs postgres ), mas não sei por que executar service não lê postgresql.conf que editei. Eu teria assumido root poderia lê-lo. Eu gostaria de usar service , pois eu posso facilmente definir o Postgres para ser executado na inicialização com chkconfig postgresql on , mas se eu tiver que usar pg_ctrl , eu acho que terei que adicionar o comando start em /etc/rc.local (qualquer coisa errado com isso?).

Isso está em uma instância t1.micro do Amazon Linux AMI 2014.03 de 64 bits (mais recente a partir da gravação). E executando psql (PostgreSQL) 9.2.7 (instalado via yum ).

Eu não sou muito bom com o Linux, então qualquer ajuda e gorjeta são bem-vindas! Obrigado!

    
por hobbes3 01.04.2014 / 07:38

1 resposta

1

Na verdade, não li o postgres.conf com cuidado. Leia (nos comentários):

#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.

Portanto, descubro que o arquivo a ser editado era /etc/rc.d/init.d/postgresql e alterei a configuração da porta nas seguintes linhas:

# 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

Então eu simplesmente fiz service postgresql restart e ele finalmente começou a escutar minha 55434 port.

    
por 10.04.2014 / 07:02