quinta-feira, 13 de agosto de 2009

Instalando e configurando o PhpPgAdmin no Ubuntu 7.10

Instalando e configurando o Apache2 + PHP5 + PostgreSql 8.2 + PhpPgAdmin

Quase tão popular como o MySql, hoje o PostgreSQL é um dos SGBD (sistema gerenciador de banco de dados) de código aberto mais avançados, contando com recursos como:
* consultas complexas
* chaves estrangeiras
* integridade transacional
* controle de concorrência multi-versão
* suporte ao modelo híbrido objeto-relacional
* trigger
* views
* stored procedures em várias linguagens

Vamos para a instalação. Abra um terminal console como root e siga os passos abaixo:
1. Primeiro certifique-se que você está com uma sources list atualizada. Atualize sua lista de pacotes:
# apt-get update

2. Agora vamos instalar o postgree propriamente dito.
# apt-get install postgresql postgresql-contrib postgresql-doc postgresql-client

No Ubuntu este comando resultará na instalação:
* Dos últimos pacotes do postgresql (postgresql-8.2 )
* No Pacote de facilidades adicionais para postgree (postgresql-contrib-8.2)
* Na documentação para para o gerenciamento de bases do Postgree
* Um modo cliente para o PostgreSql (última versão)

Obs.: Não se prenda exclusivamente a este tutorial pois as suas necessidades podem ser um tanto diferentes. Sempre antes instalar algum pacote, verifique se é mesmo o pacote que você quer. Por exemplo, fazendo uma pesquisa do tipo:
# apt-cache search postgresql

você encontrará uma infinidade de pacotes relacionadas a postgresql disponíveis para instalação e bem ao lado de cada pacote uma breve descrição de cada. Isso serve para vocẽ procurar e gerenciar melhor a instalação destes pacotes.
Após a instalação o Postgree adicionou automaticamente um usuário ao Sistema chamado “postgres” com senha “postgres” ou em branco. Para alterar a senha deste usuário podemos efetuar o comando:
# passwd postgres

Este usuário é que possui acesso administrativo a todos arquivos, console “psql” e banco PostgreSql.
Para entrar no console psql, entre como usuário postgres:
# su postgres

digite a senha e em seguida abra o console:
# psql

para alterar a senha do usuário administrador do banco de dados do próprio banco de dados PostgreSql digite a sintaxe:
# ALTER USER postgres WITH PASSWORD 'senha';
Esta sintaxe serve para alterar a senha de qualquer usuário dentro do console psql. Saia do console:
# \q
# exit

Agora, imagine a situação de vários sistemas de programadores diferentes no mesmo computador, cada programador e cada sistema possui sua própria base. Se um programador possui o acesso postgres, dentro do console ele tem acesso a todas as bases e tabelas. É muito importante o administrador do servidor se preocupar com a autenticidade, confiabilidade e segurança dos dados do servidor por isso seria interessante cada banco de dados possuir um usuário administrativo diferente para cada programador. Mas neste artigo não irei misturar, por enquanto apenas o usuário postgres nos interessa para instalar o banco PostgresSql e o PhpPgAdmin.

A configuração padrão do PostgreSQL faz com que apenas conexões locais (via soquete UNIX) sejam permitidas. Vamos alterar isso no arquivo /etc/postgresql/8.2/main/postgresql.conf . Edite o arquivo e procure a linha
listen_addresses = 'localhost'

altere para:
listen_addresses = '*'

Após salvar o arquivo, será preciso reiniciar o PostgreSql (não basta apenas fazer um "reload").
# /etc/init.d/postgresql-8.2 restart

Agora vamos editar o arquivo /etc/postgresql/8.2/main/pg_hba.conf. Este arquivo controla: quais hosts têm permissão de conexão, como os clientes se autenticam, quais usuários do PostgreSQL podem ser usados e que bancos de dados eles podem acessar. A sintaxe é a seguinte:
# Tipo Base de Dados Usuário IP Mascara Método
Para o nosso objetivo que é o uso da Aplicação Web PhpPgAdmin bastou garantir as linhas padrões:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all ip_do_servidor/32 md5

Estas especificações especificam na ordem:
* host: Define regras para protocolo TCP/IP, essa opção pode ser host, local ou hostssl
* all: Define qual banco dados que essa regra se aplica, se definido all será para todos.
* all: Define qual usuário tem permissão para usar essa regra, se definido all será para todos.
* ip_do_Servidor/32: Define um ip que pode se conectar ao servidor. Poderia ser uma faixa também ex: 192.168.1.0/24: Padrão CIDR, define qual faixa de ip’s podem se conectar no servidor através do padrão CIDR.
* md5: Método de autenticação, md5 padrão, trust para aceitar, reject para negar e mais algumas outras opções.

