Tutorial

Como Instalar o Servidor Web Apache no CentOS 8

CentOSApacheCentOS 8

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, você instalará um servidor web Apache com hosts virtuais em seu servidor CentOS 8.

Pré-requisitos

Você precisará do seguinte para completar este guia:

Passo 1 — Instalando o Apache

O Apache está disponível dentro dos repositórios de software padrão do CentOS, o que significa que você pode instalá-lo com o gerenciador de pacotes dnf.

Como o usuário sudo não root configurado nos pré-requisitos, instale o pacote Apache:

  • sudo dnf install httpd

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

Ao completar o Passo 4 do tutorial de Configuração Inicial de Servidor com o CentOS 8 mencionado na seção de pré-requisitos, você já terá instalado o firewalld em seu servidor para exibir solicitações por HTTP.

Se você também planeja configurar o Apache para fornecer conteúdo por HTTPS, você também irá querer abrir a porta 443 habilitando o serviço https:

  • sudo firewall-cmd --permanent --add-service=https

Em seguida, recarregue o firewall para colocar essas novas regras em vigor:

  • sudo firewall-cmd --reload

Após o firewall recarregar, você está pronto para iniciar o serviço e verificar o servidor web.

Passo 2 — Verificando seu Servidor Web

O Apache não inicia automaticamente no CentOS assim que a instalação termina. Dessa forma você precisará iniciar o processo Apache manualmente:

  • sudo systemctl start httpd

Verifique se o serviço está em execução com o seguinte comando:

  • sudo systemctl status httpd

Você receberá um status active quando o serviço estiver executando:

Output
● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disa> Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago Docs: man:httpd.service(8) Main PID: 14219 (httpd) Status: "Running, listening on: port 80" Tasks: 213 (limit: 5059) Memory: 24.9M CGroup: /system.slice/httpd.service ├─14219 /usr/sbin/httpd -DFOREGROUND ├─14220 /usr/sbin/httpd -DFOREGROUND ├─14221 /usr/sbin/httpd -DFOREGROUND ├─14222 /usr/sbin/httpd -DFOREGROUND └─14223 /usr/sbin/httpd -DFOREGROUND ...

Como essa saída indica, o serviço foi 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.

Digite q para retornar ao prompt de comando e, em seguida, digite:

  • hostname -I

Este comando exibirá todos os endereços de rede do host. Dessa forma, você irá obter alguns endereços IP separados por espaços. Você pode testar cada um deles em seu navegador web para ver se eles funcionam.

Alternativamente, você pode usar o curl para solicitar seu IP a partir do icanhazip.com, o que dará a você o endereço IPv4 público como visto de outro local na Internet:

  • curl -4 icanhazip.com

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 web padrão do Apache no CentOS 8:

Default Apache page for CentOS 8

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 3 — Gerenciando o Processo do Apache

Agora que o serviço está instalado e em execução, você pode agora usar diferentes comandos systemctl para gerenciar o serviço.

Para parar seu servidor Web, digite:

  • sudo systemctl stop httpd

Para iniciar o servidor web quando ele estiver parado, digite:

  • sudo systemctl start httpd

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

  • sudo systemctl restart httpd

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 httpd

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 httpd

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

  • sudo systemctl enable httpd

O Apache agora irá iniciar automaticamente quando o servidor for reiniciado novamente.

A configuração padrão para o Apache permitirá que seu servidor hospede um único site. Se você planeja hospedar vários domínios em seu servidor, você precisará configurar virtual hosts em seu servidor web Apache.

Passo 4 — Configurando Hosts Virtuais (Recomendado)

Ao utilizar o servidor web Apache, você pode usar virtual hosts (se você estiver mais familiarizado com o Nginx, esses são semelhantes aos blocos de servidor) para encapsular detalhes de configuração e hospedar mais de um domínio em um único servidor. Neste passo,vamos configurar um domínio chamado example.com, mas você deve substituí-lo por seu próprio nome de domínio. Se você estiver configurando um nome de domínio com a DigitalOcean, consulte nossa Documentação de Rede.

