Guia Completo do Apache - Parte 1
Por Leandro Totino Pereira
Link: http://www.bestlinux.com.br/index.php?option=com_content&task=view&id=2678&Itemid=117&limit=1&limitstart=0
Nessa primeira série de vários artigos que abordarei o webserver Apache, vou explicar a instalar, configurar o servidor web Apache integrando-o com o PHP, MySQL e o PostgreSQL testando com exemplos práticos, também irei descrever as principais opções do arquivo de configuração httpd.conf e como elas funcionam para que você leitor possa configurar o Apache de acordo com sua necessidade. O que é o Apache?
O Apache pode ser instalado em sistemas Windows, Novell Netware, OS/2 e UNIX* (Linux, FreeBSD, etc).
Um resumo da História do Apache
Pontos fortes do Apache:
- Uma grande disponibilidade de ferramentas de segurança como o modsecurity;
- Personalização de logs do Apache;
- Analisadores de logs como o Webalizer e o Awstats;
- Suporte linguagens PHP e CGI, além de ter disponíveis emuladores de dotnet que geralmente são páginas que só rodam no IIS (Internet Information Services, da Microsoft) e também pode emular Tomcat com mod_jk para aceitar páginas em Java;
- Hospedando mais que um website com URL diferente com o Virtual Hosts;
- Suporte a proxy; Restringe acesso com login e senha com o método de autenticação;
- Permissões de acesso e de bloqueio em diretórios, arquivos e endereço da URL;
- Suporte a banco de dados MySQL,PostgreSQL e outros ;
Módulos DSO (Dynamic Shared Objects) permitem adicionar/remover funcionalidades e recursos sem necessidade de recompilação do Apache.
Concluindo o Apache é extremamente configurável, seguro, e com alta disponibilidade de serviços que podem ser implementados.
Mudando o Banner do Apache
Download do Apache:
http://httpd.apache.org/download.cgi
Vamos extrair o pacote:
#tar -zxvf httpd-2.2.3.tar.gz
Entre na pasta httpd-2.2.3/include e edite a header "ap_release.h":
#define AP_SERVER_BASEVENDOR "Apache Software Foundation"
#define AP_SERVER_BASEPROJECT "Apache HTTP Server"
#define AP_SERVER_BASEPRODUCT "Apache"
#define AP_SERVER_MAJORVERSION_NUMBER 2
#define AP_SERVER_MINORVERSION_NUMBER 2
#define AP_SERVER_PATCHLEVEL_NUMBER 3
#define AP_SERVER_DEVBUILD_BOOLEAN 0
Modifiquei para isso, mas fica seu critério colocar o nome e a versão que quiser!
#define AP_SERVER_BASEVENDOR "Microsoft Software Foundation"
#define AP_SERVER_BASEPROJECT "Microsoft-IIS"
#define AP_SERVER_BASEPRODUCT "Microsoft-IIS"
#define AP_SERVER_MAJORVERSION_NUMBER 6
#define AP_SERVER_MINORVERSION_NUMBER 0
#define AP_SERVER_PATCHLEVEL_NUMBER 0
#define AP_SERVER_DEVBUILD_BOOLEAN 0
Depois disso basta instalar o pacote normalmente!
ServerSignature Off
Not Found
The requested URL /wsd was not found on this server.
ServerTokens prod: Revela somente o nome do webserver .
Exemplo: Apache;
ServerTokens Min: Esta opção revela: nome do webserver e sua versão.
Exemplo: Apache/1.3.22;
ServerTokens OS: Esta opção revela o nome de seu webserver, Versão e o Sistema Operacional.
Exemplo: Apache/1.3.22 (Unix);
ServerTokens Full: Esta opção revela nome, Versão, Sistema Operacional e os Modulos do servidor.
Exemplo: Apache/1.3.22 (Unix) mod_ssl/6.0.0 OpenSSL/0.9.7e;
Recomendo usar a diretiva "ServerTokens prod" para melhor segurança!
Depois de instalado e configurado, para testar use o lynx:
lynx <nome do seu server>
Quando aparecer sua página aperte igual, irá aparecer uma tela parecida como essa:

