Como Instalar o Apache com Host Virtual no CentOS 8

O servidor web Apache é um servidor web HTTP de código aberto e popular que continua a desfrutar de uma grande participação de mercado na indústria de hospedagem. Ele vem com muitos recursos, incluindo aprimoramentos de módulos, suporte a vários protocolos, configuração simplificada e suporte a vários idiomas, para mencionar apenas alguns.

Leia também: Como Instalar o Nginx no CentOS 8

Neste guia, iremos guiá-lo através da instalação do servidor web Apache no CentOS 8 e no RHEL 8 com um ambiente de Hospedagem Virtual. No momento da redação deste tutorial, a versão mais recente do Apache é Apache 2.2.43.

Instalando o Servidor Web Apache

Para começar, primeiro atualize a lista de pacotes do seu sistema CentOS 8 ou RHEL 8 usando o seguinte comando dnf.

$ sudo dnf update

Assim que a atualização estiver completa, instale o servidor web Apache executando o seguinte comando.

$ sudo dnf install httpd

Depois de instalado, você pode verificar a versão do Apache executando o comando rpm.

$ rpm -qi httpd
Verify Apache Version

O comando imprime uma série de informações, como a versão, data de lançamento, compilação e arquitetura do pacote.

Para iniciar o serviço da web Apache HTTP, execute o comando systemctl.

$ sudo systemctl start httpd

Para confirmar se o serviço está em execução, execute.

$ sudo systemctl status httpd
Verify Apache Service Status

A partir da saída, o status ‘active‘ em verde indica que o servidor web Apache está funcionando.

Para dissipar quaisquer dúvidas de que o servidor web está em execução, solicite uma página de teste do Apache navegando pelo endereço IP ou nome de domínio do seu servidor conforme mostrado.

http://server-ip  

Você pode obter o IP do seu servidor executando o comando ifconfig. Se seu servidor estiver hospedado na nuvem, você pode obter o IP público executando o comando curl.

$ curl ifconfig.me 
OR
$ curl -4 icanhazip.com
Find CentOS Server IP Address

Ao navegar pelo endereço IP do servidor, você deverá ver a seguinte página da web exibida.

Check Apache Webpage

Isso é uma confirmação segura de que o servidor web está em execução.

Gerenciando o Servidor Web Apache

Com o Apache instalado e em execução, você pode usar a ferramenta de inspeção systemctl para gerenciar o Apache.

Por exemplo, para parar o Apache, execute o comando:

$ sudo systemctl stop httpd

Para iniciar o serviço novamente, execute:Se você fez alterações em algum dos arquivos de configuração e precisa reiniciar para aplicar as alterações, execute o comando:

$ sudo systemctl start httpd

Se você fez alterações em quaisquer arquivos de configuração e precisa reiniciar para aplicar as mudanças, execute o comando:

$ sudo systemctl restart httpd

Reiniciar o serviço geralmente causa uma interrupção no serviço. Uma alternativa melhor é simplesmente recarregar sem interrupção na conexão.

$ sudo systemctl reload httpd

Para iniciar automaticamente o servidor web Apache ao inicializar ou reinicializar, execute o comando abaixo. Isso garantirá que o Apache inicie automaticamente sem a sua intervenção.

$ sudo systemctl enable httpd

Se você optar por não iniciar o serviço automaticamente na inicialização, execute:

$ sudo systemctl disable httpd

Configurando Virtual Hosts do Apache

Por padrão, o servidor web Apache está configurado para servir ou hospedar apenas um site. Se você deseja hospedar apenas um site, esta etapa não é necessária. Mas caso pretenda hospedar vários domínios em seu servidor, então você precisa configurar os hosts virtuais do Apache.

A virtual host is a separate file that contains configurations that allow you to set up a separate domain from the default one. For this guide, we will set up a virtual host for the domain crazytechgeek.info.

O host virtual padrão está localizado no diretório /var/www/html. Isso funciona apenas para um único site. Para criar um host virtual separado para nosso domínio, criaremos outra estrutura de diretório dentro do diretório /var/www conforme mostrado.

$ sudo mkdir -p /var/www/crazytechgeek.info/html

Além disso, você também pode criar um diretório para armazenar arquivos de log.

$ sudo mkdir -p /var/www/crazytechgeek.info/log

Em seguida, edite as permissões do arquivo usando a variável de ambiente $USER conforme mostrado.

$ sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

Também ajuste as permissões do diretório raiz do site conforme mostrado.

$ sudo chmod -R 755 /var/www

Em seguida, crie um arquivo de exemplo index.html conforme mostrado.

$ sudo vim /var/www/crazytechgeek.info/html/index.html

Pressione a tecla 'i' no teclado e cole algum conteúdo de exemplo conforme mostrado, que será exibido no navegador ao testar o host virtual.

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

Salvar e sair do arquivo de configuração.