O Apache no CentOS 8 tem um virtual host habilitado por padrão que está configurado para exibir documentos do diretório /var/www/html. Enquanto isso funciona bem para um único site, ele pode tornar-se indevido se você estiver hospedando vários sites. Em vez de modificar o /var/www/html, você irá criar uma estrutura de diretórios dentro do /var/www para o site example.com, deixando o /var/www/html intocado como o diretório padrão para ser servido se uma solicitação de cliente não corresponder a nenhum outro site.

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

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

Crie um diretório adicional para armazenar arquivos de logs para o site:

  • sudo mkdir -p /var/www/example.com/log

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

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

Certifique-se de que seu web root tenha as permissões padrão configuradas:

  • sudo chmod -R 755 /var/www

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

  • sudo vi /var/www/example.com/html/index.html

Pressione i para mudar para o modo INSERT e adicione o seguinte exemplo HTML ao arquivo:

/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 pressionando ESC, digitando :wq e pressionando ENTER.

Com seu diretório do site e o arquivo de index prontos, você está quase pronto para criar os arquivos de virtual host. Os arquivos de virtual host especificam a configuração de seus sites separados e informam ao servidor Apache como responder a várias solicitações de domínios.

Antes de criar seus virtual hosts, você precisará criar um diretório sites-available para armazená-los. Você também criará o diretório sites-enabled que informa ao Apache que um virtual host está pronto para servir aos visitantes. O diretório sites-enabled terá links simbólicos para os virtual hosts que queremos publicar. Crie ambos os diretórios com o seguinte comando:

  • sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

Em seguida, você irá informar ao Apache para procurar virtual hosts no diretório sites-enabled. Para conseguir isso, edite o arquivo de configuração principal do Apache usando o vi ou seu editor de texto favorito e adicione uma linha que declara um diretório opcional para arquivos de configuração adicionais:

  • sudo vi /etc/httpd/conf/httpd.conf

Pressione o G maiúsculo para navegar até o final do arquivo. Em seguida pressione i para mudar para o modo INSERT e adicione a seguinte linha ao final do arquivo:

/etc/httpd/conf/httpd.conf
...
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf

Salve e feche o arquivo quando terminar de adicionar essa linha. Agora que você tem seus diretórios de virtual host prontos, você criará seu arquivo de virtual host.

Comece criando um novo arquivo no diretório sites-available:

  • sudo vi /etc/httpd/sites-available/example.com.conf

Adicione no seguinte bloco de configuração e mude o domínio example.com para o seu nome de domínio:

/etc/httpd/sites-available/example.com.conf
<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    DocumentRoot /var/www/example.com/html
    ErrorLog /var/www/example.com/log/error.log
    CustomLog /var/www/example.com/log/requests.log combined
</VirtualHost>

Isso dirá ao Apache onde encontrar o web root diretamente que contém os documentos web publicamente acessíveis. Ele também informa ao Apache onde armazenar erros e logs de solicitações para este site em particular.

Salve e feche o arquivo quando você terminar.

Agora que você criou os arquivos de virtual host, você os habilitará para que o Apache saiba como exibi-los aos visitantes. Para fazer isso, crie um link simbólico para cada virtual host no diretório sites-enabled:

  • sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

Agora, seu virtual host está configurado e pronto para servir o conteúdo. Antes de reiniciar o serviço Apache, vamos garantir que o SELinux está com as políticas corretas prontas para seus virtual hosts.

Passo 5 — Ajustando as Permissões SELinux para Virtual Hosts (Recomendado)

O SELinux é um módulo de segurança do Kernel Linux, que aumenta a segurança dos sistemas Linux. O CentOS 8 vem equipado com o SELinux configurado para funcionar com a configuração padrão do Apache. Como você alterou a configuração padrão configurando um diretório de log personalizado no arquivo de configuração de virtual hosts, você receberá um erro caso você tentar iniciar o serviço Apache. Para resolver isso, você precisa atualizar as políticas do SELinux para permitir que o Apache escreva nos arquivos necessários.

