Neste artigo será realizada a instalação do Apache de duas formas distintas. Uma delas é compilando através do código-fonte e a outra é através de pacotes próprios da distribuição. Também serão apresentadas configurações básicas de desempenho e segurança, recomendáveis em qualquer servidor Web Apache.
As configurações sugeridas são aplicáveis em servidores de pequeno, médio e grande porte, com poucas ou milhares de requisições por minuto.
Este artigo é ideal para aqueles que estão iniciando na área de infraestrutura e servidores, e até mesmo para os leitores com um pouco mais de experiência, que estão sempre em busca de novos conhecimentos, permitindo uma melhor configuração de servidores.
O Apache é um software multiplataforma e pode ser instalado nos principais sistemas operacionais disponíveis no mercado, como Linux, BSDs, Windows, entre outros menos populares. Por ser um software robusto, logo se pensa que exige um hardware muito poderoso para funcionar adequadamente. É aí que os inexperientes se enganam.
O Apache é hoje um dos mais respeitados softwares Open Source existentes no mercado, sendo um concorrente direto do IIS (veja seção Links), desenvolvido pela Microsoft.
Como já informado, o Apache oferece suporte a módulos que, quando instalados, adicionam funcionalidades ao servidor. Como exemplos, pode-se citar o mod_php, mod_python, mod_ftp, entre outros. A variedade de módulos é muito grande e pode ser consultada diretamente no site do projeto (veja seção Links).
Este artigo parte do princípio que o leitor está familiarizado com a compilação de algum software ou, ao menos detém as noções básicas, além de possuir os pacotes para realizar tal procedimento.
Quando este artigo foi escrito, a versão estável era a 2.2.16. No entanto, as configurações realizadas são válidas para qualquer versão do Apache2.
Assim será possível executar todos os comandos sem nenhum tipo de problema. Porém, muito cuidado com os comandos que serão utilizados: como root nada impedirá você de fazer alterações indevidas no sistema.
Seguindo a proposta do artigo, esta instalação será básica, ou seja, não serão instalados módulos e/ou adicionadas funções extras ao Apache. Entretanto, caso tenha interesse de habilitar ou desabilitar algumas opções já na instalação, pode fazê-lo com o comando:
Agora, devem ser executados os três comandos básicos necessários para a compilação:
Para realizar a instalação é necessário acessar o menu Sistema > Administração > Gerenciador de Pacotes Synaptic, pesquisar por "Apache" e depois selecionar o pacote "Apache2". Em seguida é só aplicar e esperar o sistema realizar todo o trabalho.
A instalação via gerenciador de pacotes é visivelmente mais simples e torna todo gerenciamento mais fácil, visto que atualizações e patches de segurança são aplicadas e instaladas automaticamente. A compilação (apresentada no tópico anterior) só se faz necessária quando o administrador deseja customizar ao máximo o servidor.
Depois da instalação padrão, o Apache já pode ser utilizado normalmente, eliminando a necessidade de inúmeras configurações adicionais. Para testá-lo, basta abrir o seu browser e acessar o endereço http://localhost. Neste momento você verá uma mensagem de confirmação do Apache.
Nossa primeira alteração no httpd.conf será o parâmetro ServerName. Este parâmetro é utilizado quando o servidor Apache irá responder por um endereço do tipo www.meusite.com.br. Na instalação padrão, o ServerName não é especificado, ficando a critério do administrador utilizá-lo ou não. Este parâmetro pode ser inserido no início do arquivo de configuração apache2.conf da seguinte forma:
Mas o que fazer se o servidor for responder por mais de um site ou possuir subdomínios? Neste caso deve-se editar outro arquivo, responsável pelos Virtual Hosts dentro do Apache, que pode ser encontrado no diretório /etc/apache2/sites-available/default.
Na configuração padrão, existe um Virtual Host configurado que é responsável pelo domínio padrão do seu servidor. Um novo Virtual Host pode ser configurado apenas copiando as configurações de um já existente e alterando o parâmetro Document Root, que indica o diretório onde ficarão armazenados os respectivos arquivos.
Existe também a possibilidade de criar diferentes arquivos ao invés de utilizar o arquivo default. Se isso for feito, para que o Apache reconheça este arquivo, precisa-se adicioná-lo à lista de sites habilitados com o comando:
Dentro de cada Virtual Host é possível configurar diversos "subdiretórios" entre os parâmetros <Directory></Directory>. Dessa forma pode-se criar configurações personalizadas para determinados diretórios ou até apontá-los para outros lugares.
Um exemplo de configuração de um Virtual Host no Apache pode ser visto na Listagem 1.
<FilesMatch "\.(gif|jpg|jpeg|png|css|js|swf|GIF|JPG|JPEG|PNG|txt|TXT)$">
<Directory /var/www/meusite.com.br>
• ExpiresActive: Esta funcionalidade do Apache é um recurso muito interessante e pouco utilizado. Com ele, pode-se determinar o tempo que o browser do cliente fará cache de determinados tipos de arquivo, reduzindo assim a quantidade de requisições feitas ao servidor, sem falar na velocidade de carregamento do site, que será visivelmente incrementada. Pode não parecer, mas pequenas configurações como esta muitas vezes não são feitas pelos administradores e acabam gerando um elevado número de requisições repetidas e desnecessárias ao servidor Web.
Por padrão, em diretórios que não possuem nenhum arquivo index, o Apache lista todos os arquivos existentes nos mesmos. Isto em alguns casos não é de interesse do administrador, seja porque o diretório contém arquivos privados, ou apenas para não permitir que os arquivos que ali se encontram sejam vistos. Esta configuração pode ser realizada em diretórios específicos mas, em algumas situações, a intenção pode ser a de bloquear a listagem de arquivos em todos os diretórios. Para isso, é necessário editar o arquivo /etc/apache2/sites-available/default e alterar os seguintes parâmetros:
Não é interessante que alguma pessoa mal intencionada consiga informações sobre o servidor facilmente. Para evitar que isso aconteça, alguns parâmetros podem ser alterados para restringir o nível de informação que é passado para os clientes. São eles:
Para exemplificar, vejamos algumas configurações importantes que podem ser realizadas no php.ini.
Safe Mode: Safe Mode, ou Modo Seguro, é uma tentativa de resolver um problema de segurança em servidores compartilhados. Com ele, o PHP faz verificações quando trabalha com manipulação de arquivos, verificando a propriedade do script atual e do arquivo a ser alterado. A partir da versão 5.3.0 do PHP este recurso se tornou obsoleto e seu uso desencorajado no próprio manual, na versão 6.0 será completamente removido.
Mais informações sobre o parâmetro register_globals podem ser encontradas no endereço (veja seção Links).
Caso a aplicação utilize sessões, pode ser interessante aumentar o tamanho máximo do tempo de vida de uma sessão que, por padrão, é de 24 minutos. Esta opção é recomendada para sistemas que possuem uma utilização frequente e contínua, evitando assim que o usuário tenha que se autenticar a todo o momento:
session.gc_maxlifetime = 1440 (em segundos)
Enfim, o php.ini é bastante extenso, sendo recomendada a leitura do arquivo. Os comandos e os comentários que se encontram nele podem ser bastante úteis, além de ser uma excelente forma de estudo das possibilidades que as configurações do PHP oferecem.
O Lighttpd (veja seção Links) é um servidor desenvolvido para ambientes de alta performance. Seu consumo de memória é muito baixo, além de possuir um bom gerenciamento de carga. Entretanto, seu desempenho não é muito bom quando se trata de páginas dinâmicas, como páginas em PHP. Já quando utilizado para prover conteúdo estático, como arquivos .html, .css, .js e imagens, seu desempenho é consideravelmente superior ao Apache. Uma boa combinação é utilizar o Apache para prover conteúdo dinâmico e o Lighttpd para conteúdo estático.
Outro que não é exatamente um Web Server, mas que merece ser lembrado, é o novíssimo HipHop (veja seção Links), desenvolvido pelo Facebook. Ele traduz os códigos PHP para C++ e, depois disso, o compila, aumentando assim a velocidade na execução.