Pesquisa de site

Como instalar o Apache com Host Virtual no CentOS 8


O servidor web Apache é um servidor web HTTP popular e de código aberto que continua a desfrutar de uma enorme participação de mercado na indústria de hospedagem. Ele vem com muitos recursos, incluindo aprimoramentos de módulo, suporte multiprotocolo, configuração simplificada e suporte multilíngue, para mencionar apenas alguns.

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

Neste guia, orientaremos você na instalação do servidor web Apache no CentOS 8 e no RHEL 8 com um ambiente Virtual Host. No momento em que este tutorial foi escrito, a versão mais recente do Apache era Apache 2.2.43.

Instalando o Servidor Web Apache

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

sudo dnf update

Assim que a atualização for concluída, 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

O comando imprime uma série de informações como versão, data de lançamento, construçã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

Na saída, o status ‘ativo’ em verde indica que o servidor web Apache está instalado e funcionando.

Para tirar qualquer dúvida de que o servidor web está rodando, 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 o seu servidor estiver hospedado na nuvem, você poderá obter o IP público executando o comando curl.

curl ifconfig.me 
OR
curl -4 icanhazip.com

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

Esta é uma confirmação segura de que o servidor web está funcionando.

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:

sudo systemctl start httpd

Se você fez alterações em algum de seus arquivos de configuração e precisa reiniciar para aplicar as alterações, 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 qualquer interrupção na conexão.

sudo systemctl reload httpd

Para iniciar o servidor web Apache automaticamente ao inicializar ou reinicializar, execute o comando abaixo. Isso garantirá que o Apache seja iniciado 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 hosts virtuais 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 você planeje hospedar vários domínios em seu servidor, será necessário configurar hosts virtuais Apache.

Um host virtual é um arquivo separado que contém configurações que permitem configurar um domínio separado do padrão. Para este guia, configuraremos um host virtual para o domínio 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órios 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

Além disso, ajuste as permissões do diretório webroot conforme mostrado.

sudo chmod -R 755 /var/www

A seguir, crie um arquivo index.html de amostra conforme mostrado.

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

Pressione a letra 'i' no teclado e cole algum conteúdo de amostra conforme mostrado, que será exibido no navegador da web 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>

Salve e saia do arquivo de configuração.

Com o arquivo de índice de amostra e o diretório de site criados, agora você pode prosseguir e criar o arquivo de host virtual. O arquivo host virtual conterá a configuração do site do seu domínio e instruirá o Apache como ele responderá às solicitações dos clientes.

O arquivo host virtual conterá a configuração do site do seu domínio e instruirá o Apache como ele responderá às solicitações dos clientes. Mas prosseguindo, você precisa criar 2 diretórios: os diretórios sites-available e sites-enabled.

O arquivo do 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 os dois diretórios conforme mostrado.

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

Em seguida, modifique o arquivo de configuração principal do servidor web Apache e instrua o Apache onde localizar o host virtual dentro do diretório habilitado para sites.

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

Anexe a linha conforme mostrado no final do arquivo de configuração.

IncludeOptional sites-enabled/*.conf

Salvar e sair.

Agora crie um arquivo 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 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 SELinux para hosts virtuais

CentOS 8 e RHEL 8 são fornecidos com SELinux, que é um módulo de segurança para fortalecer a segurança do sistema Linux. Como você configurou um diretório log personalizado na etapa anterior, você precisa atualizar algumas políticas do SELinux para instruir o servidor web Apache a gravar no diretório.

Existem 2 abordagens para ajustar as políticas do SELinux Apache: Ajustar as políticas de ajuste universalmente e as políticas em um diretório. Este último é preferido porque é mais preferido.

Ajustando políticas SELinux em um diretório

A edição das permissões SELinux para o diretório de log oferece controle absoluto sobre as políticas do servidor web Apache. Este método é bastante demorado e requer 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.

Na 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 gere e adicione entradas de log ao diretório.

Portanto, execute o comando:

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

Se acontecer de 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 fornece o pacote que fornece 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 agora deve funcionar.

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/

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

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

sudo systemctl restart httpd

Agora você pode confirmar 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 conforme mostrado: log de erros e arquivos de log de solicitação.

Testando host virtual Apache

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

http://domain-name

Perfeito! Isso indica que tudo correu bem e nosso host virtual está sendo atendido 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 host virtual para servir conteúdo para um domínio extra. Sinta-se à vontade para configurar vários arquivos de host virtual conforme achar adequado para acomodar domínios adicionais.

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