Mas você pode também garantir e restringir ips e usuários para acessos. Um artigo que me ajudou bastante foi: http://www.icewall.org/~hjort/pgsql/naoconecta.htm
Depois de garantir e configurar todos seus acessos no pg_hba.conf saia do arquivo.

Para a instalação do PhpPgAdmin o Apache integrado com o Php é pré-requisito fundamental.
3. Instalando o apache 2:
# apt-get install apache2

Verifique no seu browser seu funcionamento pelo endereço http://localhost/ que ele já está ativo!
Por padrão a pasta onde ficam alocados os sites no seu servidor é "/var/www/" .

4. Instalando o php 5:
# apt-get install php5

Por padrão ao instalar o php5 ele também instala o pacote "libapache2-mod-php5", para que o apache reconheça páginas ".php"

Reestarte o serviço do apache para que estas alterações sejam reconhecidas!
# /etc/init.d/apache2 restart

Instalemos agora o PhpPgAdmin. O PhpPgAdmin é uma ferramenta de administração Web para as bases do PostgreSql. É perfeito para serviços de hospedagem.
# apt-get install phppgadmin

5. Pacotes oportunistas
Aqui também cabe a instalação de pacotes oportunistas que possam melhorar ainda mais o servidor como os pacotes:
* php5-mhash (mhash é uma biblioteca que provê uma interface com um grande número de algoritmos de hash. Um exemplo comum de algoritmo hash é o MD5, que cria um número a partir de um arquivo, para posterior verificação de autenticidade das cópias deste arquivo.)
* php5-odbc (Graças ao ODBC, se tornou possível a aplicações escritas em linguagens diferentes utilizar a mesma lógica para interagir com bancos de diferentes fornecedores.)
* php-pear (Rapositório de extensões e Aplicações Php)
# apt-get install php5-mhash php5-odbc php-pear

6. Agora os cabeçalhos e os módulos PostgreSql para o Php5
# apt-get install php5-pgsql libpq-dev

O módulo userdir é o que habilita um usuário ter seu site dentro da sua pasta pessoal. É interessante a habilitação deste módulo no apache. Mas aqui se torna opcional.
# a2enmod userdir
# /etc/init.d/apache2 force-reload

7. Criar link simbólico para o diretório instalado phppgadmin
# ln –s /usr/share/phppgadmin/ phppgadmin
# /etc/init.d/apache2 restart

8. Configurar phppgadmin
Verifique se o módulo auth-pgsql está instalado
# cd /etc/apache2/mods-available
# ls auth-pgsql /*verificar se ele está aí – auth-pgsqt*/

Ative o módulo editando o arquivo /etc/apache2/apache2.conf Adicione ao fim do arquivo nos includes a linha:
Include /etc/phppgadmin/apache.conf

Para liberar o phppgadmin para acesso a maquinas externas
#gedit /etc/phppgadmin/apache.conf

Procure por:
order deny,allow
deny from all
allow from 127.0.0.0/255.0.0.0

Para:
order deny,allow
#deny from all (ficou em comentário)
#allow from 127.0.0.0/255.0.0.0 (ficou em comentário)
allow from all

Pronto!
Para testar o PhpPgAdmin, acesse http://localhost/phppgadmin
você perceberá que o acesso com o usuário postgres está bloqueado. Por motivos de segurança este acesso não é permitido via browser com o usuário postgres, então você terá de criar outro. Mas pode ser que você também precise ter acesso a todas as bases com este usuário então se este for o seu caso abra o arquivo /usr/share/phppgadmin/conf/config.inc.php e altere a linha
$conf['extra_login_security'] = true;

para
$conf['extra_login_security'] = false;

Reestarte o PostgreSql e atualize o endereço no browser.
#/etc/init.d/postgresql-8.2 restart

Referências:
http://www.fernandocosta.eti.br/?p=12
http://www.migrandoaplicacoes.com.br/index.php?acao=verartigo&warTitulo=Interfaces%20para%20Bancos%20de%20Dados
http://www.nabble.com/Como-configurar-o-Postgre-no-Fedora-Core-6-td15033094.html
http://www.postgresql.org/
http://postgresql.ribafs.net/
http://malaprontalabs.wordpress.com/
http://portal.ledes.net/wiki/index.php/Instalando_o_PostgreSQL_no_Ubuntu_Server
http://pt.wikipedia.org/wiki/PostgreSQL
http://www.icewall.org/~hjort/pgsql/naoconecta.htm
http://scriptbrasil.com.br/forum/index.php?showtopic=82759
http://postgresql.ribafs.net/node/29

Creditos: igorpalacio.blogspot.com

Um comentário: