Introdução

Quando falamos sobre servidores de código aberto, é difícil não mencionar o Apache. Ele está presente em quase 46% de todos os sites hospedados na Internet e é propriedade da Apache Software Foundation.

Antes de passarmos pelo processo de instalação, vamos verificar o que será necessário para o servidor Apache funcionar:

O CentOS nem sempre possui todos os softwares de que precisamos, você pode precisar adicionar a pasta EPEL à nossa lista:

Etapa 1 - Instalando o Apache

O Apache está disponível nos repositórios de software padrão do CentOS, o que significa que você pode instalá-lo com o gerenciador de pacotes yum.

Instale o pacote Apache:

$

yum install httpd

:::output
ast metadata expiration check: 0:03:20 ago on Tue 14 Jan 2020 12:52:56 PM -02.
No match for argument: apache
Error: No packages marked for upgrade.
[root@apache ~]# yum install httpd
Last metadata expiration check: 0:03:28 ago on Tue 14 Jan 2020 12:52:56 PM -02.
Dependencies resolved.
=================================================================================================================================================================================================================================
 Package                                                Arch                                       Version                                                                   Repository                                     Size
=================================================================================================================================================================================================================================
Installing:
 httpd                                                  x86_64                                     2.4.37-12.module_el8.0.0+185+5908b0db                                     AppStream                                     1.7 M
Installing dependencies:
 apr                                                    x86_64                                     1.6.3-9.el8                                                               AppStream                                     125 k
 apr-util                                               x86_64                                     1.6.1-6.el8                                                               AppStream                                     105 k
 centos-logos-httpd                                     noarch                                     80.5-2.el8                                                                AppStream                                      24 k
 httpd-filesystem                                       noarch                                     2.4.37-12.module_el8.0.0+185+5908b0db                                     AppStream                                      35 k
 httpd-tools                                            x86_64                                     2.4.37-12.module_el8.0.0+185+5908b0db                                     AppStream                                     102 k
 mod_http2                                              x86_64                                     1.11.3-3.module_el8.0.0+185+5908b0db                                      AppStream                                     158 k
 mailcap                                                noarch                                     2.1.48-3.el8                                                              BaseOS                                         39 k
Installing weak dependencies:
 apr-util-bdb                                           x86_64                                     1.6.1-6.el8                                                               AppStream                                      25 k
 apr-util-openssl                                       x86_64                                     1.6.1-6.el8                                                               AppStream                                      27 k
Enabling module streams:
 httpd                                                                                             2.4

Transaction Summary
=================================================================================================================================================================================================================================
Install  10 Packages

Total download size: 2.3 M
Installed size: 6.1 M
Is this ok [y/N]:
:::

Depois de confirmar a instalação, o yum instalará o Apache e todas as dependências necessárias. Assim que a instalação for concluída, você está pronto para iniciar o serviço.

Etapa 2 - Verificando seu servidor web

O Apache não inicia automaticamente no CentOS após a conclusão da instalação. Você precisará iniciar o processo do Apache manualmente:

$

systemctl start httpd

Verifique se o serviço está sendo executado com o seguinte comando:

$

systemctl status httpd

Você verá um status ativo quando o serviço estiver em execução:

:::output
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2020-01-14 12:59:48 -02; 4s ago
     Docs: man:httpd.service(8)
 Main PID: 6921 (httpd)
   Status: "Started, listening on: port 80"
    Tasks: 213 (limit: 11508)
   Memory: 24.5M
   CGroup: /system.slice/httpd.service
           ├─6921 /usr/sbin/httpd -DFOREGROUND
           ├─6922 /usr/sbin/httpd -DFOREGROUND
           ├─6923 /usr/sbin/httpd -DFOREGROUND
           ├─6924 /usr/sbin/httpd -DFOREGROUND
           └─6925 /usr/sbin/httpd -DFOREGROUND

Jan 14 12:59:48 apache systemd[1]: Starting The Apache HTTP Server...
Jan 14 12:59:48 apache httpd[6921]: Server configured, listening on: port 80
Jan 14 12:59:48 apache systemd[1]: Started The Apache HTTP Server.

:::

Como você pode ver nesta saída, o serviço parece ter iniciado com êxito. No entanto, a melhor maneira de testar isso é solicitar uma página do Apache.

Você pode acessar a página de destino padrão do Apache para confirmar se o software está funcionando corretamente por meio do seu endereço IP. Se você não souber o endereço IP do seu servidor, poderá obtê-lo de várias maneiras diferentes na linha de comando.

Digite no prompt de comando do seu servidor:

$

hostname -I

Este comando exibirá todos os endereços de rede do host, portanto, você receberá alguns endereços IP separados por espaços. Você pode experimentar cada um em seu navegador para ver se funcionam.

Como alternativa, você pode usar curl para solicitar seu IP de icanhazip.com, que fornecerá seu endereço IPv4 público visto de outro local na Internet:

$

curl -4 icanhazip.com

Quando você tiver o endereço IP do seu servidor, insira-o na barra de endereços do seu navegador:

$

http://your_server_ip

Ajustando o Firewall

