Introdução
Apache é atualmente o servidor web mais amplamente utilizado no mundo. É um software de código aberto desenvolvido há mais de vinte anos e mantido pela Apache Software Foundation. Em setembro de 2020, estimava-se que ele servia 35% de todo o tráfego de sites no mundo.
Os desenvolvedores preferem o Apache por sua velocidade, segurança, confiabilidade, robustez e facilidade de personalização. Além disso, o Apache é capaz de atender às necessidades de muitos ambientes, pois permite a instalação de várias extensões e módulos. Isso é possível devido a um conjunto de configurações que os desenvolvedores e administradores de servidores podem modificar para atender a diferentes propósitos. Neste tutorial, guiaremos você pelas opções e arquivos de configuração geral que podem afetar diferentes resultados em servidores Ubuntu e Debian.
Debian e Ubuntu estão entre os principais sistemas operacionais de servidor de escolha. Ambos possuem muitas semelhanças. Por exemplo, ambos usam o gerenciador de pacotes APT e pacotes DEB para instalação manual. Eles lidam com as configurações do Apache e a estrutura de diretórios de forma semelhante. Portanto, você deve ser capaz de seguir este tutorial com qualquer um dos sistemas operacionais. Primeiro, você pode seguir este tutorial para configurar um servidor Ubuntu em poucos passos.
Em seguida, faça login como um usuário não-root com privilégios sudo, e vamos começar!
Como instalar o Apache no Ubuntu e Debian
Se o seu servidor ainda não tiver o Apache, você pode instalá-lo facilmente usando um único comando. Primeiro, execute o comando de atualização:
|
1 |
sudo apt-get update |
Depois, você pode instalar o Apache emitindo o seguinte comando:
|
1 |
sudo apt-get install apache2 |
Quando a instalação for concluída, você poderá verificar a versão instalada usando o comando:
|
1 |
apache2 -v |
No momento da redação deste tutorial, a versão era:

Depois disso, visite o endereço IP ou nome de domínio do seu servidor. Você deverá ver a página de índice padrão do Apache:

A hierarquia de arquivos do Apache nas distribuições Ubuntu e Debian
Ambas as distribuições Ubuntu e Debian usam o gerenciador de pacotes apt. Da mesma forma, quando você instala um pacote, ele cria hierarquias de arquivos semelhantes. No nosso caso, tanto para o Ubuntu quanto para o Debian, o Apache mantém seus arquivos de configuração dentro do diretório “/etc/apache2”. Acesse o diretório usando o seguinte comando e liste o conteúdo do diretório:
|
1 2 |
cd /etc/apache2 ls -F |
Você pode ver a saída do comando na captura de tela abaixo:

Você pode ver vários arquivos e subdiretórios com os quais deve estar familiarizado ao configurar um servidor Apache. Aqui está a descrição deles:
- apache2.conf – É o arquivo de configuração principal para um servidor Apache. Além disso, ele contém todas as configurações padrão. Embora quase todas as configurações possam ser feitas de dentro deste arquivo, é sempre recomendado usar arquivos designados separados para simplificar e proteger este arquivo padrão contra corrupção.
- conf-available – É o diretório que contém arquivos de configuração local adicionais e arquivos de outras aplicações que ainda não estão associados a nenhum módulo. As configurações neste diretório não ficam ativas a menos que você as habilite. O comando a2enconf pode habilitar um arquivo de configuração. Aqui está o conteúdo deste diretório:

- conf-enabled – É o diretório que contém configurações locais adicionais e arquivos de configuração de outras aplicações associadas aos seus módulos correspondentes. Os arquivos de configuração neste diretório estão ativos e afetam o comportamento do Apache. Você pode desabilitar um arquivo de configuração usando o comando a2disconf. Aqui está o conteúdo deste diretório:

- envvars – É o arquivo que contém as variáveis de ambiente do Apache2. As variáveis neste arquivo afetam apenas o Apache e não estão relacionadas ao seu sistema Linux. Aqui está o conteúdo do arquivo:

