Instalando e configurando o PostgreSQL 9 no cPanel/WHM
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.