Introdução

O servidor HTTP Apache é o servidor Web mais amplamente usado no mundo. Ele fornece muitas características poderosas, incluindo módulos carregáveis dinamicamente, suporte robusto de mídia e uma integração extensa com outros softwares populares.

Neste guia, vamos explicar como instalar um servidor Web Apache no seu servidor Debian 9.

Pré-requisitos

Antes de iniciar este guia, você deve ter um usuário regular e não-root com privilégios sudo configurado no seu servidor. Além disso, você precisará habilitar um firewall básico para bloquear portas não essenciais. Você pode aprender como configurar uma conta de usuário regular e configurar um firewall para seu servidor seguindo nosso guia de configuração inicial de servidor para o Debian 9.

Quando você tiver uma conta disponível, logue com seu usuário não-root para começar.

Passo 1 — Instalando o Apache

O Apache está disponível dentro dos repositórios de software padrões do Debian, possibilitando que ele seja instalado usando ferramentas de gerenciamento de pacotes convencionais.

Vamos começar atualizando o índice de pacotes local para refletir as últimas alterações a montante:

  • sudo apt update

Então, instale o pacote apache2:

  • sudo apt install apache2

Após confirmar a instalação, o apt irá instalar o Apache e todas as dependências necessárias.

Passo 2 — Ajustando o Firewall

Antes de testar o Apache, é necessário modificar as configurações do firewall para permitir o acesso exterior às portas Web padrão. Supondo que você tenha seguido as instruções nos pré-requisitos, você deve ter um firewall UFW configurado para restringir o acesso ao seu servidor.

Durante a instalação, o Apache registra-se com o UFW para fornecer alguns perfis de aplicativo que podem ser usados para habilitar ou desabilitar o acesso ao Apache através do firewall.

Liste os perfis de aplicativo ufw digitando:

  • sudo ufw app list

Você verá uma lista dos perfis dos aplicativos:

Output
Available applications: AIM Bonjour CIFS . . . WWW WWW Cache WWW Full WWW Secure . . .

Os perfis Apache começam com WWW:

  • WWW: Este perfil abre apenas a porta 80 (normal, tráfego Web não criptografado)
  • WWW Cache: Este perfil abre apenas a porta 8080 (por vezes usada para cache e proxies Web)
  • WWW Full: Este perfil abre ambas as portas 80 (normal, tráfego Web não criptografado) e 443 (tráfego TLS/SSL criptografado)
  • WWW Secure: Este perfil abre apenas a porta 443 (tráfego TLS/SSL criptografado)

É recomendável que habilite o perfil mais restritivo que ainda assim permitirá o tráfego que você configurou. Como ainda não configurou o SSL para seu servidor neste guia, nós precisaremos apenas permitir o tráfego na porta 80:

  • sudo ufw allow 'WWW'

Você pode verificar a mudança digitando:

  • sudo ufw status

Você deve ver o tráfego HTTP como permitido no resultado exibido:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere WWW ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) WWW (v6) ALLOW Anywhere (v6)

Como você pode ver, o perfil foi ativado para permitir o acesso ao servidor Web.

Passo 3 — Verificando seu Servidor Web

No final do processo de instalação, o Debian 9 inicia o Apache. O servidor Web já deve estar em funcionamento.

Verifique com o sistema init systemd para garantir que o serviço está funcionando digitando:

  • sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2018-09-05 19:21:48 UTC; 13min ago Main PID: 12849 (apache2) CGroup: /system.slice/apache2.service ├─12849 /usr/sbin/apache2 -k start ├─12850 /usr/sbin/apache2 -k start └─12852 /usr/sbin/apache2 -k start Sep 05 19:21:48 apache systemd[1]: Starting The Apache HTTP Server... Sep 05 19:21:48 apache systemd[1]: Started The Apache HTTP Server.

Como você pode ver a partir deste resultado, o serviço parece ter sido iniciado com sucesso. No entanto, a melhor maneira de testar isso é solicitando uma página do Apache.

Você pode acessar a página de destino padrão do Apache para confirmar que o software está funcionando corretamente através do seu endereço IP: Se você não sabe o endereço IP do seu servidor, você pode obtê-lo de algumas maneiras diferentes a partir da linha de comando.

Tente digitar isso no prompt de comando do seu servidor:

  • hostname -I

