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:
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.
0 COMMENTS