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.
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.
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.
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:
OutputAvailable applications:
AIM
Bonjour
CIFS
. . .
WWW
WWW Cache
WWW Full
WWW Secure
. . .
Os perfis Apache começam com WWW:
É 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:
OutputStatus: 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.
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:
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.
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.
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:
<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:
<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:
OutputSyntax 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:
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.
/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./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
./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.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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!