Reparem que o servidor está como "Microsoft-IIS" e não como "Apache"!
Com o comando "nmap -A" aparecerá:
Reparem que está como "http?", ele não identificou o verdadeiro nome e a versão e logo abaixo ele identifica o servidor como:"nServer:x20Microsoft-IIS"
Instalação do Apache
O servidor Apache é o mais bem sucedido servidor web livre, mais de 60% dos servidores usam Apache como servidor web.
As características principais do Apache são ter compatibilidade com as principais plataformas do mercado: Linux, Windows, *nix e outras.
Vamos a instalação do Apache, vou usar flags para melhor organização em meu sistema!
Como nós extraímos o pacote antes, na hora de mudar o banner, não precisamos extrair de novo o pacote, vamos direto a compilação.
#cd httpd-2.2.3
#./configure
--mandir=/usr/man
--bindir=/usr/bin
--sbindir=/usr/sbin
--libexecdir=/usr/libexec/apache
--datadir=/var/www
--sysconfdir=/etc/apache
--libdir=/usr/lib
--includedir=/usr/include
--localstatedir=/var/www
--enable-so
--enable-rewrite
--enable-cgi
--enable-authz-owner
--enable-cache
--enable-deflate
--enable-proxy
--enable-cgid
--enable-ssl
--enable-disk-cache
--enable-speling
Decrição dos parâmetros usados:
--mandir=/usr/man:local onde serão guardados os manuais (man's) do apache
--bindir=/usr/bin: local onde serão instalados os executáveis do diretório bin;
--sbindir=/usr/sbin: local onde serão instalados os executáveis do diretório sbin;
--libexecdir=/usr/libexec: local onde serão instalados os executáveis do diretório libexec;
--datadir=/var/www: local onde serão instalados os dados do Apache;
--sysconfdir=/etc/apache: local onde serão instalados os arquivos de configuração;
--libdir=/usr/lib: local onde serão instaladas as bibliotecas do diretório lib;
--includedir=/usr/include: local onde serão instalados os headers do diretório include;
--localstatedir=/var: local onde serão instalados os arquivos do diretório var(arquivos de logs);
--enable-rewrite: Usado para reescrever URLs;
--enable-cgi: Usado para ativar suporte a execução de scripts CGI;
--enable-info: Usado para enviar informações do Apache;
--enable-cache: Ativa suporte a cache de páginas;
--enable-deflate: Ativa suporte a compresão de páginas;
--enable-proxy: Ativa um servidor Proxy;
--enable-ssl: Ativa suporte a ssl;
--enable-so: Carrega os módulos na inicialização ou na reinialização do Apache;
--enable-cgid: Ativa suporte à scripts de CGI, usando um daemon de CGI externo;
--enable-authz-owner: Ativa suporte a arquivos para autenticação;
--enable-disk-cache: Ativa suporte a cache no disco rígido, ele age em conjunto com o mod_proxy e mod_cache;
--enable-speling: Ativa suporte a correção de URLs, caso o cliente tenha esquecido uma letra ou ter escrevido errado na URL.
#make
#checkinstall
Vamos adicionar o usuário que o Apache, vai usar para executar o webserver:
#groupadd -g 80 apache
#useradd -u 80 -g apache -c "Apache" -d /var/www -s /bin/false apache
Vamos configurar o Apache, para isso vamos editar o arquivo "/etc/apache/httpd.conf"!
Troque os usuários que o Apache vai usar:
User apache
Group apache
Troque a diretiva "ServerRoot" para:
ServerRoot "/var/www"
Troque a diretiva "DocumentRoot" para:
DocumentRoot "/var/www/htdocs"
Troque a diretiva "ServerName" para o nome do seu servidor:
ServerName <nome do seu servidor>
Se deixar a diretiva ServerName comentada será usado o "127.0.0.1" o localhost!
Mas a frente será explicada cada diretiva usada.
Vamos criar o diretório que vão ficar os arquivos de logs:
#mkdir /var/www/logs
Vamos executar o nosso Apache, com o seguinte comando:
#apachectl start
Agora abra seu navegador e coloque o seguinte endereço:
http://localhost/
Irá aparecer a seguinte página:
Caso tenha ocorrido algum erro, refaça os procedimentos.
Entendendo o arquivo de configuração "httpd.conf"
A seguir vou dar uma pequena abordada nas principais opções e o que nós poderemos encontrar em seu conteúdo, para podemos entender melhor como funciona o webserver Apache.
HostnameLookups
A opção "HostnameLookups" tem a característica de habilitar resolução de nomes dos clientes.
Sintaxe:
HostnameLookups <”on” (abilitar)/”off” (desabilitar) /”double”(double-reverse)>
Exemplo:
HostnameLookups on
Group
A opção "Group" especifica o nome do grupo que gerenciará o Apache.
Sintaxe:
Group <nome do grupo>
Exemplo:
Group apache
User
A opção "User" especifica o nome do usuário que gerenciará o Apache, esse usuário tem que ter está no grupo que está definido na opção "Group".
Sintaxe:
User <usuário>
Exemplo:
User apache
ServerAdmin
Sintaxe:
ServerAdmin <endereço de e-mail>
Exemplo:
ServerAdmin tatototino@linuxmail.org
ServerRoot
Sintaxe:
ServerRoot <diretório que será o topo ou o diretório raiz de seu webserver >
Exemplo:
ServerRoot /var/www
LoadModule
A opção LoadModule especifica quais módulos DSO que serão carregados.
Sintaxe:
LoadModule <nome do módulo> <local do módulo a ser carregado>
Exemplo:
LoadModule roaming_module /usr/lib/apache/1.3/mod_roaming.so
ExtendedStatus
Sintaxe:
ExtendedStatus <"on" (para habilitar) / "off" (para desabilitar)>
Exemplo:
ExtendedStatus on
ErrorLog
Sintaxe:
ErrorLog <local do arquivo que serão armazenados as mensagens de erros>
Exemplo:
ErrorLog /var/www/logs/error.log
LogLevel
Os níveis disponíveis são:
emerg - O sistema está inutilizável.
alert - A ação deve ser tomada imediatamente.
crit - Condições críticas.
error - Condições de erro.
warn - Condições de alerta.
notice - Condição normal, mas significante.
info - Mensagens informativas.
debug - Mensagens do nível de depuração.
Sintaxe:
LogLevel <nível dos logs>
Exemplo:
LogLevel warn
CustomLog
O CustomLog e FormatLog (FormatLog veremos logo em seguida) pode ser usado mais de uma vez caso você queira especificar vários arquivos de Logs diferentes.
Sintaxe:
CustomLog <local que serão armazenados os logs> <formato/nome>
Flags de formato:
%b - Bytes enviados, excluindo cabeçalhos HTTP.
%f - Nome do arquivo.
%{FOOBAR}e - O conteúdo da variável de ambiente FOOBAR.
%h - Máquina cliente.
%a - Endereço IP da máquina cliente.
%A - Endereço IP local. Muito útil em virtual hostings.
%{Foobar}i - O conteúdo de Foobar: linhas de cabeçalho na requisição enviada ao servidor.
%l - O nome de login remoto enviado pelo identd (se fornecido).
%{Foobar}n - O conteúdo de "FooBar" de outro módulo.
%{Foobar}o: - O conteúdo de Foobar: linhas de cabeçalho na resposta.
%p - A porta do servidor servindo a requisição.
%P - A identificação do processo filho que serviu a requisição.
%r - A primeira linha da requisição.
%s - Status. Para requisições que foram redirecionadas internamente. Este é o status de uma requisição *original*. Use %s para a última.
%t - Hora, no formato do arquivo de log (formato inglês padrão).
%{format}t - Hora, no formato definido por strftime.
%T - O tempo necessário para servir a requisição, em segundos.
%u - Usuário remoto (através do auth, pode ser falso se o status de retorno (%s) for 401).
%U - O caminho da URL requisitada.
%v - O nome canônico definido por ServerName que serviu a requisição.
%V - O nome do servidor de acordo com a configuração de UseCanonicalName.
Exemplos:
CustomLog /var/www/logs/access.log combined
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
O exemplo acima indica um local e um nome na opção CustomLog e define o formato dos logs na opção LogFormat.
CustomLog /var/www/logs/access.log "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""
No exemplo acima você já configura tudo direto, local do arquivo onde serão gravado os logs, formato, sem precisar do LogFormat.
Logformat
Sintaxe:
LogFormat <formato do log> <nome definido em CustomLog>
Exemplos:
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
O exemplo acima indica um formato de log para o nome combined que tem que ser definido na opção CustomLog.
LogFormat "%h %l %u %t "%r" %>s %b" common
O exemplo acima indica um formato de log para o nome common que tem que ser definido na opção CustomLog.
TransferLog
Sintaxe:
TransferLog <local do arquivo>
Exemplo:
TransferLog /var/www/logs/transferências.log
ServerSignature
Com a opção "on" mostrará a versão do Apache, os módulos e etc.
Com a opção "off" não aparece nada, só o erro.
Com a opção "EMAIL" mostrará o e-mail do administrador.
Sintaxe:
ServerSignature <opção "on", "off" ou "EMAIL">
Exemplo:
ServerSignature off
PidFile
Sintaxe:
PidFile <local do arquivo que serão gravados as mensagens do processo do apache>
Exemplo:
PidFile /var/run/apache.pid
ServerName
Sintaxe:
ServerName <ip ou nome(DNS) de seu servidor>
Exemplos:
ServerName localhost
ServerName www.seuservidor.com.br
Timeout
Sintaxe:
Timeout <número de segundos>
Exemplo:
Timeout 300
KeepAlive
Sintaxe:
KeepAlive <on ,off>
Exemplo:
KeepAlive On
MaxKeepAliveRequests
Sintaxe:
MaxKeepAliveRequests <número de requisições>
Exemplo:
MaxKeepAliveRequests 100
KeepAliveTimeout
Sintaxe:
KeepAliveTimeout <número de requisições>
Exemplo:
KeepAliveTimeout 15
MinSpareServers
Sintaxe:
MinSpareServers <número mínimo de processos>
Exemplo:
MinSpareServers 6
MaxSpareServers
Sintaxe:
MaxSpareServers <número máximo de processos>
Exemplo:
MaxSpareServers 12
StartServers
A opção "StartServers" é usada para definir o número de processos criados na inicialização do Apache.
Sintaxe:
StartServers <número de processos>
Exemplo
StartServers 5
MaxClients
Sintaxe:
MaxClients <número de cliente>
Exemplo:
MaxClients 7
MaxRequestsPerChild
Sintaxe
MaxRequestsPerChild <número de requisições que um processo irá gerenciar>
Exemplo
MaxRequestsPerChild 30
Listen
Sintaxe:
Listen <porta ou endereço que receberá requisições>
Exemplo:
Listen 80
Listen 12.34.56.78:80
DocumentRoot
Sintaxe:
DocumentRoot <diretório dos documentos de seu site>
Exemplo:
DocumentRoot "/var/www/htdocs"
DirectoryIndex
Sintaxe:
DirectoryIndex <nome completo das páginas>
Exemplo:
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml
AccessFileName
A opção "AccessFileName" é usado para definir outro nome para o .htaccess.
Sintaxe:
AcceessFileName <novo nome do arquivo .htaccess>
Exemplo:
AcceessFileName .permissões
Alias
A opção "Alias" é usada para o Apache pegar arquivos em outro diretório como se fosse um link.
Sintaxe:
Alias <diretório> <diretório onde o Apache pegará os arquivos>
Exemplo:
Alias /icons /var/www/leandro
Scriptalias
Sintaxe:
Scriptalias <diretório> <diretório onde o Apache pegará os arquivos>
Exemplo:
Scriptalias /cgi-bin/ /usr/local/cgis/
Include
Sintaxe:
Include <local do arquivo adicional de configuração>
Exemplo:
Include /etc/apache/extra/arquivo.conf
ErrorDocument
A opção "ErrorDocument" é usado para especificar outra página de erro diferente da padrão.
Sintaxe:
ErrorDocument <código do erro> <mensagem ou pagina que será exibida>
Códigos de erros e sua mensagem quando o erro ocorre (esses erros são os padrões em português):
200 OK
201 Criado
202 Aceito
203 Informação não-autoritativa
204 Nenhum conteúdo
205 Conteúdo resetado
206 Conteúdo parcial
300 Múltiplas escolhas
301 Movido Permanentemente
302 Movido Temporariamente
303 Veja outra
304 Não modificada
305 Use o Proxy (redirecionamento proxy)
400 Requisição incorreta
401 Não autorizado
402 Pagamento Requerido
403 Bloqueado
404 Não encontrada
405 Método não permitido
406 Não aceitável
407 Autenticação via proxy requerida
408 Tempo limite da requisição expirado
409 Conflito
410 Gone
411 Tamanho requerido
412 Falha na pré-condição
413 A requisição parece ser grande
414 A URL requisitada é muito longa
415 Tipo de mídia não suportado
500 Erro Interno no Servidor
501 Não implementado
502 Gateway incorreto
503 Serviço não disponível
504 Tempo limite no gateway
505 Versão HTTP não suportada
Exemplos:
ErrorDocument 405 "erro ocorrido"
No exemplo acima se ocorrer o erro 405 irá aparece uma mensagem "erro ocorrido"
ErrorDocument 404 /missing.html
No exemplo acima se ocorrer o erro 404 irá aparece uma a página /missing.html.
TypesConfig
Sintaxe:
TypesConfig <local do arquivo>
Exemplo:
TypesConfig /etc/apache/mime.types
AddType
Sintaxe:
AddType <MIME-type> <extensão do arquivo>
Para ver os MIME-type disponíveis, veja o arquivo mime.type no diretório de configuração do apache.
Exemplo:
AddType application/x-gzip .tgz
DefaultType
Sintaxe:
DefaultType <tipo do MIME>
Exemplo:
DefaultType text/plain
AddHandler
Sintaxe:
AddHandler <programa que manipulará a extensão> <extensão do arquivo>
Exemplo:
AddHandler cgi-script .cgi
SetHandler
Sintaxe:
SetHandler <programa>
Exemplo:
<directory /var/www/cgi-bin>
Options ExecCGI
SetHandler cgi-bin
</Location>
ListenBackLog
Sintaxe:
ListenBacklog <número de conexões>
Exemplo:
ListenBacklog 500
ResourceConfig, mod_log_agent e mod_log_referer que tinham no Apache 1.3 foram banidas no Apache 2.x.
Instalação do MySQL
Chega de história, vamos à instalação!
Download do Mysql:
http://dev.mysql.com/downloads/
Vamos extrair o pacote:
#tar -zxvf mysql-5.0.24.tar.gz
#cd mysql-5.0.24
Agora temos que compilá-lo:
#./configure --prefix=/usr/share/mysql --bindir=/usr/bin --sbindir=/usr/sbin/ --libexecdir=/usr/libexec/mysql
#make
#checkinstall
Vamos criar o usuário para o MySQL:
#groupadd -g 27 mysql
#useradd -u 27 -g mysql -c "Mysql" -d /usr/share/mysql/var -s /bin/false mysql
#mysql_install_db
#chown -R mysql.mysql /usr/share/mysql
Vamos iniciar o daemon do MySQL:
#mysqld_safe&
Colocando o usuário Administrador do MySQL:
#mysqladmin -u <usuario> password <senha>
Esse usuário terá acesso total ao MySQL!
#mysql -u <usuario>-p
Enter password:<coloque seu password>
Caso você entre no console do MySQL irá aparecer a seguinte resposta:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 19 to server version: 5.0.24
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql>
Caso você queira testar um comando:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (1.46 sec)
Esse comando lista os banco de dados existentes no MySQL.
Para sair do console do MySQL:
mysql> quit
Bye
#cp /usr/share/mysql/share/mysql/mysql.server /etc/rc.d/rc.mysql
Agora adicione as seguintes linhas em "/etc/rc.d/rc.local":
if [ -x /etc/rc.d/rc.mysql ]; then
. /etc/rc.d/rc.mysql start
fi
Agora reinicie para testar!
Instalação do PostgreSQL
http://www.postgresql.org/download/
Vamos a instalação:
# tar -jxvf postgresql-8.1.4.tar.bz2
# cd postgresql-8.1.4
#./configure
--prefix=/usr/share/postgres
--bindir=/usr/bin
--sbindir=/usr/sbin
--libdir=/usr/lib
--without-zlib
Decrição dos parâmetros usados:
--prefix: local onde será instalado o PostgreSQL;
--bindir: local onde serão instalados os executáveis do diretório bin;
--sbindir: local onde serão instalados os executáveis do diretório sbin;
--libdir: local onde serão instaladas as bibliotecas da pasta lib;
--without-zlib: desabilita zlib.
#make
#checkinstall
Vamos criar o usuário que será usado pelo PostgreSQL:
#groupadd -g 28 postgres
#useradd -u 28 -g postgres -c "PostgreSQL" -d /usr/share/postgres/data/ postgres
Caso você queira colocar uma senha no usuário postgres:
passwd postgres
#cd /usr/share/postgres
#mkdir data
Vamos mudar o dono e o grupo do diretório criado:
#chown -R postgres.postgres data
#su postgres
$initdb -D /usr/share/postgres/data/
Vamos iniciar o Daemon do PostgreSQL:
$ postmaster -D /usr/share/postgres/data &
Vamos logar ao console do PostgreSQL com o comando cliente do PostgreSQL, o "psql" usando o super usuário do PostgreSQL o "postgres":
$psql postgres
Vamos colocar uma senha ao usuário postgres, execute o seguinte comando no console do PostgreSQL:
postgres=# alter user postgres with encrypted password 'sua-senha';
ALTER ROLE
Vamos sair do PostgreSQL:
postgres=#q
Troque as seguintes linhas:
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
para
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Vamos deixar o PostgreSQL um pouco mais seguro, vamos editar o arquivo "postgresql.conf" localizado na pasta "/usr/share/postgres/data"!
Número máximo de conexões:
max_connections = 10
Tempo para se autenticar (tempo em segundos):
authentication_timeout = 60
Habilita senha com criptografia:
password_encryption = on
Quantas conexões simultâneas o super usuário pode ter:
superuser_reserved_connections = 1
Agora vamos reiniciar o PostgreSQL, para que as alterações sejam feitas:
pg_ctl restart -D /usr/share/postgres/data/
Agora quando você entrar no PostgreSQL, irá pedir uma senha:
$ psql postgres
Password
#cp postgresql-8.1.4/contrib/start-scripts/linux /etc/rc.d/rc,postgresql
#! /bin/sh
# chkconfig: 2345 98 02
# description: PostgreSQL RDBMS
# This is an example of a start/stop script for SysV-style init, such
# as is used on Linux systems. You should edit some of the variables
# and maybe the 'echo' commands.
#
# Place this file at /etc/init.d/postgresql (or
# /etc/rc.d/init.d/postgresql) and make symlinks to
# /etc/rc.d/rc0.d/K02postgresql
# /etc/rc.d/rc1.d/K02postgresql
# /etc/rc.d/rc2.d/K02postgresql
# /etc/rc.d/rc3.d/S98postgresql
# /etc/rc.d/rc4.d/S98postgresql
# /etc/rc.d/rc5.d/S98postgresql
# Or, if you have chkconfig, simply:
# chkconfig --add postgresql
#
# Proper init scripts on Linux systems normally require setting lock
# and pid files under /var/run as well as reacting to network
# settings, so you should treat this with care.
# Original author: Ryan Kirkpatrick <pgsql@rkirkpat.net>
# $PostgreSQL: pgsql/contrib/start-scripts/linux,v 1.7 2004/10/01 18:30:21 tgl Exp $
## EDIT FROM HERE
# Installation prefix
prefix=/usr/share/postgres
# Data directory
PGDATA="/usr/share/postgres/data"
# Who to run the postmaster as, usually "postgres". (NOT "root")
PGUSER=postgres
# Where to keep a log file
PGLOG="$PGDATA/serverlog"
## STOP EDITING HERE
# Check for echo -n vs echo c
if echo 'c' | grep -s c >/dev/null 2>&1 ; then
ECHO_N="echo -n"
ECHO_C=""
else
ECHO_N="echo"
ECHO_C='c'
fi
# The path that is to be used for the script
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# What to use to start up the postmaster (we do NOT use pg_ctl for this,
# as it adds no value and can cause the postmaster to misrecognize a stale
# lock file)
DAEMON="/usr/bin/postmaster"
# What to use to shut down the postmaster
PGCTL="/usr/bin/pg_ctl"
set -e
# Only start if we can find the postmaster.
test -x $DAEMON || exit 0
# Parse command line parameters.
case $1 in
start)
$ECHO_N "Starting PostgreSQL: "$ECHO_C
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
echo "ok"
;;
stop)
echo -n "Stopping PostgreSQL: "
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast"
echo "ok"
;;
restart)
echo -n "Restarting PostgreSQL: "
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w"
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
echo "ok"
;;
reload)
echo -n "Reload PostgreSQL: "
su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s"
echo "ok"
;;
status)
su - $PGUSER -c "$PGCTL status -D '$PGDATA'"
;;
*)
# Print help
echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2
exit 1
;;
esac
exit 0
Depois disso coloque em rc.local as seguintes linhas:
if [ -x /etc/rc.d/rc.postgresql ]; then
. /etc/rc.d/rc.postgresql start
fi
Agora basta reiniciar seu sistema para testar!
Instalação PHP
O PHP é uma linguagem de programação de computadores interpretada, livre e muito utilizada para gerar conteúdo dinâmico na Web. Apesar de ser uma linguagem de fácil aprendizado e de uso para pequenos scripts dinâmicos simples, o PHP é uma linguagem poderosa orientada a objetos.
Além disso, destaca-se a extrema facilidade com que PHP lida com servidores de base de dados, como MySQL, PostgreSQL, Microsoft SQL Server e Oracle.
Agora vamos instalar o PHP:
#tar -zxvf php-5.1.6.tar.gz
# cd php-5.1.6
#./configure
--prefix=/usr/share/apache2/php
--with-mysql=/usr/share/mysql
--with-apxs2=/usr/sbin/apxs
--enable-ftp
-with-config-file-path=/etc/apache
--with-pgsql=/usr/share/postgres
--prefix: local onde será instalado o PHP
--with-mysql: local onde está instalado MySQL para ativalo no PHP
--with-apxs2: local onde está o executável apxs do Apache.
--enable-ftp: ativa suporte a FTP
--with-config-file-path= local onde ficará o arquivo de configuração do PHP "php.ini"
--with-pgsql= local onde está instalado o PosgreSQL para ativá-lo no PHP
#make
#checkinstall
Copie o php.ini-dist e o php.ini-recommended /etc/apache:
#cp php.ini* /etc/apache
Renomeie o arquivo "php.ini-dist" para "php.ini":
#cd /etc/apache
#mv php.ini-dist php.ini
Adicione isso no arquivo de configuração do Apache "/etc/apache/httpd.conf" para carregar o PHP:
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
Vamos testar o PHP juntamente com o Apache, para isso vamos criar um arquivo em PHP com o seguinte código:
<? phpinfo(); ?>
Para isso usei o seguinte comando:
echo "<? phpinfo(); ?>" > /var/www/htdocs/phpinfo.php
http://localhost/phpinfo.php

