Autor: Andrei Drusian
Autor: Leonardo Porto Lopes
eMail: drusian[NOSPAM]linuxbsd.com.br
eMail: leonardo[NOSPAM]tdkom.com.br
Data: 2003
O Apache é sem duvidas o mais poderoso e versátil servidor de paginas web do mundo. Devido a seu desempenho, confiabilidade e alta disponibilidade, atualmente o apache é usado em mais de 60% dos webservers da internet.
O nome do aplicativo se originou de "patchy", por ser um programa bastante "rememdável" (patchy em inglês), logo o nome apache veio de "a patchy server". Você pode extendender suas capacidades iniciais fazendo uso de módulos diversos. Estes adicionam o suporte a php, cgi, pearl, asp e outros, e são de suma importância para um servidor http seguro e versátil.
Este tutorial explica passo á passo como compilar um servidor web Apache passando parâmetros em sua configuração para que os arquivos fiquem de maneira organizada no disco, assim facilitando a administração.
Também desvendaremos o seu arquivo de configuração, o httpd.conf para que possamos tirar melhor proveito de nosso webserver. Este artigo é um ótimo ponto de partida para quem está querendo iniciar os estudos no Apache Server, aprendendo de maneira clara a implantar e administrar o servidor.
Este tutorial pode ser usado como referencia para instalação do apache em qualquer ambiente Unix!
Então o que está esperando? mãos a obra : )
Atenção! Usamos nos comandos o "$" para indicar que neste ponto você pode estar logado como usuário comum, e "#" quando for necessário estar logado como root, que pode ser invocado a partir de um usuário comum, usando o comando "su" (superuser) seguido de sua senha de root.
Primeiramente devemos baixar o pacote do apache, que atualmente possui duas series, que são: 1.3 e 2.0, os links abaixo são das ultimas versões das duas series.
Unix Source httpd-1.3.27:
.:: apache_1.3.27.tar.gz
Unix Source httpd-2.0.44:
.:: httpd-2.0.44.tar.gz
Você pode baixar também pacotes em .rpm ou .srpm (caso queira fazer um rebuild), procure nos servidores ftp:// de sua distribuição.
Para instalar o apache empacotado em formato .rpm use o comando:
# rpm -iv apache_x.x.x.rpm
Se você usa o Conectiva ou Debian faça uso do poderoso apt-get para baixar e instalar o pacote:
# apt-get install apache
Nos unix-like você pode pode usar o ports para fazer donwload e compilar o pacote:
# cd /usr/ports/www/apache_x.x.x
# make && make install && make clean
_____________________________________
Passo à Passo - Instalando atravéz dos sources
Após baixar o pacote, vamos descompactá-lo com o comando:
$ tar -zxvf apache_x.x.x.tar.gz
$ cd apache_x.x.x
É interessante personalizar os caminhos da instalação, para facilitar a administração e também manter os arquivos de forma organizada nos discos:
$ ./configure --prefix=/usr/local/httpd --htdocsdir=/www --sysconfdir=/etc/apache --logfiledir=/var/log/apache --enable-module=all
O que significa tudo isso?
--prefix: diretório onde o apache deve ser instalado.
--htdocsdir: diretório onde ficara armazenado os arquivos html do servidor.
--sysconfdir: diretório que ficara armazenado os arquivos de configuração do servidor.
--logfiledir: diretório onde será armazenado os logs do servidor apache.
--enable-module: habilita módulos do servidor apache.
Personalize os caminhos de instalação como mais lhe agrada, os caminhos acima é somente um exemplo/sujestão.
Após o termino do comando ./configure podemos compilar, instalar e limpar os fonte.
De os comandos:
$ make
# make install
# make clean
make: compila os fontes.
make install: instala os fontes recém compilados.
make clean: limpa resÃduos da compilação.
Resumo dos comandos:
1) $ tar -zxvf apache_x.x.x.tar.gz
2) $ cd apache_x.x.x
3) $ ./configure --prefix=/usr/local/httpd --htdocsdir=/www --sysconfdir=/etc/apache --logfiledir=/var/log/apache --enable-module=all
4) $ make
5) # make install
6) # make clean
Se você quiser fazer a compilação em uma só linha, separe os comandos com &&, ficando assim:
# ./configure --prefix=/usr/local/httpd --htdocsdir=/www --sysconfdir=/etc/apache --logfiledir=/var/log/apache --enable-module=all && make && make install && make clean
A vantagem de fazer tudo em uma linha de comando é a agilidade, porém se der erros durante o processo de compilação, vai ser dificil identificar onde realmente ocorreu o problema, sendo mais recomendada a opção de compilação passo a passo.
_____________________________________
Desossando o httpd.conf
O arquivo responsavel pesa configuração do apache é o httpd.conf, ele normalmente (ou se você seguiu a sujestão acima) se encontra em: /etc/apache/httpd.conf.
Vamos comentar suas principais linhas de configuração.
Abra o arquivo para ir acompanhando o tutorial, assim você já vai acertando tudo : )
# mcedit /etc/apache/httpd.conf
Introdução à configuração do Apache
Basicamente o servidor http Apache é configurado através do arquivo /etc/httpd/conf/httpd.conf
O arquivo é composto de 3 seções e é amplamente comentado.
Section 1: Global Environment:
As diretivas nesta seção afetam a operação global do Apache, como o número de requisições concorrentes que ele pode tratar ou onde estão seus arquivos de configuração.
Section 2: 'Main' server configuration:
As diretivas desta seção indicam especificamente o funcionamento do servidor principal. Por exemplo, a porta em que ele atende, o nome do servidor principal, o caminho para as páginas dos usuários, etc. O servidor principal é a porta de entrada.
Section 3: Virtual Hosts:
Se você deseja manter múltiplos domÃnios/hosts na mesma máquina, você pode configurar conteiners virtuais para eles. Cada domÃnio poderá ou não ter seu próprio endereço ip, mas todos estarão hospedados e apontarão para o mesmo servidor.
_____________________________________
Configurando o Apache
O arquivo httpd.conf é bastante extenso e permite diversas configurações, tornando-o muito flexÃvel. O arquivo a seguir não está completo, pois destacamos somente as diretivas mais utilizadas e mais importantes para o funcionamento do Apache, sendo possÃvel explorá-lo ainda mais.
As diretivas a seguir trazem seu comentário original e logo abaixo explicamos sua função.
##
## httpd.conf -- Apache HTTP server configuration file
##
### Section 1: Global Environment
ServerType standalone
Diz ao sistema se o httpd vai ser rodado via script próprio (standalone), ou a partir do arquivo inetd.conf (inetd). Em 'inetd' o httpd fica ocioso, enquanto o inetd fica monitorando as requisições, quando houver alguma, ele informa ao sistema a hora de iniciar o serviço.
OBS: o padrão é standalone
ServerRoot /usr/local/httpd
Define o diretório do servidor.
Timeout 300
Tempo maximo (segundos) que o servidor manterá uma conexão aberta com o cliente. Se o limite for excedido, ele terá de criar uma nova conexão com o mesmo.
KeepAlive On
Diretamente ligado com a opção acima, define se o processo de manter a conexão com o cliente está ativo ou não (on/off).
MaxKeepAliveRequests 100
Numero maximo de conexões mantidas sem necessidade de renovação. Quanto mais alto o numero, melhor a performance (com hardware adequado).
KeepAliveTimeout 15
Maximo (segundos) à espera de nova requisição.
StartServers 10
Numero de servidores iniciais, ou seja, logo no inicio do processo, o httpd poderá responder a 10 conexões simultanêas ao mesmo site.
MaxClients 150
Numero maximo de conexões simultaneas por clientes ao site. se for ultrapassada o httpd exibirá a mensagem "http server busy"
#Listen 3000
#Listen 12.34.56.78:80
Permite ao httpd server, responder em mais de um ip/porta.
#BindAddress *
Esta é importante, por default a linha vem comentada pois habilita o acesso a um domÃnio virtual. Para cada host virtual é necessária uma entrada "BindAdress e um numero IP".
#
# Dynamic Shared Object (DSO) Support
#
# LoadModule foo_module modules/mod_foo.so
#LoadModule mmap_static_module modules/mod_mmap_static.so
#LoadModule env_module modules/mod_env.so
#AddModule mod_mmap_static.c
#AddModule mod_env.c
Descomentando ou adicionando quaisquer linha com LoadModule ou AddModule, validará o carregamento de um modulo, sendo executado na inicialização do httpd. Eles funcionam como opções, por exemplo habilitar ou não o suporte a arquivos CGI no servidor, etc...
### Section 2: 'Main' server configuration
Port 80
O httpd atende por default no porta 80, aqui você poderá modificá-la se desejar.
User/Group
Permite que o httpd execute como um usuário e grupo diferente.
ServerAdmin drusian@localhost
E-Mail do administrador do apache, para onde será enviada noticias caso o servidor acuse algum erro ou anormalidades.
ServerName host.name
Determina o nome do servidor principal.
Nota: o nome dever obrigatoriamente constar no DNS (e um ip associado a ele), pois um nome inventado não funcionará.
O modo de chama-lo é http://nome, mas se ele não consta no DNS, use o ip http://número-ip. Para acesso local, ou seja acessar sua própria maquina "loopback", use http://localhost ou http://127.0.0.1.
DocumentRoot /www
Determina o caminho onde estarão armazenados os arquivos html do servidor principal.
Importante: o diretório dever estar com permissão 755, sendo direito total para o proprietário, leitura e execução para o grupo e para outros.
AccesseFileName .htaccess
Define o nome do arquivo para o controle de acesso, o padrão é o arquivo .htaccess.
UserDir www
Está opção indica qual diretório o usuário deverá criar caso queira disponibilizar documentos ou paginas html. Por exemplo se o usuário drusian quisesse disponibilizar paginas ou documentos para a rede interna usando o apache, ele teria que criar o diretório www (/home/drusian/www/) e ali disponibilizar os documente/arquivos htm. Lembre-se que o diretório em questão deve ter permissão 755 afim de garantir o acesso e segurança.
Para acessar paginas em um home use: http://nome.da.maquina/~nome-do-usuário/
DirectoryIndex index.html index.htm index.asp default.html default.htm main.php
Muito importante, pois determina quais nomes de arquivos serão validos para abertura da home pagen no browser http. No caso da configuração acima o servidor aceitará arquivos como paginas iniciais (index) de um site.
UseCanonicalName On
Se ligada (on), uma pagina que se chame por exemplo www.teste.com.br/teste/ se acessada como www.teste.com.br/teste (ou seja sem o / barra no fim) seja considerada válida. Se desligada (off), o site não será encontrado.
HostNameLookups: Se está opção estiver ligada (on), o apache irá escrever nos logs o nome do domÃnio (www.dominio.com.br) se a opção estiver desligada (off), o apache escreverá nos logs com o ip (192.168.0.1).
ErrorLog logs/error_log
Arquivo onde será gravado o relatório de erros do servidor.
LogLevel warn
Determina em que nÃvel o httpd irá rodar. O recomendado é warn, pois não causa acúmulo de atividades no apache. É o padrão e é uma das mais usadas.
Outros opções são: debug, info, notice, warn, error, crit, alert, emerg.
CustomLog logs/access_log common
Logs de acessos vão ser gravados neste arquivo.
Alias
Apelidos para diretórios da maquina, Você pode por exemplo cria um apelido para uma pasta do sistema por exemplo: criar um apelido chamado "binarios" para a pasta /home/drusian/downloads/, assim se você acessar http://seu-ip/binarios/ você terá acesso a pasta.
Exemplo citado acima:
Alias /binarios/ "/home/drusian/downloads/"
Options Indexes FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
ScritptsAlias
Define o diretório que conterá os scripts do servidor. Exemplo CGI.
### Section 3: Virtual Hosts
Aqui é realizada a configuração do IP e da porta do servidor virtual. Isto significa que não é necessários ter vários computadores rodando servidores httpd, em apenas uma maquina você pode ter vários dominios rodando (www.teste.com, www.teste1.com, www.teste123.net) cada um abrindo uma pagina diferente, e em diferentes diretórios do servidor.
Este é um recurso chamado de IP alias.
NameVirtualHost 200.001.002.01:80
NameVirtualHost 200.001.002.01
#-------------------- VHost Drusian.Net ------------------#
1)
2) ServerAdmin
3) DocumentRoot /www/drusian.net
4) ServerName www.drusian.net
5)
#---------------------------------------------------#
#-------------------- VHost Leonardo.Net -----------------#
1)
2) ServerAdmin
3) DocumentRoot /www/leonardo.net
4) ServerName www.leonardo.net
5)
#----------------------------------------------------#
O que significa estas linhas ??
1) Inicia um novo host virtual e informa o IP do Servidor
2) eMail do adminstrador
3) Diretório que vai conter os arquivos do dominito leonardo
4) Nome do dominio: www.dominio.net
5) Finaliza uma seção virutal host
_____________________________________
Os comando basicos do apache
# /usr/local/httpd/bin/apachectl configtest
# /usr/local/httpd/bin/apachectl start
# /usr/local/httpd/bin/apachectl stop
# /usr/local/httpd/bin/apachectl restart
Atenção! substitual o "/usr/local/httpd/bin/" pelo caminho onde está instalado os binarios do seu servidor.
apachectl configtest: testa se o arquivo de configuração do apache (httpd.conf)
apachectl start: inicia o servidor web apache
apachectl stop: para o servidor web apache
apachectl restart: reinicializa o servidor.
Algumas dicas - Navegando em seu servidor web
Para acessar o seu servidor localmente utilize o http://localhost ou http://127.0.0.1
Utilize os arquivos de Log
Não deixe de consultar os logs, pois eles reportam qualquer problema ocorrido no funcionamento do servidor, sendo muito útil na busca da solução. Mesmo em alguns casos, em que pareça que o servidor respondeu corretamente às requisições, alguns problemas acontecem e não são percebidos, mas estarão registrados nos logs.
____________________________________
Esperamos ter ajudado a esclarecer algumas das principais duvidas prá quem está iniciando na implantação e administração de servidores Web Apache. Se mesmo assim você ficou com alguma dúvida, por favor poste em um de nossos forums, assim que possivél iremos responder a sua duvida.