sábado, 18 de julho de 2009

Instalando o APACHE


    Instalando o Apache

    A primeira escolha é entre instalar o Apache 2, ou o Apache 1.3, que ainda é usado por muita gente. O Apache 2 traz muitas vantagens, sobretudo do ponto de vista do desempenho, mas, por outro lado, ele é incompatível com os módulos compilados para o Apache 1.3 e muitas opções de configuração são diferentes.

    A questão dos módulos não chega a ser um grande problema hoje em dia, pois todos os principais módulos já foram portados, mas muita gente que aprendeu a configurar o Apache 1.3 se sente mais confortável com ele e, por isso, continua usando-o até hoje, apesar das vantagens da nova versão. Muitas distribuições continuam oferecendo as duas versões, de forma a satisfazer os dois públicos. No Debian, por exemplo, o Apache 1.3 é instalado através do pacote "apache", enquanto o Apache 2 (a versão recomendada) é instalado através do "apache2".

    Ao instalar o Apache 2, o suporte a SSL é instalado automaticamente junto com o pacote principal (mas ainda é preciso ativá-lo na configuração, como veremos a seguir). Instale também o pacote apache2-utils, que contém diversos utilitários de gerenciamento que usaremos a seguir:

    # apt-get install apache2 # apt-get install apache2-utils

    Você vai precisar também do pacote "ssl-cert", necessário para ativar o suporte a SSL e gerar os certificados. Ele não é instalado por padrão ao fazer uma instalação enxuta do Debian ou Ubuntu:

    # apt-get install ssl-cert

    No Fedora, instale o pacote "httpd", que contém o Apache 2 e utilitários:

    # yum install httpd

    Seguindo os nomes dos pacotes, no Debian o serviço se chama "apache2", enquanto no Fedora se chama "httpd". Para reiniciar o servidor, você usaria respectivamente "/etc/init.d/apache2 restart" e "service httpd restart".

    Acessando o endereço "http://127.0.0.1", você verá uma página de boas-vindas, que indica que o servidor está funcionando. Se não houver nenhum firewall no caminho, ele já estará acessível a partir de outros micros da rede local ou da internet.

    Por enquanto temos apenas uma versão básica do Apache, que simplesmente exibe arquivos html. Por padrão, o diretório raiz do servidor Web é "/var/www" (no Debian) ou "/var/www/html" (no Fedora). A página "http://seu.servidor/index.html" é, na verdade, o arquivo "/var/www/index.html".

      A principal característica do Apache é a modularidade. Ao invés de ser um aplicativo grande e complexo, que tenta desempenhar sozinho todas as funções, o Apache se limita a executar uma única tarefa: entregar páginas html e outros tipos de arquivos aos clientes. Qualquer outra coisa é invariavelmente feita por um módulo externo.

      Por exemplo, quando você acessa uma página em PHP em um site que roda sobre um servidor Apache, ele (Apache) lê o arquivo no disco e repassa a requisição para o modphp, o módulo encarregado de processar arquivos PHP. Ele, por sua vez, aciona o interpretador PHP, que processa a página e a entrega, já processada, ao Apache, que, finalmente, a entrega ao cliente. Caso seja necessário acessar um banco de dados (como no caso de um fórum), entra em ação outro módulo, como o php4-mysql, que permite que o interpretador PHP acesse o banco de dados:

      Pode parecer estranho que depois de toda essa volta, o Apache ainda consiga entregar a página processada em tempo hábil, mas é justamente essa divisão de tarefas que permite que o Apache seja tão rápido e seguro. O trabalho é dividido em várias partes e cada módulo é mantido separadamente por uma equipe que entende do assunto e zela pelo desempenho e confiabilidade do código. Graças a isso, é bastante raro que sejam descobertos problemas graves de segurança no Apache ou no interpretador PHP, por exemplo. Quase sempre, os problemas de segurança não estão no servidor Web em si, mas sim no gestor de conteúdo (phpNuke, Xoops, phpBB, etc.) usado.

      No Apache 2, esta arquitetura modular é extendida também aos arquivos de configuração. No Apache 1.3, a configuração era centralizada no arquivo "/etc/apache/httpd.conf", enquanto no Apache 2 ela é dividida em vários arquivos. À primeira vista, a organização do Apache 2 parece muito mais complicada, mas depois de entender a coisa se revela muito mais simples e lógica:

      Todos os arquivos de configuração estão organizados dentro do diretório "/etc/apache2". Dentro dele, temos as pastas "sites-available" e "sites-enabled", que contém a configuração dos sites hospedados; as pastas "mods-available" e "mods-enabled", que armazenam a configuração dos módulos; o arquivo "ports.conf", onde vai a configuração das portas TCP que o servidor vai escutar; o arquivo "apache2.conf", que armazena configurações diversas relacionadas ao funcionamento do servidor e a pasta "conf.d", que armazena arquivos com configurações adicionais.

      O Apache é capaz de hospedar simultaneamente vários sites, cada um representado por um arquivo de configuração diferente. Imagine o caso de uma empresa de hosting que mantém um servidor com 2.000 pequenos sites. Quando cada cliente registra seu site e assina o plano de hospedagem, você cria um novo arquivo dentro da pasta "sites-available" com as configurações necessárias e um link para ele na pasta "sites-enabled".

      Como os nomes sugerem, a primeira pasta armazena a configuração de todos os sites hospedados no servidor, mas apenas os sites que estiverem presentes na pasta "sites-enabled" ficam disponíveis. Quando é necessário suspender temporariamente um site por falta de pagamento, você simplesmente remove o link na pasta "sites-enabled", sem precisar mexer na configuração.

      Ao invés de criar e remover os links manualmente, você pode usar os comandos "a2ensite" e "a2dissite", que fazem isso para você. Para ativar e desativar um site configurado no arquivo "/etc/apache2/sites-available/kurumin", por exemplo, os comandos seriam:

      # a2ensite kurumin
      (ativa)

      # a2dissite kurumin
      (desativa)

      Quando o Apache é instalado, é criado por padrão o arquivo "/etc/apache2/sites-available/default", que contém a configuração de um site "raiz", que usa como diretório de páginas a pasta "/var/www". Se o seu servidor web vai hospedar um único site, então essa configuração é suficiente. Mas, caso você queira hospedar vários sites no mesmo servidor, é necessário criar uma pasta e um arquivo de configuração para cada site adicional.

      Seu servidor pode, por exemplo, hospedar o "joao.com.br" e o "maria.com.br". Um servidor DNS, mantido por você, é configurado para responder pelos dois domínios, em ambos os casos dando o IP do seu servidor web. Na configuração do apache, criamos os arquivos "/etc/apache2/sites-available/joao" e "/etc/apache2/sites-available/maria", um utilizando a pasta "/var/www/joao" e "/var/www/maria".

      Quando um visitante digita "http://joao.com.br", o servidor da Fapesp (que responde pelos domínios .br) vai passar a requisição para seu servidor DNS, que responde com o endereço do seu servidor web. Ao acessar o servidor, o navegador solicita o site "joao.com.br" e o servidor responde enviando o arquivo "/var/www/joao/index.html" ou "index.php" ao cliente.

      Esta configuração parece bem complicada à primeira vista, mas na prática é relativamente simples. Veremos mais detalhes sobre a configuração de servidores Apache com vários domínios mais adiante.

      Continuando, a mesma idéia das duas pastas separadas se aplica aos módulos. A pasta "mods-available" contém a configuração e scripts de inicialização para todos os módulos disponíveis, mas apenas os módulos referenciados (através de um link) na pasta "mods-enabled" são realmente carregados.

      Muita gente simplesmente cria e deleta os links manualmente, mas isso pode ser feito mais rapidamente usando os comandos "a2enmod" e "a2dismod", que ativam e desativam módulos específicos. Para desativar o suporte a PHP, por exemplo, você usaria o comando:

      # a2dismod php4

      Para ativá-lo novamente, usaria:

      # a2enmod php4

      Uma vez que um determinado módulo é ativado, ele fica automaticamente disponível para todos os sites hospedados no servidor. Lembre-se de que, ao mexer na configuração dos módulos ou sites, é sempre necessário recarregar a configuração, para que a alteração entre em vigor:

      # /etc/init.d/apache2 force-reload

      Você tem o mesmo efeito se simplesmente reiniciar o Apache, mas isso não é aconselhável em um sistema de produção, pois vai derrubar temporariamente todos os sites hospedados no servidor ;). Note que, no Apache 1.3, toda a configuração de módulos e sites ia diretamente no arquivo httpd.conf, que o tornava muito mais complexo.

      Outra configuração que foi desmembrada é a configuração de portas, que foi para o arquivo "ports.conf". Originalmente o arquivo vem com uma única linha:

      Listen 80

      É aqui que você altera a porta padrão do seu servidor ao disponibilizá-lo em uma conexão via ADSL (onde a operadora bloqueia a porta 80) ou adicionar novas portas, como faremos mais adiante ao ativar o SSL, por exemplo.

      Alguns serviços de banda larga, como, por exemplo, o Speedy da Telefonica, bloqueiam a porta 80, obrigando os usuários a manter seus servidores em portas alternativas. Você pode também alterar a porta para manter o seu servidor um pouco mais secreto, principalmente se for utilizada uma porta acima de 1024, já que, além do endereço IP ou domínio, os visitantes precisariam saber também a porta do servidor. Ao usar uma porta diferente da padrão, é preciso incluir a porta usada na URL, como em: http://seu-site.com.br:8080.

      Para fazer com que seu servidor escute também a porta 8080, você adicionaria uma nova linha, como em:

      Listen 80
      Listen 8080

      No caso do Apache 1.3, a configuração da porta vai dentro do arquivo "/etc/apache/httpd.conf", na linha "Port 80". Basta alterar o 80 pela porta desejada, salvar o arquivo e reiniciar o Apache para que a alteração entre em vigor. Se você quiser que o servidor escute em várias portas simultaneamente, use a diretiva "Listen" para adicionar as portas desejadas, como em:

      Port 80
      Listen 1080

      Finalmente, chegamos ao arquivo "apache2.conf", que agrupa o "resto" das configurações. É ele que você vai alterar quando, por exemplo, precisar ajustar o número de processos usados pelo Apache ou aumentar o número de conexões simultâneas permitidas pelo servidor.


Nenhum comentário:

Postar um comentário