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

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

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

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

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:
$ 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.

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/

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.

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

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/