Há diferentes maneiras de definir políticas baseadas nas necessidades do seu ambiente, uma vez que o SELinux permite que você personalize seu nível de segurança. Este passo irá abordar dois métodos de ajuste das políticas do Apache: universalmente e em um diretório específico. O ajuste das políticas em diretórios é mais seguro. Portanto, é a abordagem recomendada.

Ajustando as Políticas do Apache Universalmente

Definir a política do Apache universalmente irá informar ao SELinux para tratar de todos os processos de Apache de maneira idêntica, utilizando o Booleano httpd_unified. Embora essa abordagem seja mais conveniente, ela não lhe dará o mesmo nível de controle como uma abordagem que se concentra em uma política de arquivos ou diretórios.

Execute o seguinte comando para definir uma política universal do Apache:

  • sudo setsebool -P httpd_unified 1

O comando setsebool altera os valores Booleanos do SELinux. A flag -P atualizará o valor de inicialização, fazendo com que essa alteração persista em reinicializações. O httpd_unified é o Booleano que dirá ao SELinux para tratar todos os processos do Apache como sendo do mesmo tipo, então você o habilitou com um valor de 1.

Ajustando as Políticas do Apache em um Diretório

Configurando individualmente as permissões do SELinux para o diretório /var/www/example.com/log dará a você mais controle sobre suas políticas do Apache, mas também pode precisar de mais manutenção. Como essa opção não define políticas universalmente, você precisará definir manualmente o tipo de contexto para quaisquer novos diretórios de logs especificados em sua configuração de virtual host.

Primeiro, verifique o tipo de contexto que o SELinux deu ao diretório /var/www/example.com/log:

  • sudo ls -dlZ /var/www/example.com/log/

Este comando lista e mostra o contexto SELinux do diretório. Você receberá um resultado similar ao seguinte:

Output
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

O contexto atual é o httpd_sys_content_t, que informa ao SELinux que o processo Apache pode ler apenas os arquivos criados neste diretório. Neste tutorial, você alterará o tipo de contexto do diretório /var/www/example.com/log para httpd_log_t. Este tipo permitirá ao Apache gerar e anexar aos arquivos de log de aplicações web:

  • sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

Em seguida, use o comando restorecon para aplicar essas alterações e persisti-las entre as reinicializações:

  • sudo restorecon -R -v /var/www/example.com/log

A flag -R executa esse comando de maneira recursiva, o que significa que ele atualizará todos os arquivos existentes para usar o novo contexto. A flag -v exibirá as alterações de contexto que o comando fez. Você receberá a seguinte saída confirmando as alterações:

Output
Relabeled /var/www/example.com/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0

Você pode listar os contextos mais uma vez para ver as alterações:

  • sudo ls -dlZ /var/www/example.com/log/

A saída reflete o tipo de contexto atualizado:

Output
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

Agora que o diretório /var/www/example.com/log está usando o tipo httpd_log_t, você está pronto para testar sua configuração de virtual host.

Passo 6 — Testando o Virtual Host (Recomendado)

Assim que o contexto SELinux for atualizado com qualquer método, o Apache poderá escrever no diretório /var/www/example.com/log. Agora, você pode reiniciar o serviço Apache com sucesso:

  • sudo systemctl restart httpd

Liste o conteúdo do diretório /var/www/example.com/log para ver se o Apache criou os arquivos de registro:

  • ls -lZ /var/www/example.com/log

Você receberá a confirmação de que o Apache foi capaz de criar os arquivos error.log e requests.log especificados na configuração de virtual host:

Output
-rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log -rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log

Agora que você tem seu virtual host configurado e as permissões do SELinux atualizadas, o Apache agora irá servir seu nome de domínio. Você pode testar isso navegando para http://example.com, onde você deve ver algo assim:

Success! O virtual host example.com está funcionando!

Isso confirma que seu virtual host está configurado e exibindo conteúdo. Repita os Passos 4 e 5 para criar novos virtual hosts com as permissões SELinux para domínios adicionais.

Conclusão

Neste tutorial, você instalou e gerenciou o servidor web Apache. 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 aplicação mais completa, você pode dar uma olhada neste artigo sobre como configurar uma pilha LAMP no CentOS 8.

0 Comments

Creative Commons License