Durante a instalação, o Apache cria arquivos de serviço firewalld com regras predefinidas para permitir o acesso às portas HTTP (80) e HTTPS (443).

Os comandos a seguir abrirão permanentemente as portas necessárias:

sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload

Etapa 3 - Gerenciando o processo Apache

Agora que você tem seu servidor da web instalado e funcionando, vamos examinar alguns comandos básicos de gerenciamento.

Para parar o seu servidor web, digite:

$

systemctl stop httpd

Para iniciar o servidor da web quando ele estiver parado, digite:

$

systemctl start httpd

Para interromper e iniciar o serviço novamente, digite:

$

systemctl restart httpd

Se você estiver simplesmente fazendo mudanças na configuração, o Apache pode frequentemente recarregar sem interromper as conexões. Para fazer isso, use este comando:

$

systemctl reload httpd

Por padrão, o Apache é configurado para iniciar automaticamente quando o servidor for inicializado. Se não for isso que você deseja, desative esse comportamento digitando:

$

systemctl disable httpd

Para reativar o serviço para iniciar na inicialização, digite:

$

systemctl enable httpd

O Apache agora iniciará automaticamente quando o servidor for inicializado novamente.

A configuração padrão do Apache permitirá que seu servidor hospede um único site. Se você planeja hospedar vários domínios em seu servidor, precisará configurar hosts virtuais em seu servidor da web Apache.

Etapa 4 - Configurando hosts virtuais (recomendado)

Ao usar o servidor da web Apache, você pode usar hosts virtuais (semelhantes aos blocos de servidor no Nginx) para encapsular detalhes de configuração e hospedar mais de um domínio de um único servidor. Nesta etapa, você configurará um domínio chamado example.com, mas deverá substituí-lo pelo seu próprio nome de domínio. Para saber mais sobre como configurar um nome de domínio com LetsCloud, consulte nossa Introdução ao LestCloud DNS.

Apache no CentOS 8 tem um bloco de servidor habilitado por padrão, que é configurado para servir documentos do/var/www/html diretório. Embora funcione bem para um único site, pode se tornar difícil se você estiver hospedando vários sites. Em vez de modificar /var/www/html, você criará uma estrutura de diretório dentro /var/www para o site example.com, saindo /var/www/html em vigor como o diretório padrão a ser servido se uma solicitação do cliente não corresponder a nenhum outro site.

Crie o diretório html para example.com da seguinte forma, usando a sinalização -p para criar qualquer diretório pai necessário:

$

mkdir -p /var/www/example.com/html

Crie um diretório adicional para armazenar arquivos de registro do site:

$

mkdir -p /var/www/example.com/log

Em seguida, atribua a propriedade do diretório html com a variável de ambiente $ USER:

$

chown -R $USER:$USER /var/www/example.com/html

Certifique-se de que sua raiz da web tenha as permissões padrão definidas:

$

chmod -R 755 /var/www

A seguir, crie uma página de amostra index.html usando vi ou seu editor favorito:

$

vi /var/www/example.com/html/index.html

Pressione i para alternar para o modo INSERT e adicione o seguinte exemplo de HTML ao arquivo:

/var/www/example.com/html/index.html

<html> <head> <title>Welcome to Example.com! </head> <body> <h1>Success! The example.com virtual host is working! </body> </html>

Salve e feche o arquivo pressionando ESC, digitando : wq e pressionando ENTER.

Com o diretório do site e o arquivo de índice de amostra no lugar, você está quase pronto para criar os arquivos do host virtual. Os arquivos de host virtual especificam a configuração de seus sites separados e informam ao servidor da web Apache como responder a várias solicitações de domínio.

Antes de criar seus hosts virtuais, você precisará criar um diretório sites-available para armazená-los. Você também criará o diretório sites-enabled que informa ao Apache que um host virtual está pronto para servir aos visitantes. O diretório sites-enabled conterá links simbólicos para hosts virtuais que desejamos publicar. Crie os dois diretórios com o seguinte comando:

$

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

Em seguida, você dirá ao Apache para procurar hosts virtuais no diretório sites-enabled. Para fazer isso, edite o arquivo de configuração principal do Apache e adicione uma linha declarando um diretório opcional para arquivos de configuração adicionais:

$

vi /etc/httpd/conf/httpd.conf

Adicione esta linha ao final do arquivo:

IncludeOptional sites-enabled/*.conf

Salve e feche o arquivo quando terminar de adicionar essa linha. Agora que você tem seus diretórios de host virtual no lugar, criará seu arquivo de host virtual.

Comece criando um novo arquivo no diretório sites-available:

$

vi /etc/httpd/sites-available/example.com.conf

Adicione o seguinte bloco de configuração e altere o domínio example.com para o seu nome de domínio:

/etc/httpd/sites-available/example.com.conf

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

Isso dirá ao Apache onde encontrar a raiz diretamente que contém os documentos da web acessíveis ao público. Também informa ao Apache onde armazenar erros e logs de solicitação para este site específico.

Salve e feche o arquivo quando terminar.

Agora que criou os arquivos do host virtual, você os habilitará para que o Apache saiba como servi-los aos visitantes. Para fazer isso, crie um link simbólico para cada host virtual no diretório sites-enabled:

$

ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

Seu host virtual agora está configurado e pronto para servir conteúdo. Antes de reiniciar o serviço Apache, vamos nos certificar de que o SELinux tenha as políticas corretas para seus hosts virtuais.

Etapa 5 - Ajuste de permissões SELinux para hosts virtuais (recomendado)

O SELinux é configurado para funcionar com a configuração padrão do Apache. Como você configurou um diretório de log personalizado no arquivo de configuração de hosts virtuais, receberá um erro se tentar iniciar o serviço Apache. Para resolver isso, você precisa atualizar as políticas SELinux para permitir que o Apache grave nos arquivos necessários. O SELinux traz segurança elevada ao seu ambiente CentOS 8, portanto, não é recomendado desabilitar completamente o módulo do kernel.

Existem diferentes maneiras de definir políticas com base nas necessidades do seu ambiente, pois o SELinux permite que você personalize seu nível de segurança. Esta etapa cobrirá dois métodos de ajuste das políticas do Apache: universalmente e em um diretório específico. O ajuste de políticas em diretórios é mais seguro e, portanto, a abordagem recomendada.

Ajustando as políticas do Apache universalmente Definir a política do Apache universalmente dirá ao SELinux para tratar todos os processos do Apache de forma idêntica usando o booleano httpd_unified. Embora essa abordagem seja mais conveniente, ela não fornecerá o mesmo nível de controle que uma abordagem que se concentra em uma política de arquivo ou diretório.

Execute o seguinte comando para definir uma política universal do Apache:

$

setsebool -P httpd_unified 1

O comando setsebool altera os valores booleanos do SELinux. O sinalizador -P irá atualizar o valor do tempo de inicialização, fazendo com que esta mudança persista durante as reinicializações. httpd_unified é o booleano que dirá ao SELinux para tratar todos os processos Apache como o mesmo tipo, então você o habilitou com o valor 1.

Ajustando as políticas do Apache em um diretório Definir permissões SELinux individualmente para o diretório /var/www/example.com/log lhe dará mais controle sobre as políticas do Apache, mas também pode exigir mais manutenção. Como essa opção não define políticas universalmente, você precisará definir manualmente o tipo de contexto para quaisquer novos diretórios de log especificados nas configurações do host virtual.

Primeiro, verifique o tipo de contexto que o SELinux forneceu ao diretório /var/www/example.com/log:

$

ls -dZ /var/www/example.com/log/

Este comando lista e imprime o contexto SELinux do diretório. Você verá uma saída semelhante a esta:

::output drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/ :: O contexto atual é httpd_sys_content_t, que diz ao SELinux que o processo Apache só pode ler arquivos criados neste diretório. Neste tutorial, você mudará o tipo de contexto do diretório /var/www/example.com/log para httpd_log_t. Este tipo permitirá que o Apache gere e anexe os arquivos de log do aplicativo da web:

sudo semanage fcontext -a -t httpd_log_t /var/www/example.com/log(/.*)?

Em seguida, use o comando restorecon para aplicar essas alterações e fazer com que persistam durante as reinicializações:

$

restorecon -R -v /var/www/example.com/log

O sinalizador -R executa este comando recursivamente, o que significa que atualizará todos os arquivos existentes para usar o novo contexto. O sinalizador -v imprimirá as mudanças de contexto feitas pelo comando. Você verá a seguinte saída confirmando as mudanças:

restorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0

Você pode listar os contextos mais uma vez para ver as mudanças:

$

ls -dZ /var/www/example.com/log/

A saída reflete o tipo de contexto atualizado:

drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log

Agora que o diretório /var/www/example.com/log está usando o tipo httpd_log_t, você está pronto para testar sua configuração de host virtual.

Etapa 6 - Testar o host virtual (recomendado)

Uma vez que o contexto SELinux tenha sido atualizado com qualquer um dos métodos, o Apache será capaz de gravar no diretório /var/www/example.com/log. Agora você pode reiniciar o serviço Apache com sucesso:

$

systemctl restart httpd

Liste o conteúdo do diretório /var/www/example.com/log para ver se o Apache criou os arquivos de log:

$

ls -lZ /var/www/example.com/log

Você verá que o Apache foi capaz de criar os arquivos error.log e requests.log especificados na configuração do host virtual:

-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log -rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

Agora que você tem seu host virtual configurado e as permissões SELinux atualizadas, o Apache agora servirá seu nome de domínio. Você pode testar isso navegando até http: //example.com, onde deverá ver algo assim:

virtualhost_ok

Isso confirma que seu host virtual foi configurado com sucesso e está servindo conteúdo. Repita as etapas 4 e 5 para criar novos hosts virtuais com permissões SELinux para domínios adicionais.

Conclusão

Neste tutorial, você instalou e gerenciou o servidor da web Apache. Agora que você instalou o servidor da Web, tem muitas opções para o tipo de conteúdo que pode servir e as tecnologias que pode usar para criar uma experiência mais rica.

Read more about: CentOSOperating System