Instalação e Configuração no CentOS 7 do phpPgAdmin com Banco de Dados PostgreSQL noutro Servidor

Parte 1: Servidor PostgreSQL

O objetivo aqui é que o PostgreSQL seja utilizado a partir de um outro servidor com o Apache. Por isso, em uma VM instale o PostgreSQL com os comandos:

yum install postgresql-server
systemctl enable postgresql-server

Em seguida, edite as linhas do arquivo “/var/lib/pgsql/data/postgresql.conf” conforme abaixo para permitir o acesso ao BD através da rede:


listen_addresses = '*'

port = 5432

No arquivo “/var/lib/pgsql/data/pg_hba.conf” insira a linha abaixo:

host all all ip-do-servidor password

Isto permitirá que qualquer usuário cadastrado com senha no banco de dados possa acessar o servidor de dentro da rede “2001:db8:cafe::0/64”. No caso do firewall utilize os comandos:

firewall-cmd --get-service | grep postgresql
firewall-cmd --add-service=postgresql --permanent
firewall-cmd --reload
firewall-cmd --list-all
netstat -nap | grep 5432

Verifique o serviço com os comandos:

systemctl start postgresql-server
systemctl status postgresql-server
systemctl list-unit-files | postgresql-server

Para a configuração do banco de dados troque de usuário root para postgres e crie um usuário para o BD (createuser).

su postgres
createuser --interactive
exit

Exemplo de saída do comando “createuser”:

Enter name of role to add: administrador
Shall the new role be a superuser? (y/n) y

Também deve ser criado um banco de dados e um usuário para o BD com privilégios de administrador:

su postgres
psql
postgres=# CREATE DATABASE phppgadmin;
postgres=# ALTER USER administrador WITH PASSWORD 'minhasenha';
postgres=#ALTER ROLE "administrador" WITH LOGIN;
postgres=#\q
exit

Parte 2: Instalação e configuração do Apache para o phpPgAdmin

Para o phpPgAdmin, instale o Apache no servidor web com o comando abaixo:

yum install httpd mod_ssl php php-cli php-common php-gd php-mbstring php-pgsql php-pdo php-pear php-process php-soap php-xml php-xmlrpc

Para verificação e configuração do firewall utilize os comandos:

firewall-cmd --get-service | grep http
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Também edite o arquivo “/etc/httpd/conf/httpd.conf” para inserindo a linha:

ServerName apache.servers.com.br:80

Isto definirá no Apache qual o nome do servidor. Antes de configurar a webpage do phpPgAdmin lembre-se que todos os domain names utilizados pelo servidor web, incluindo o ServerName, devem ser configurados no Apache.
Após o download do phpPgAdmin, descompacte-o na pasta padrão do Apache “/var/www/html”. O próximo passo é configurar o site criando os arquivos de configuração do website em “/etc/httpd/conf.d/”.
Um exemplo de arquivo de configuração do website para porta 80 (“redireciona-phppgadmin.conf”) é mostrado abaixo:

<VirtualHost *:80>
ServerName phppgadmin.servers.com.br
ServerAlias www.phppgadmin.servers.com.br
Redirect permanent / https://phppgadmin.servers.com.br
</VirtualHost>

E, um exemplo de arquivo de configuração do website para porta 443 (“phppgadmin.conf”) é mostrado abaixo:

<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /var/www/certs/phppgadmin.crt
SSLCertificateKeyFile /var/www/certs/phppgadmin.key
ServerName phppgadmin.servers.com.br
ServerAlias www.phppgadmin.servers.com.br
DocumentRoot /var/www/html/phppgadmin
<Directory "/var/www/html/phppgadmin">
AddDefaultCharset UTF-8
Options FollowSymLinks Multiviews Indexes
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

Crie o certificado digital para o servidor web com o comando abaixo:

mkdir /var/www/certs
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /var/www/certs/phppgadmin.key -out /var/www/certs/phppgadmin.crt

Na pasta do phpPgAdmin edite o arquivo “config.inc.php” (abaixo) informando o servidor. Um exemplo deste arquivo encontra-se moodle da disciplina.

Exemplo de linhas editadas no arquivo “config.inc.php”:


// Display name for the server on the login screen
$conf['servers'][0]['desc'] = 'pg.servers.com.br';
// Hostname or IP address for server. Use '' for UNIX domain socket.
// use 'localhost' for TCP/IP connection on this computer
$conf['servers'][0]['host'] = 'pg.servers.com.br';

Parte 3: Configuração do SELinux par ao phpPgAdmin

Para a configuração do SELinux no servidor web instale os pacotes necessários conforme abaixo:

yum install policycoreutils-python setools-console

Habilite os arquivos de configuração dos websites e o diretório dos websites para utilizar o SELinux:

chcon -u system_u -r object_r -t httpd_config_t /etc/httpd/redireciona-phppgadmin.conf
chcon -u system_u -r object_r -t httpd_config_t /etc/httpd/phppgadmin.conf
chcon -R -u system_u -r object_r -t httpd_sys_content_t /var/www/html
chcon -R -u system_u -r object_r -t httpd_sys_rw_content_t /var/www/html/phppgadmin
chcon -R -u system_u -r object_r -t cert_t /var/www/certs
setsebool -P httpd_can_network_connect_db on

Por fim, não se esqueça habilitar o apache para ser executado na inicialização (“systemctl enable httpd”) e recarregar as configurações (“systemctl reload httpd”).

Para verificar a configuração utilize os comandos abaixo:.

No PostgreSQL:

psql -h ip-do-servidor -U administrador 

No Apache:

getsebool -a 
getsebool -a | grep httpd_can_network_connect_db
apachectl configtest
apachectl -k restart
httpd -v
httpd -V
httpd -S
tail /var/log/httpd/error_log

FIM!

Publicado porDiego dos Passos

Olá a todos, eu sou o Diego. :) Atualmente sou professor do IFPE no campus de Jaboatão dos Guararapes. Neste website vocês encontrarão todas as informações relacionadas as atividades exercidas por mim na área de TI. O meu currículo lattes é: http://lattes.cnpq.br/4074265134616142 Contatos pelo e-mail: diego.silva@jaboatao.ifpe.edu.br Este e-mail é somente para atividades profissionais. :)

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *