Apache + SSL + PostgreSQL + Mod_auth_pgsql + PHP
Colegas! Sem tempo? Isso é fato. Administre ele, tudo dará certo! Instalando o Apache com SSL, autenticando no PostgreSQL, rodando PHP e armazenando dados do PHP no PostgreSQL. Tentei ser o menos técnico possível, "o que não sou é técnico". Assim de maneira simples e eficiente configuramos um servidor Web.
Parte 2: O banco de dados PostgreSQL e suas configurações
Bom, vamos por a mão na massa?
Primeiro o banco PostgreSQL. Informe no "configure" o local de instalação do banco:
# cd postgresql-8.1.3
# ./configure --prefix=/usr/local/pgsql
# make
# make install
Se tudo tiver dado certo, você vai estar com o PostgreSQL instalado na sua máquina. Os binários vão estar instalados em /usr/local/pgsql/bin/, as libs em /usr/local/pgsql/lib/, os docs em /usr/local/pgsql/doc/, as manpages em /usr/local/pgsql/man.
Agora vamos adicionar o usuário e grupo para o PostgreSQL poder rodar:
# groupadd postgres
# useradd -g postgres -s /bin/bash -d /var/lib/pgsql postgres
# mkdir -p /var/lib/pgsql/data
# chown -R postgres:postgres /var/lib/pgsql/
Iniciando o PostgreSQL:
# su - postgres
$ initdb -D /var/lib/pgsql/data
$ postmaster -i -D /var/lib/pgsql/data >logfile 2>&1 &
Se tudo ocorreu perfeitamente, você poderá executar o comando <ps ax> e o PostgreSQL estará rodando.
$ ps ax
17544 pts/3 S 0:00 /usr/bin/postmaster -i -D /var/lib/pgsql/data
17545 pts/3 S 0:00 postgres: stats buffer process
17547 pts/3 S 0:00 postgres: stats collector process
Criando o banco de dados para o usuário postgres:
$ /usr/local/pgsql/bin/createdb postgres
Logar no banco e efetuar algumas alterações. A senha é nula como default:
$ /usr/local/pgsql/bin/psql -U postgres
postgres=# alter user postgres with encrypted password 'minha-senha';
Você alterou a senha do administrador do banco que é o usuário postgres, mude a parte 'minha-senha' para uma senha de sua preferência.
Agora vamos preparar o PostgreSQL para autenticar o Apache.
Criamos uma tabela no banco com a seguinte estrutura:
postgres=# CREATE TABLE usuarios (user VARCHAR(20), pass VARCHAR(20));
postgres=# \q
O armazenamento de dados na tabela é tarefa de qualquer programa que tenha acesso ao PostgreSQL.
Lembramos que no campo "pass" deve ser armazenado senhas encriptadas usando a função crypt().
Segue um exemplo para facilitar nossa "receita de bolo"...
$ touch /usr/local/pgsql/apache/revela.pl
Editar o arquivo e acrescentar o seguinte conteúdo:
Primeiro o banco PostgreSQL. Informe no "configure" o local de instalação do banco:
# cd postgresql-8.1.3
# ./configure --prefix=/usr/local/pgsql
# make
# make install
Se tudo tiver dado certo, você vai estar com o PostgreSQL instalado na sua máquina. Os binários vão estar instalados em /usr/local/pgsql/bin/, as libs em /usr/local/pgsql/lib/, os docs em /usr/local/pgsql/doc/, as manpages em /usr/local/pgsql/man.
Agora vamos adicionar o usuário e grupo para o PostgreSQL poder rodar:
# groupadd postgres
# useradd -g postgres -s /bin/bash -d /var/lib/pgsql postgres
# mkdir -p /var/lib/pgsql/data
# chown -R postgres:postgres /var/lib/pgsql/
Iniciando o PostgreSQL:
# su - postgres
$ initdb -D /var/lib/pgsql/data
$ postmaster -i -D /var/lib/pgsql/data >logfile 2>&1 &
Se tudo ocorreu perfeitamente, você poderá executar o comando <ps ax> e o PostgreSQL estará rodando.
$ ps ax
17544 pts/3 S 0:00 /usr/bin/postmaster -i -D /var/lib/pgsql/data
17545 pts/3 S 0:00 postgres: stats buffer process
17547 pts/3 S 0:00 postgres: stats collector process
Criando o banco de dados para o usuário postgres:
$ /usr/local/pgsql/bin/createdb postgres
Logar no banco e efetuar algumas alterações. A senha é nula como default:
$ /usr/local/pgsql/bin/psql -U postgres
Welcome to psql 8.1.1, the PostgreSQL interactive terminal.
Type: copyright for distribution terms
h for help with SQL commands
? for help with psql commands
g or terminate with semicolon to execute query
q to quit
postgres=#
Você já está logado no banco, agora alterar a senha do usuário postgres:
postgres=# alter user postgres with encrypted password 'minha-senha';
Você alterou a senha do administrador do banco que é o usuário postgres, mude a parte 'minha-senha' para uma senha de sua preferência.
Agora vamos preparar o PostgreSQL para autenticar o Apache.
Criamos uma tabela no banco com a seguinte estrutura:
postgres=# CREATE TABLE usuarios (user VARCHAR(20), pass VARCHAR(20));
postgres=# \q
O armazenamento de dados na tabela é tarefa de qualquer programa que tenha acesso ao PostgreSQL.
Lembramos que no campo "pass" deve ser armazenado senhas encriptadas usando a função crypt().
Segue um exemplo para facilitar nossa "receita de bolo"...
$ touch /usr/local/pgsql/apache/revela.pl
Editar o arquivo e acrescentar o seguinte conteúdo:
#!/usr/bin/perl
print crypt($ARGV[0],"dl") . "n";
print crypt($ARGV[0],"dl") . "n";
Salve o arquivo e atribua execução:
# chmod +x /usr/local/pgsql/apache/revela.pl
Execute:
# /usr/local/pgsql/apache/revela.pl teste
dl8hesA6pYtUIn
Observe que a senha "teste" deve ser armazenada como "dl8hesA6pYtUIn" no campo "pass".
O exemplo de perl nos dá noção do que fazer. Esta função você tem disponível em várias linguagens, como perl, php, python, e outras...
Existem mais configurações e segurança ao banco, porém o que pretendemos não é somente o banco, então seguimos em frente. Essas configurações já são suficientes para nosso objetivo.
httpd could not be started
e não inicia.
tá tentei também apachectl-mod_ssl start e até com startssl.
Quando tento com start ele roda mas não reconhece https, e com startssl também dá o mesmo erro quando rodo apachectl startssl
Estou vasculhando a net atrás de uma solução... mas parece que isso só acontece comigo! hehe!