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

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

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

Ao navegar até o endereço IP do servidor, você deve ver a seguinte página 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 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.

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

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.

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

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/