Instalação e configuração manual do PostgreSQL no Windows

Categoria: Artigos
Categoria Pai: ZØST
Acessos: 12354
Imagem meramente ilustrativa

Se você leu o artigo sobre Instalação e configuração manual do MySQL no Windows, vai notar que este artigo usa a mesma estrutura e basicamente as mesmas frases usadas no artigo sobre o MySQL. O motivo disso é simples: preguiça! Não se preocupe! Apesar de eu estar copiando, colando e adaptado o conteúdo deste artigo, ele ficará tão facilmente entendível quanto o original.

Apesar de este artigo tratar da instalação manual e configuração do PostgreSQL em ambiente Windows, nada impede que o leitor execute os mesmos passos no Linux, alterando, claro, comandos e caminhos utilizados aqui. Por falar em Windows, eu optei por expor a instalação e configuração em um ambiente Windows de 32 bits, mas você pode, com toda certeza, realizar o mesmo procedimento em um Windows de 64 bits. Esteja avisado, entretanto, que os binários usados neste artigo são todos de 32 bits também. Caso queira fazer uma instalação totalmente 64 bits (PostgreSQL 64 bits e em Windows 64 bits) baixe a versão correta do PostgreSQL diretamente em seu site.

O passo-a-passo

  1. Baixe a versão em zip do PostgreSQL diretamente em seu site. Por exemplo, a versão que estou usando neste artigo é esta:

    https://get.enterprisedb.com/postgresql/postgresql-10.1-3-windows-binaries.zip

    Este arquivo tem cerca de 200MB e contém tudo que é necessário para executar uma instância do PostgreSQL em qualquer computador com Windows.

  2. Crie uma estrutura de pastas para o PostgreSQL. Como estou instalando uma versão de 32 bits eu costumo chamar a pasta do PostgreSQL de PostgreSQLx32, mas fica a seu critério dar o nome que bem entender a esta pasta. Você inclusive pode colocar a estrutura interna de pastas, dentro da pasta de uma de suas aplicações, coisa que eu não recomendo de jeito nenhum por motivos de organização. O ideal é criar a pasta do PostgreSQL em um local que sofra backups periódicos (um segundo HD, por exemplo). Em suma, crie uma estrutura de pastas semelhante a da imagem abaixo:



    A pasta bin, conterá todos os executáveis que o PostgreSQL utiliza para funcionar, dentre eles está o pg_ctl.exe, que é nada mais nada menos que o próprio servidor do PostgreSQL. É este executável que é carregado como serviço do Windows.

    A pasta data é a pasta onde ficam todos os seus bancos de dados registrados no PostgreSQL. Ao contrário de alguns outros bancos de dados, o PostgreSQL não guarda os dados em um único arquivo por banco. Ele tem uma estrutura própria que fica dentro da pasta data, juntamente com outros arquivos de suporte. Você não precisa se preocupar com o conteúdo desta pasta, apenas entenda que seus dados estão dentro dela de uma forma opaca, isto é, você não consegue ver as informações de forma simples, apenas usando o próprio PostgreSQL que "sabe" como ler tais arquivos. Se você tem um sistema de backup de pastas a recomendação é realizar o backup da pasta completa do PostgreSQL (no caso PostgreSQLx32), no entanto, o backup apenas da pasta data é suficiente para proteger os dados de todos os bancos.

    A pasta lib contém bibliotecas adicionais requeridas pelos executáveis contidos na pasta bin.

    A pasta log contém basicamente arquivos de log que o PostgreSQL gera durante sua execução. A análise dos logs contidos nesta pasta podem ajudar na resolução de problemas de execução do PostgreSQL.

    A pasta share contém outros arquivos utilizados pelo PostgreSQL.


     
  3. A partir do arquivo zip baixado no passo 1, copie todo o conteúdo das pastas bin, lib e share para as pastas correspondentes na sua estrutura de pastas. A pasta log de sua estrutura estará vazia, bem como a pasta data. Os arquivos da pasta data serão criados posteriormente a partir da inicialização do cluster do PostgreSQL (próximo passo);

  4. Usando um prompt de comando ou programaticamente, mude para a pasta bin da sua estrutura de pastas (criada no passo 2) e execute a linha de comando abaixo. No exemplo eu considerei que a pasta do PostgreSQL é C:\PostgreSQL, mas você deve alterar isso de acordo com sua realidade:

    initdb -U postgres -A password -E utf8 -W -D "C:\PostgreSQLx32\data"

    Este comando vai inicializar a pasta data com a estrutura interna de pastas e arquivos usados pelo PostgreSQL. De forma simplificada as opções desta linha de comando significam:

    • -U postgres: cria o superusuário de nome postgres
    • -A password: informa que a autenticação dos usuários será feita por meio de uma senha
    • -E utf8: informa que a codificação padrão será UTF-8
    • -W: informa que a senha do superusuário será informada manualmente. Com esta opção a senha do superusuário será pedida diretamente no prompt após a execução do comando. Ao digitar a senha, nenhum caractere será emitido, nem mesmo os tradicionais asteriscos (isso é normal). Será pedida também a confirmação da senha
    • -D "C:\PostgreSQLx32\data": esta opção informa que a estrutura de pastas e arquivos deve ser criada dentro da pasta C:\PostgreSQLx32\data. O uso de aspas duplas é importante, principalmente se o caminho da sua estrutura de pastas contiver espaços em branco nos nomes dos diretórios

  5. Usando um prompt de comando ou programaticamente, mude para a pasta bin da sua estrutura de pastas (criada no passo 2) e execute a linha de comando abaixo. No exemplo eu considerei que a pasta do PostgreSQL é C:\PostgreSQL, mas você deve alterar isso de acordo com sua realidade:

    pg_ctl register -N "PostgreSQLx32" -U "NT AUTHORITY\NetworkService" -D "C:\PostgreSQLx32\data" -w -o "-p 5433"

    Este comando vai instalar o serviço do PostgreSQL, de forma que ele possa ser iniciado e parado como qualquer serviço do Windows. De forma simplificada as opções desta linha de comando significam:

    • register: instrui o comando que estamos realizando o registro de um serviço para o PostgreSQL
    • -N "PostgreSQLx32": informa que o nome do serviço será PostgreSQLx32. Use aspas duplas, principalmente se o nome do seu serviço contiver espaços em branco (não recomendável)
    • -U "NT AUTHORITY\NetworkService": informa que o serviço sendo instalado deverá ser executado pelo usuário especificado. O formato a ser usado aqui é "DOMAIN\username". É recomendável manter exatamente como no exemplo, de forma que o serviço seja executado pelo usuário "Serviço de rede" (Network Service). Use aspas duplas sempre, para evitar problemas
    • -D "C:\PostgreSQLx32\data": informa ao serviço onde estão os arquivos de dados a serem gerenciados pelo PostgreSQL
    • -w: instrui o comando a só retornar quando a operação terminar (apenas use, é bom)
    • -o "-p 5433": a opção -o permite que opções adicionais sejam passadas para o comando. No caso, usamos a opção adicional -p para indicar a porta que o PostgreSQL usará, portanto, esta opção como um todo, dentro do nosso exemplo, serve para configurar a porta desta instância do PostgreSQL como 5433 (a porta padrão do PostgreSQL é 5432)

  6. Usando um prompt de comando ou programaticamente, execute a seguinte linha de comando, considerando que o nome do serviço escolhido no passo anterior foi PostgreSQLx32:

    net start PostgreSQLx32

    Este comando do próprio Windows inicia o serviço que foi instalado no passo anterior. Você pode também usar a janela de serviços do Windows para iniciar e parar o serviço do PostgreSQL sem qualquer problema!

Neste momento deve haver uma instância funcional do PostgreSQL escutando na porta 5433. Esta instância já está aceitando conexões e pode ser acessada utilizando-se qualquer ferramenta, como o próprio pgAdmin, que vem no zip que você baixou no passo 1.

Conclusão

Sim, lendo o artigo por alto pode parecer que é muito complexo, mas entenda que o artigo é didático. Quando você executar os passos e entender o que está fazendo, vai perceber que é uma simples "receita de bolo". Tudo que foi explicado aqui pode ser automatizado de alguma forma, assim você pode usar seus sistema de instalação para instalar uma instância do PostgreSQL sem qualquer problema!