Você receberá alguns endereços separados por espaços. Você pode testar cada um no seu navegador Web para ver se eles funcionam.

Uma alternativa é usar a ferramento curl, que deve dar a você seu endereço IP público como visto de outro local na internet:

Primeiro, instale o curl usando o apt:

  • sudo apt install curl

Então, use o curl para recuperar o icanhazip.com usando IPv4:

  • curl -4 icanhazip.com

Quando você tiver o endereço IP do seu servidor, digite ele na barra de endereço do seu navegador:

http://your_server_ip

Você deve ver a página Web padrão Apache do Debian 9:

Apache default page

Esta página indica que o Apache está funcionando corretamente. Ela também inclui algumas informações básicas sobre arquivos importantes do Apache e localizações de diretórios importantes.

Passo 4 — Gerenciando o Processo Apache

Agora que você tem seu servidor Web funcionamento, vamos ver alguns comandos básicos de gerenciamento.

Para parar seu servidor Web, digite:

  • sudo systemctl stop apache2

Para iniciar o servidor quando ele for parado, digite:

  • sudo systemctl start apache2

Para parar e então iniciar o serviço novamente, digite:

  • sudo systemctl restart apache2

Se você estiver simplesmente fazendo alterações de configuração, o Apache geralmente pode recarregar sem quedas na conexão. Para fazer isso, utilize este comando:

  • sudo systemctl reload apache2

Por padrão, o Apache está configurado para iniciar automaticamente quando o servidor for iniciado. Se isso não é o que você quer, desative este comportamento digitando:

  • sudo systemctl disable apache2

Para reativar o serviço de inicialização no boot, digite:

  • sudo systemctl enable apache2

O Apache deve começar automaticamente quando o servidor for iniciado outra vez.

Passo 5 — Configurando Hosts Virtuais (Recomendado)

Ao usar o servidor Web Apache, você pode usar _hosts virtuais _(similares a blocos de servidor no Nginx) para encapsular detalhes de configuração e hospedar mais de um domínio de um único servidor. Vamos configurar um domínio chamado example.com, mas você deve substituí-lo por seu próprio nome de domínio. Para aprender mais sobre como configurar um nome de domínio com o DigitalOcean, veja nossa Introdução ao DNS do DigitalOcean.

O Apache no Debian 9 tem um bloco de servidor habilitado por padrão que está configurado para atender documentos do diretório /var/www/html. Enquanto isso funciona bem para um único site, ele pode tornar-se indevido se você estiver hospedado vários sites. Ao invés de modificar o /var/www/html, vamos criar uma estrutura de diretórios dentro do /var/www para nosso site example.com, deixando o /var/www/html no lugar como o diretório padrão para ser servido se um pedido de cliente não corresponder a nenhum outro site.

Crie o diretório para example.com como segue, usando a flag -p para criar quaisquer diretórios parentais necessários:

sudo mkdir -p /var/www/example.com/html

Em seguida, atribua a posse do diretório com a variável de ambiente $USER:

  • sudo chown -R $USER:$USER /var/www/example.com/html

As permissões das suas roots Web devem estar corretas se ainda não tiver modificado seu valor unmask, mas você pode certificar-se digitando:

  • sudo chmod -R 755 /var/www/example.com

A seguir, crie uma página de amostra index.html utilizando o nano ou seu editor favorito:

  • nano /var/www/example.com/html/index.html

Dentro, adicione a seguinte amostra HTML:

/var/www/example.com/html/index.html
<html>
    <head>
        <title>Welcome to Example.com!</title>
    </head>
    <body>
        <h1>Success!  The example.com virtual host is working!</h1>
    </body>
</html>

Salve e feche o arquivo quando você terminar.

Para que o Apache sirva este conteúdo, é necessário criar um arquivo de host virtual com as diretivas corretas. Ao invés de modificar o arquivo de configuração padrão localizado em /etc/apache2/sites-available/000-default.conf diretamente, vamos fazer um novo em /etc/apache2/sites-available/example.com.conf:

  • sudo nano /etc/apache2/sites-available/example.com.conf

