Instalando e configurando o PostgreSQL 9 no cPanel/WHM

De Wiki Integrator do Brasil
Edição feita às 20h54min de 13 de abril de 2015 por Integratorhost (disc | contribs)

(dif) ← Edição anterior | ver versão atual (dif) | Versão posterior → (dif)
Ir para: navegação, pesquisa

O cPanel opera na versão 8.x no CentOS 6. Para instalar uma versão mais recente, o script de instalação padrão do painel não funciona. O PostgreSQL para este tutorial está na versão 9.4 e se ajustará ao seu cPanel. Os comandos devem ser executados com o usuário root SSH, de preferência com básicos conhecimentos em Linux e editor de texto simples. O suporte da Integrator e nem da cPanel/WHM são responsáveis por personalizações de instalações e configurações de seus serviços.

Os passos

1. Baixe as bibliotecas do PostgreSQL 9.4 oficial para o CentOS 6.x. Como exemplo, estamos baixando a versão PostgreSQL 9.4:
rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm

2. Instale o PostgreSQL 9.4:
yum install postgresql94-server postgresql94

3. Inicie o DB:
service postgresql-9.4 initdb

4. Após instalar, crie os atalhos referentes ao que o cPanel reconhece:
ln -s /var/lib/pgsql/9.4/data /var/lib/pgsql
ln -s /var/lib/pgsql/9.4/backups /var/lib/pgsql

5. Configure o serviço com o comando chkconfig:
chkconfig postgresql-9.4 on

6. Inicie o serviço:
service postgresql-9.4 start

7. Para compilar o PHP com a versão mais atual do PostgreSQL, precisa instalar a versão devel. Isso adicionará os fontes para o PHP em /usr/pgsql-9.4/include/.
yum groupinstall "PostgreSQL Database Server PGDG" -y
yum install postgresql94-devel.x86_64 -y

8. Para a integração com cPanel/WHM:
cd /usr/pgsql-9.4/bin/; for f in *; do echo $f; [ -e /usr/bin/$f ] && mv /usr/bin/$f /usr/bin/$f.8; ln -s $(pwd)/$f /usr/bin/$f; done

cd /var/lib/pgsql; ln -s 9.4/backups; ln -s 9.4/data; ln -s 9.4/pgstartup.log
cd /usr/pgsql-9.4/lib; ln -s libpq.so.5.7 libpq.so

ln -s /usr/pgsql-9.3/bin/pg_config /usr/bin

8.1 Ignore erros básicos que houver se forem atalhos já existentes.

9. Assim que instalado, no cPanel/WHM como root logado
9.1. Vá em "Home > SQL Services > Configure PostgreSQL"
9.2. Clique em "Install config"
9.3. Ainda no WHM, coloque a senha no usuário postgres

O WHM configurará o arquivo /root/.pgpass com a senha que adicionou no usuário "postgres". Isso permitirá executar comandos "psql" dentro do terminal SSH sem digitar a senha do usuário "postgres".

10. Atualize o phpPgAdmin:
/usr/local/cpanel/bin/updatephppgadmin --force

11. Se desejar o acesso remoto sem o usuário "postgres" (recomendado por questões de segurança), execute:

echo "local samerole all md5
host samerole all 127.0.0.200 255.255.255.255 pam pamservice=postgresql_cpses
host samerole all 127.0.0.1 255.255.255.255 md5
local all all md5
host all all 0.0.0.0/0 md5" > /var/lib/pgsql/data/pg_hba.conf

12. Edite também o arquivo /var/lib/pgsql/data/postgresql.conf para que o acesso remoto sem usuário postgres funcione:
listen_addresses = '127.0.0.200, *' # what IP address(es) to listen on;

cp -p /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf.bk
sed -i "s#.*listen_addresses.*#listen_addresses = '127.0.0.200, *'#" /var/lib/pgsql/data/postgresql.conf

11.1. Acesso remoto com o usuário "postgres"* também (não recomendado por questões de segurança):

echo "local all all md5
host all all 127.0.0.1 255.255.255.255 md5
host all all 0.0.0.0/0 md5
host all all  ::1/128 md5

host all postgres  ::1/128 md5" > /var/lib/pgsql/data/pg_hba.conf

12.1. Edite o arquivo /var/lib/pgsql/data/postgresql.conf com usuário "postgres" como acesso remoto, alterando:

cp -p /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf.bk
sed -i "s#.*listen_addresses.*#listen_addresses = '*' #" /var/lib/pgsql/data/postgresql.conf

13. Depois, configure o template de pg_hba.conf para que o painel não o altere em atualizações futuras:

cp /var/lib/pgsql/data/pg_hba.conf /var/cpanel/templates/postgres/main.local


IMPORTANTE: Usuário postgres com acesso remoto é considerado uma falha grave de segurança e problemas que vier a ter não tem como responsabilidade nosso suporte ou este tutorial por conta de aviso expresso.