Introdução
O servidor HTTP Apache é o servidor web mais amplamente utilizado no mundo. Ele oferece muitos recursos poderosos, incluindo módulos carregáveis dinamicamente, suporte robusto a mídia e extensa integração com outros softwares populares.
Neste guia, você aprenderá como instalar um servidor web Apache em seu servidor Ubuntu 22.04.
Implante suas aplicações do GitHub usando a Plataforma de Aplicativos DigitalOcean. Deixe a DigitalOcean focar na escalabilidade do seu aplicativo.
Pré-requisitos
Antes de começar este guia, você precisará de um servidor Ubuntu 22.04 configurado com um usuário não root com privilégios sudo
e um firewall ativado para bloquear portas não essenciais. Você pode aprender como fazer isso seguindo nosso guia de configuração inicial do servidor para Ubuntu 22.04.
Depois de configurar isso, faça login como seu usuário não root e prossiga para o primeiro passo.
Passo 1 — Instalando o Apache
O Apache está disponível nos repositórios de software padrão do Ubuntu, tornando possível instalá-lo usando ferramentas convencionais de gerenciamento de pacotes.
Comece atualizando o índice de pacotes local para refletir as últimas alterações upstream:
Em seguida, instale o pacote apache2
:
Após confirmar a instalação, o apt
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 acesso externo às portas web padrão. Se você seguiu as instruções nos pré-requisitos, deverá ter um firewall UFW configurado para restringir o acesso ao seu servidor.
Durante a instalação, o Apache se registra no UFW para fornecer alguns perfis de aplicativos que podem ser usados para habilitar ou desabilitar o acesso ao Apache através do firewall.
Liste os perfis de aplicativos ufw
executando o seguinte:
A saída será uma lista dos perfis de aplicativos:
OutputAvailable applications:
Apache
Apache Full
Apache Secure
OpenSSH
Como indicado pela saída, existem três perfis disponíveis para o Apache:
Apache
: Este perfil abre apenas a porta80
(tráfego web normal, não criptografado)Apache Completo
: Este perfil abre tanto a porta80
(tráfego web normal, não criptografado) quanto a porta443
(tráfego criptografado TLS/SSL)Apache Seguro
: Este perfil abre apenas a porta443
(tráfego criptografado TLS/SSL)
É recomendável que você habilite o perfil mais restritivo que ainda permita o tráfego que você configurou. Como você ainda não configurou SSL para o seu servidor neste guia, você só precisará permitir o tráfego na porta 80
:
Você pode verificar a alteração verificando o status:
A saída fornecerá uma lista de tráfego HTTP permitido:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
Como indicado pela saída, o perfil foi ativado para permitir o acesso ao servidor web Apache.
Passo 3 — Verificando seu Servidor Web
No final do processo de instalação, o Ubuntu 22.04 inicia o Apache. O servidor web já estará em funcionamento.
Verifique se o serviço está ativo executando o comando para o sistema de inicialização systemd
:
Output● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: active (running) since Tue 2022-04-26 15:33:21 UTC; 43s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 5089 (apache2)
Tasks: 55 (limit: 1119)
Memory: 4.8M
CPU: 33ms
CGroup: /system.slice/apache2.service
├─5089 /usr/sbin/apache2 -k start
├─5091 /usr/sbin/apache2 -k start
└─5092 /usr/sbin/apache2 -k start
Conforme confirmado por esta saída, o serviço foi iniciado com sucesso. No entanto, a melhor maneira de testar isso é solicitar uma página do Apache.
Você pode acessar a página padrão de boas-vindas 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, pode obtê-lo de algumas maneiras diferentes a partir da linha de comando.
Tente escrever o seguinte no prompt de comando do seu servidor:
Você receberá alguns endereços separados por espaços. Você pode tentar cada um no seu navegador da web para determinar se funcionam.
Outra opção é usar a ferramenta gratuita icanhazip.com
. Este é um site que, ao ser acessado, retorna o endereço IP público da sua máquina conforme lido de outro local na internet:
Quando você tiver o endereço IP do seu servidor, digite-o na barra de endereço do seu navegador:
http://your_server_ip
Você verá a página padrão do Apache do Ubuntu 22.04 como a seguinte:
Esta página indica que o Apache está funcionando corretamente. Também inclui algumas informações básicas sobre arquivos e diretórios importantes do Apache.
Passo 4 — Gerenciando o Processo do Apache
Agora que você tem seu servidor web funcionando, vamos revisar alguns comandos básicos de gerenciamento usando o systemctl
.
Para parar seu servidor web, execute:
Para iniciar o servidor web quando ele estiver parado, execute:
Para parar e depois iniciar o serviço novamente, execute:
Se você estiver apenas fazendo alterações de configuração, o Apache frequentemente pode recarregar sem desconectar as conexões. Para fazer isso, use o seguinte comando:
Por padrão, o Apache está configurado para iniciar automaticamente quando o servidor é inicializado. Se isso não for o que você deseja, desative esse comportamento executando:
Para reativar o serviço para iniciar na inicialização, execute:
O Apache agora iniciará automaticamente quando o servidor for inicializado novamente.
Passo 5 — Configurando Virtual Hosts (Recomendado)
Ao usar o servidor web Apache, você pode usar hosts virtuais (semelhante a blocos de servidor no Nginx) para encapsular detalhes de configuração e hospedar mais de um domínio em um único servidor. Vamos configurar um domínio chamado seu_domínio, mas você deve substituir isso pelo seu próprio nome de domínio.
Informação: Se você estiver configurando um nome de domínio com a DigitalOcean, consulte nossa Documentação de Rede.
O Apache no Ubuntu 22.04 possui um bloco de servidor habilitado por padrão que está configurado para servir documentos a partir do diretório /var/www/html
. Embora isso funcione bem para um único site, pode se tornar complicado se você estiver hospedando vários sites. Em vez de modificar /var/www/html
, crie uma estrutura de diretórios dentro de /var/www
para um site seu_domínio, deixando /var/www/html
no lugar como o diretório padrão a ser servido se uma solicitação de cliente não corresponder a nenhum outro site.
Crie o diretório para seu_domínio da seguinte maneira:
Em seguida, atribua a propriedade do diretório ao usuário com o qual você está conectado atualmente com a variável de ambiente $USER
:
As permissões da sua raiz da web devem estar corretas se você não tiver modificado o valor da máscara de permissão padrão, que define as permissões de arquivo padrão. Para garantir que suas permissões estejam corretas e permitam que o proprietário leia, escreva e execute os arquivos, enquanto concedem apenas permissões de leitura e execução para grupos e outros, você pode inserir o seguinte comando:
Em seguida, crie uma página de index.html
de exemplo usando o nano
ou seu editor favorito:
Dentro dela, adicione o seguinte HTML de exemplo:
Salve e feche o arquivo quando terminar. Se estiver usando o nano
, você pode fazer isso pressionando CTRL + X
, depois Y
e ENTER
.
Para que o Apache possa servir este conteúdo, é necessário criar um arquivo de host virtual com as diretivas corretas. Em vez de modificar diretamente o arquivo de configuração padrão localizado em /etc/apache2/sites-available/000-default.conf
, crie um novo em /etc/apache2/sites-available/seu_domínio.conf
:
Adicione o seguinte bloco de configuração, semelhante ao padrão, mas atualizado para o seu novo diretório e nome de domínio:
Observe que atualizamos o DocumentRoot
para o nosso novo diretório e ServerAdmin
para um e-mail que o administrador do site seu_domínio pode acessar. Também adicionamos duas diretivas: ServerName
, que estabelece o domínio base que corresponderá a esta definição de host virtual, e ServerAlias
, que define outros nomes que corresponderão como se fossem o nome base.
Salve e feche o arquivo quando terminar.
Agora, habilite o arquivo com a ferramenta a2ensite
:
Desative o site padrão definido em 000-default.conf
:
Em seguida, teste por erros de configuração:
Você deverá receber a seguinte saída:
Output. . .
Syntax OK
Reinicie o Apache para implementar suas alterações:
O Apache agora estará servindo o nome do seu domínio. Você pode testar isso navegando para http://seu_domínio
, onde verá algo semelhante ao seguinte:
Passo 6 – Familiarizando-se com Arquivos e Diretórios Importantes do Apache
Agora que você sabe como gerenciar o serviço Apache em si, deve dedicar alguns minutos para se familiarizar com alguns diretórios e arquivos importantes.
Conteúdo
/var/www/html
: O conteúdo web real, que por padrão consiste apenas na página padrão do Apache que você viu anteriormente, é servido a partir do diretório/var/www/html
. Isso pode ser alterado modificando 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 principal arquivo de configuração do Apache. Isso pode ser modificado para fazer alterações na configuração global do Apache. Este arquivo é 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 porta80
e adicionalmente na porta443
quando um módulo que fornece capacidades SSL está habilitado./etc/apache2/sites-available/
: O diretório onde os hosts virtuais por site podem ser armazenados. O Apache não utilizará os arquivos de configuração encontrados neste diretório a menos que eles estejam vinculados ao diretóriosites-enabled
. Tipicamente, toda a configuração de bloco de servidor é feita neste diretório e então habilitada vinculando ao outro diretório com o comandoa2ensite
./etc/apache2/sites-enabled/
: O diretório onde os hosts virtuais por site habilitados são armazenados. Tipicamente, estes são criados vinculando aos arquivos de configuração encontrados no diretóriosites-available
com o comandoa2ensite
. O Apache lê os arquivos de configuração e os links encontrados neste diretório quando ele 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óriossites-available
esites-enabled
mas são usados para armazenar fragmentos de configuração que não pertencem a um host virtual. Arquivos no diretórioconf-available
podem ser habilitados com o comandoa2enconf
e desabilitados com o comandoa2disconf
./etc/apache2/mods-available/
,/etc/apache2/mods-enabled/
: Estes diretórios contêm os módulos disponíveis e habilitados, respectivamente. Arquivos com extensão.load
contêm fragmentos para carregar módulos específicos, enquanto arquivos com extensão.conf
contêm a configuração para esses módulos. Os módulos podem ser habilitados e desabilitados usando os comandosa2enmod
ea2dismod
.
Logs do Servidor
/var/log/apache2/access.log
: Por padrão, cada solicitação ao seu servidor web é registrada neste arquivo de log, a menos que o Apache esteja configurado de outra forma./var/log/apache2/error.log
: Por padrão, todos os erros são registrados neste arquivo. A diretivaLogLevel
na configuração do Apache especifica quanta detalhe os logs de erro conterão.
Conclusão
Agora que você tem seu servidor web instalado, você tem muitas opções para o tipo de conteúdo que pode servir e as tecnologias que pode usar para criar uma experiência mais rica.
Se você gostaria de construir uma pilha de aplicativos mais completa, você pode ler este artigo sobre como configurar uma pilha LAMP no Ubuntu 22.04