Cole no seguinte bloco de configuração, que é similar ao padrão, mas atualizado para nosso novo diretório e nome de domínio:

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Note que atualizamos o DocumentRoot para nosso novo diretório e o ServerAdmin para um e-mail que o administrador do site example.com pode acessar. Também adicionamos duas diretivas: o ServerName, que estabelece o domínio base que deve corresponder e essa definição de host virtual e o ServerAlias, que define nomes adicionais que devem corresponder como se fossem o nome base.

Salve e feche o arquivo quando você terminar.

Vamos habilitar o arquivo com a ferramenta a2ensite:

  • sudo a2ensite example.com.conf

Desabilite o site padrão definido em 000-default.conf:

  • sudo a2dissite 000-default.conf

Em seguida, vamos testar à procura de erros de configuração:

  • sudo apache2ctl configtest

Você deve ver o seguinte resultado:

Output
Syntax OK

Reinicie o Apache para implementar as suas alterações:

  • sudo systemctl restart apache2

O Apache agora deve estar atendendo seu nome de domínio. Você pode testar isso navegando para http://example.com, onde você deve ver algo como isso:

Apache virtual host example

Passo 6 — Familiarizando-se com Arquivos e Diretórios Importantes do Apache

Agora que você sabe como gerenciar o serviço do Apache, você deve gastar alguns minutos para familiarizar-se com alguns diretórios e arquivos importantes.

Conteúdo

  • /var/www/html: O conteúdo Web em si, que por padrão apenas consiste na página Apache padrão que você viu antes, é servido do diretório /var/www/html. Isso pode ser alterado mudando os arquivos de configuração do Apache.

Configuração do Servidor

  • /etc/apache2: O diretório de configuração do Apache. Todos os arquivos de configuração do Apache residem aqui.
  • /etc/apache2/apache2.conf: O arquivo de configuração principal do Apache. Isso pode ser modificado para fazer alterações na configuração global do Apache. Este arquivo é o responsável por carregar muitos dos outros arquivos no diretório de configuração.
  • /etc/apache2/ports.conf: Este arquivo especifica as portas nas quais o Apache irá escutar. Por padrão, o Apache escuta na porta 80 e adicionalmente escuta na porta 443 quando um módulo que fornece capacidades SSL está ativo.
  • /etc/apache2/sites-available/: O diretório onde hosts virtuais de cada site podem ser armazenados. O Apache não usará os arquivos de configuração encontrados neste diretório a menos que estejam ligados ao diretório sites-enabled. Normalmente, todas as configurações de bloco do servidor são feitas neste diretório e então habilitadas ligando-as ao outro diretório com o comando a2ensite.
  • /etc/apache2/sites-enabled/: O diretório onde hosts virtuais habilitados de cada site são armazenados. Normalmente, eles são criados ligando arquivos de configuração encontrados no diretório sites-available com o a2ensite. O Apache lê os arquivos de configuração e links encontrados neste diretório quando inicia ou recarrega para compilar uma configuração completa.
  • /etc/apache2/conf-available/, /etc/apache2/conf-enabled/: Estes diretórios têm a mesma relação que os diretórios sites-available e sites-enabled, mas são usados para armazenar fragmentos de configuração que não pertencem em um host virtual. Arquivos no diretório conf-available podem ser habilitados com o comando a2enconf e desabilitados com o comando a2disconf.
  • /etc/apache2/mods-available/, /etc/apache2/mod-enabled/: Estes diretórios contêm os módulos disponíveis e habilitados, respectivamente. Arquivos com final .load contêm fragmentos para carregar módulos específicos, enquanto os arquivos com final .conf contêm a configuração para esses módulos. Módulos podem ser habilitados e desabilitados utilizando os comandos a2enmod e a2dismod.

Registros do Servidor

  • /var/log/apache2/access.log: Por padrão, cada solicitação feita para seu servidor é gravada neste arquivo de registro a menos que o Apache esteja configurado para fazer de outro modo.
  • /var/log/apache2/error.log: Por padrão, todos os erros são gravados neste arquivo. A diretiva LogLevel na configuração do Apache especifica quanto detalhe os registros de erros irão conter.

Conclusão

Agora que você tem seu servidor Web instalado, você tem muitas opções para o tipo de conteúdo que você pode oferecer e as tecnologias que você quiser usar para criar uma experiência mais rica.

Se você quiser construir uma pilha de aplicativo mais completa, verifique este artigo sobre como configurar uma pilha LAMP no Debian 9.

0 Comments

Creative Commons License