Como instalar o Apache com Virtual Host no CentOS 8

O servidor web Apache é um servidor HTTP de código aberto e popular que continua a desfrutar de uma enorme participação de mercado na indústria de hospedagem. Ele é fornecido 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, vamos guiá-lo pela instalação do servidor web Apache no CentOS 8 e RHEL 8 com um ambiente de Host 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

Uma vez que a atualização esteja 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 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 ‘ativo‘ em verde indica que o servidor web Apache está ativo e em execução.

Para dissipar quaisquer dúvidas de que o servidor web está em execução, solicite uma página de teste do Apache navegando até o endereço IP do seu servidor ou nome de domínio, 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ê 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 até o endereço IP do servidor, você deve ver a seguinte página 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 qualquer um dos seus 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ções na conexão.

$ sudo systemctl reload httpd

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

$ sudo systemctl enable httpd

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

$ sudo systemctl disable httpd

Configurando Hospedeiros Virtuais do Apache

Por padrão, o servidor web Apache está configurado para servir ou hospedar apenas um site. Se você quiser hospedar apenas um site, esta etapa não é necessária. Mas caso planeje hospedar vários domínios em seu servidor, será necessário configurar hospedeiros 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 hospedeiro virtual padrão está localizado no diretório /var/www/html. Isso funciona apenas para um único site. Para criar um hospedeiro virtual separado para nosso domínio, criaremos outra estrutura de diretório dentro do diretório /var/www, como 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 da web conforme mostrado.

$ sudo chmod -R 755 /var/www

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

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

Pressione a tecla 'i' no teclado e cole algum conteúdo de exemplo, como mostrado, que será exibido no navegador da web ao testar o hospedeiro 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 diretório do site criados, agora você pode prosseguir e criar o arquivo de host virtual. O arquivo de host virtual conterá a configuração do site do seu domínio e instruirá o Apache sobre como responder às solicitações dos clientes.

O arquivo de host virtual conterá a configuração do site do seu domínio e instruirá o Apache sobre como responder às solicitações dos clientes. Mas antes, você precisa criar 2 diretórios: os diretórios sites-available e 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

Em seguida, 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

Adicione a linha conforme mostrado 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 nome do seu próprio 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 as Permissões do SELinux para Hosts Virtuais

O CentOS 8 e o RHEL 8 vêm com o 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 escrever no diretório.

Há 2 abordagens para ajustar as políticas do SELinux Apache: ajustando as políticas universalmente e as políticas em um diretório. Esta última é preferida porque é mais preferida.

Ajustando Políticas do SELinux em um Diretório

Editar as permissões SELinux para o diretório de log dá a você controle absoluto sobre as políticas do servidor web Apache. Este método é bastante longo 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, confirme primeiro 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 ao 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 gere e adicione entradas de log ao diretório.

Portanto, execute o comando:Se você receber o erro abaixo ” semanage: comando não encontrado“.

$ 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

Tenha em mente 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ê deve ser capaz de ver dois arquivos de log como mostrado: arquivos de log de erro e de solicitação.

Check Apache Log Files

Testando o Virtual Host do Apache

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

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 no RHEL 8 e também como configurar um arquivo de 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 um stack de hospedagem completo, recomendo que instale um stack LAMP no CentOS 8.

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