Com o arquivo de índice de exemplo e o diretório do site criados, você pode agora prosseguir e criar o arquivo de host virtual. O arquivo de host virtual conterá a configuração do site do domínio e instruirá o Apache sobre como ele irá responder a pedidos dos clientes.

O arquivo de host virtual conterá a configuração do site do domínio e instruirá o Apache sobre como ele irá responder a pedidos dos clientes. Mas para prosseguir, você precisa criar 2 diretórios: o sites-available e o sites-enabled.

O arquivo de host virtual será armazenado no diretório sites-available enquanto o diretório sites-enabled conterá o link simbólico para o host virtual.

Crie ambos os diretórios conforme mostrado.

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

A seguir, modifique o arquivo de configuração principal do servidor web Apache e instrua o Apache sobre onde localizar o host virtual dentro do diretório sites-enabled.

$ sudo vim /etc/httpd/conf/httpd.conf

Acrescente a linha mostrada no final do arquivo de configuração.

IncludeOptional sites-enabled/*.conf

Salve e saia.

Agora crie um arquivo de host virtual conforme mostrado:

$ sudo vim /etc/httpd/sites-available/crazytechgeek.info

Cole o conteúdo abaixo e substitua crazytechgeek.info pelo seu próprio nome de domínio.

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

Salve e saia do arquivo.

Agora habilite o arquivo de host virtual criando um link simbólico no diretório sites-enabled.

$ sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

Ajustando Permissões do SELinux para Hosts Virtuais.

CentOS 8 e RHEL 8 vem com SELinux, que é um módulo de segurança para reforçar a segurança do sistema Linux. since você configurou um diretório de log personalizado no passo anterior, você precisa atualizar algumas políticas de SELinux para instruir o servidor web Apache a escrever no diretório.

Existem 2 abordagens para ajustar as políticas de Apache SELinux: Ajustar as políticas de forma universal e as políticas em um diretório. A última é preferida porque é mais preferida.

Ajustando Políticas de SELinux em um Diretório

Editando as permissões de SELinux para o diretório de log dá-lhe controle absoluto sobre as políticas do servidor web Apache. Este método é relativamente longo e exige que você configure manualmente o tipo de contexto para diretórios adicionais especificados no arquivo de configuração do host virtual.

Antes de começar, primeiro confirme o tipo de contexto atribuído ao diretório de log pelo SELinux:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/

A saída deve ser semelhante à que temos abaixo.

Set SELinux Policies on Apache Log Directory

A partir da saída, o contexto definido é httpd_sys_content_t. Isso indica que o servidor web só pode ler arquivos no diretório de log. Você precisa alterar este contexto para httpd_log_t para permitir que o Apache crie e adicione entradas de log ao diretório.

Então, execute o comando:

$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Se você receber o erro abaixo “semanage: comando não encontrado“.

Isso implica que os pacotes que fornecem o comando semanage não estão instalados. Para corrigir esse erro, você precisa instalar esses pacotes. Mas primeiro, verifique quais pacotes fornecem o comando semanage executando:

$ sudo dnf whatprovides /usr/sbin/semanage

A saída nos dá o pacote que fornece o semanage, que é policycoreutils-python-utils.

Agora instale o pacote conforme mostrado usando o gerenciador de pacotes DNF.

$ sudo dnf install policycoreutils-python-utils

O comando para alterar o contexto deve funcionar agora.

$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Para salvar as alterações e torná-las persistentes, emita o comando restorecon conforme mostrado:

$ sudo restorecon -R -v /var/www/crazytechgeek.info/log

Você pode confirmar as alterações executando novamente o comando:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/
Check SELinux Context Type

Certifique-se de observar que o tipo de contexto foi alterado para httpd_log_t conforme visto na saída.

Reinicie o Apache para que as alterações sejam aplicadas.

$ sudo systemctl restart httpd

Agora, confirme se o Apache está salvando arquivos de log no diretório de log listando seu conteúdo conforme mostrado:

$ ls -l /var/www/crazytechgeek.info/log/

Você deverá conseguir ver dois arquivos de log, como mostrado: arquivos de log de erros e de solicitações.

Check Apache Log Files

Testando o Host Virtual do Apache

Por último, você precisa ter certeza de que o servidor web Apache está servindo o arquivo de host virtual. Para fazer isso, abra seu navegador e vá para o endereço IP ou nome de domínio do seu servidor:

http://domain-name
Check Apache Virtual Host for Website

Perfeito! Isso indica que tudo correu bem e nosso host virtual está sendo servido conforme o esperado.

Conclusão

Neste guia, aprendemos como instalar o servidor web Apache no CentOS 8 e RHEL 8 e também como configurar um arquivo de host virtual para servir conteúdo para um domínio adicional. Sinta-se à vontade para configurar vários arquivos de host virtual conforme achar necessário para acomodar domínios adicionais.

Se você deseja configurar uma pilha de hospedagem completa, eu recomendo que você instale uma pilha LAMP no CentOS 8.

Source:
https://www.tecmint.com/install-apache-with-virtual-host-on-centos-8/