- magic – É o arquivo que contém instruções para determinar o tipo MIME de um arquivo. Ele ajuda o servidor a determinar o tipo de um arquivo.
- mods-available – É o diretório que contém os arquivos de configuração para carregar módulos e configurá-los. No entanto, eles ainda não estão ativados. Você pode ativá-los usando o comando a2enmod.
- mods-enabled – É o diretório que contém os arquivos de configuração para carregar módulos e configurá-los. As configurações neste diretório já estão ativadas e apontam para os módulos correspondentes. Você pode desativar os módulos com o comando a2dismod.
- ports-conf – É o arquivo que especifica as portas disponíveis para hosts virtuais e as portas TCP nas quais o Apache está escutando.
- sites-available – É o diretório que contém os arquivos de configuração disponíveis para hosts virtuais do Apache. Os hosts virtuais permitem que o Apache sirva diferentes sites. Os arquivos neste diretório ainda não estão ativos. Você pode ativar um arquivo de host virtual com o comando a2ensite.
- sites-enabled – É o diretório que contém os arquivos de configuração de hosts virtuais ativados. Geralmente contém links simbólicos para os arquivos no diretório sites-available. Você pode desativar um arquivo de host virtual usando o comando a2dissite.
O design modular dos arquivos de configuração do Apache permite que você modifique e adicione arquivos conforme necessário.
Conteúdo do Arquivo Apache2.conf
O arquivo em “/etc/apache2/apache2.conf” contém os principais arquivos de configuração do Apache. Mais especificamente, contém as diretivas de configuração que dão as instruções ao servidor. Ele consiste em três seções para definir as configurações do servidor global de processos, a configuração do servidor padrão e as configurações dos hosts virtuais .
Nos sistemas Ubuntu e Debian, a maior parte do arquivo contém as configurações de processo do servidor global. Perto do final, você pode encontrar as configurações para o servidor padrão e os hosts virtuais usando a diretiva “Include”. O Apache usa a diretiva “Include” para ler outros arquivos de configuração e incluí-los no arquivo de configuração atual, a partir do ponto onde a diretiva aparece. Isso acontece na inicialização do servidor Apache.
Rolando até o final do arquivo apache2.conf, você deve ver várias diretivas include. As diretivas carregam as definições dos módulos no diretório mods-enabled, no arquivo ports.conf, as configurações locais no diretório conf-enabled e as configurações dos hosts virtuais no diretório sites-enabled .
Seção de Configuração Global do Servidor
A seção de configuração global do servidor contém as definições e instruções que controlam como o Apache funciona globalmente. Ela apresenta algumas diretivas cujos valores você pode modificar para alterar o comportamento do Apache. Vamos discutir algumas delas:
- Timeout – Esta diretiva especifica o tempo máximo para o servidor atender a uma solicitação. Por padrão, é de 300 segundos, o que provavelmente é muito alto se você estiver desenvolvendo um aplicativo de resposta mais rápida. Você pode alterar isso para um valor menor se o seu servidor tiver recursos suficientes.
- KeepAlive – Especifica que cada conexão deve permanecer aberta para lidar com várias solicitações do mesmo cliente. Por padrão, está definido como “On”. No entanto, se estiver definido como “Off”, cada solicitação terá que estabelecer uma nova conexão, mesmo que seja do mesmo cliente. Isso pode causar uma sobrecarga significativa no servidor.
- MaxKeepAliveRequests – Controla o número máximo de solicitações permitidas durante uma única conexão persistente antes de expirar. Para permitir um número ilimitado de conexões, defina o valor como 0. Para obter o máximo de desempenho e eficiência, defina o número para o valor mais alto possível.
- KeepAliveTimeout – Determina o número máximo de segundos a aguardar pela próxima solicitação do mesmo cliente após a última antes que a conexão expire. O padrão é 5 segundos. Se o tempo expirar, na próxima solicitação, uma nova conexão será feita para processar a solicitação.
- HostnameLookups – Decide se a busca de DNS deve ser ativada ou não. Por padrão, está desativada. Se você ativá-la, cada solicitação resultará em pelo menos uma busca no servidor de nomes, o que afetará negativamente e de forma significativa o desempenho do seu servidor.
Arquivo de Host Virtual Padrão
Uma instalação limpa do servidor Apache vem com um arquivo de host virtual padrão chamado 000-default.conf. Este é o arquivo que serve a página padrão index.html do Apache. Ele fica no diretório sites-available. O conteúdo deste arquivo lhe dará uma ideia geral do formato dos arquivos de host virtual do Apache. Insira o seguinte comando para abrir o arquivo:
|
1 |
sudo nano /etc/apache2/sites-available/000-default.conf |
Aqui está o conteúdo do arquivo. Removemos os comentários para fins de brevidade:
|
1 2 3 4 5 6 7 8 9 |
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Como você pode ver no cabeçalho de configuração VirtualHost *:80, por padrão, este host virtual está configurado para lidar com requisições na porta 80. Esta é a porta HTTP padrão.
O Apache foi projetado para usar a definição de host virtual mais específica que corresponda a uma determinada requisição. Isso significa que este host virtual específico não necessariamente lidará com cada requisição ao servidor. Em vez disso, se houvesse outro arquivo de host virtual com uma definição mais específica, ele anularia este arquivo.
Aqui estão as descrições das diretivas no arquivo de host virtual:
- ServerAdmin – Especifica o e-mail de contato a ser usado quando houver problemas no servidor. O Apache geralmente exibe isso em sua página de erro gerada. Se você definir ServerSignature como “Email” no arquivo /etc/apache2/conf-enabled/security.conf file, o endereço de e-mail especificado aqui será exibido com um link mailto
- DocumentRoot – Esta diretiva aponta para o diretório que contém os arquivos do site. Você pode encontrar a página de boas-vindas padrão do Apache no diretório /var/www/html no Ubuntu 20.04.
- ErrorLog – Esta diretiva determina o local do arquivo de log de erros.
- CustomLog – Esta diretiva mostra o local do log de acesso e o formato de exibição do log.
Diretivas Adicionais de Host Virtual
- ServerName – Especifica o nome de domínio ou endereço IP que o host virtual deve gerenciar. Se estivéssemos definindo múltiplos hosts virtuais para que nosso servidor Apache pudesse servir múltiplos sites, adicionaríamos uma diretiva ServerName e especificaríamos o domínio que cada host virtual deve servir.
- ServerAlias – Esta diretiva faz com que um arquivo de host virtual se aplique a mais de um nome, fornecendo domínios alternativos para chegar ao mesmo conteúdo. Por exemplo, quando seus usuários têm acesso ao mesmo conteúdo se precederem seu nome de domínio com www. Por exemplo, poderíamos adicionar o seguinte ao host virtual para o domínio example.com:
|
1 2 |
ServerName example.com ServerAlias www.example.com |
A Diretiva de Definição de Diretório
Em casos do mundo real, você provavelmente terá os arquivos do seu site em vários diretórios. O arquivo de host virtual padrão não possui a diretiva Directory porque ele só pode servir um arquivo index.html. A diretiva Directory especifica como o Apache lida com diferentes diretórios dentro da raiz de documentos do site. É nesta diretiva que você também define as restrições de acesso ao sistema de arquivos. Por padrão, o Apache só permite acesso da Internet aos arquivos no diretório /var/www. Neste diretório, você pode criar outros diretórios que conterão os arquivos do seu site. Além disso, você pode especificar como deseja que os arquivos no diretório sejam acessados. Uma definição de exemplo pode ser assim:
|
1 2 3 4 5 |
<Directory /var/www/html> Options Indexes FollowSymLinks MultiViews Require all granted AllowOverride all </Directory> |
O <Directory /var/www/html> especifica o diretório ao qual essas regras se aplicarão. O “AllowOverride” especifica se um arquivo “.htaccess” deve substituir as configurações se você o colocar no diretório especificado. Isso é necessário ao trabalhar com frameworks como o Laravel que funcionam com .htaccess e reescrita de URL.
Para saber mais sobre hosts virtuais, você pode visitar o nosso tutorial sobre como configurar hosts virtuais Apache no Ubuntu 20.04. Aqui está um exemplo de arquivo de host virtual com todas as diretivas que definimos:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin webmaster@localhost.com DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/html> Options Indexes FollowSymLinks MultiViews Require all granted AllowOverride all </Directory> </VirtualHost> |
Diretivas Redirect, Alias e ScriptAlias
Em alguns casos, você pode querer acessar arquivos ou executáveis do site que não estão diretamente sob o diretório DocumentRoot. É aqui que essas três diretivas entram em ação.
A diretiva Redirect instrui os clientes a fazerem uma nova requisição com uma URL diferente. Geralmente, você a usará quando quiser direcionar os visitantes do seu site para um nome de domínio ou endereço IP diferente. Observe que Redirect é executado primeiro, antes de Alias e ScriptAlias. A diretiva Alias mapeia uma URL para um caminho de diretório. A diretiva ScriptAlias mapeia uma URL para os diretórios que conterão scripts executáveis. Para que o Alias e o ScriptAlias funcionem, você deve definir as permissões do diretório para o usuário www-data que a web utiliza.
Como habilitar sites e módulos no Apache
Os hosts virtuais e módulos devem ser habilitados antes de se tornarem ativos e acessíveis ao processo do Apache. Além disso, os hosts virtuais são criados dentro do diretório sites-available como explicado. Se você tiver um arquivo de host virtual com o nome example.com.conf, você pode habilitá-lo usando o seguinte comando:
|
1 |
sudo a2ensite example.com.conf |
O comando habilita o host virtual. No entanto, para que as alterações entrem em vigor, você deve instruir o Apache a recarregar os arquivos de configuração inserindo o seguinte comando:
|
1 |
sudo service apache2 reload |
Você pode querer desabilitar um arquivo de host virtual chamado example.com.conf para que o Apache não o use para atender a requisições. Para fazer isso, insira o seguinte comando para desabilitar um arquivo:
|
1 |
sudo a2dissite example.com.conf |
Novamente, para que as alterações entrem em vigor imediatamente, você deve instruir o Apache a recarregar os arquivos de configuração inserindo o seguinte comando:
|
1 |
sudo service apache2 reload |
Da mesma forma, você pode habilitar e desabilitar módulos usando a mesma sintaxe. O comando para habilitar um módulo é “a2enmod” e o comando para desabilitar um módulo é “a2dismod.” Por exemplo, existe um módulo do Apache chamado mod_rewrite que auxilia na reescrita de URLs dependendo das configurações do .htaccess. Você deve habilitar este módulo para que o arquivo .htaccess funcione. Você pode fazer isso inserindo o comando:
|
1 |
sudo a2enmod rewrite |
Para que essa alteração entre em vigor, você deve recarregar as configurações do Apache. Você também pode desabilitar o módulo inserindo o comando:
|
1 |
sudo a2dismod rewrite |
Depois disso, recarregue as configurações do Apache2 para que as alterações entrem em vigor imediatamente.
Finalmente, aqui estão mais alguns recursos que ajudarão você a se familiarizar com o servidor web Apache:
- Instalando o Servidor Apache no Ubuntu 18.04: Um Guia Prático
- Como instalar a stack Linux, Apache, MySQL, PHP (LAMP) no CentOS 7
- Protegendo o Apache com Let’s Encrypt no Ubuntu 18.04
- O mundo dos servidores web: Apache vs. Nginx
Conclusão
Neste tutorial, definimos os arquivos de configuração básicos do Apache em sistemas Ubuntu e Debian. Como demonstramos, o Apache é altamente modular, o que significa que você pode instalar muitos módulos para realizar tarefas diferentes.
Você pode facilmente ativar e desativar esses módulos e alterar outras configurações para obter resultados diferentes. Agora você pode modificar os arquivos de configuração locais que são então incluídos no arquivo de configuração principal. Assim, você não precisa se preocupar em corromper o arquivo de configuração global.
Boa computação!
Comentários
Nenhum comentário ainda. Seja o primeiro.