Testando a conexão do PHP com o Mysql
Vamos criar o arquivo mysql.php com o seguinte código:
<?
$conexao=mysql_connect("localhost","root","root") or die ("Configuração de Banco de Dados Errada!");
$db=mysql_select_db("mysql",$conexao) or die ("Banco de Dados Inexistente!");
echo ("Seu PHP está integrado ao MySQL");
?>
Descrição do comando mysql_connect para conectar ao MySQL:
mysql_connect(<onde está seu servidor MySQL>,< usuário do MySQL>,< senha do seu usuário MySQL>);
Descrição do comando mysql_select_db para escolher o Banco de Dados:
mysql_select_db(<banco de dados do seu MySQL>,<a sua conexão configurada>);
http://localhost/mysql.php
Testando a conexão do PHP com o PostgreSQL
Vamos criar o arquivo postgresql.php com o seguinte código:
<?
$conexao=pg_connect("dbname= postgres port=5432 host=127.0.0.1 user=postgres password =postgres") or die ("Configuração de Banco de Dados Errada!");
echo ("Seu PHP está integrado ao PostgreSQL");
?>
Descrição do comando pg_connect para conectar ao PostgreSQL:
dbname:<Banco de Dados do PostgreSQL
port: A porta do PostgreSQL
host: Host do seu Servidor PostgreSQL
user: Usuário PostgreSQL
password : Senha do Usuário PostgreSQL
http://localhost/postgresql.php






0 comentários:
Postar um comentário