Um servidor web armazena, processa e entrega páginas web aos visitantes do site. Existem bastantes servidores web Open Source opções de software, mas o servidor Apache HTTP é considerado o servidor web mais amplamente utilizado no mundo. Isto porque, além de ser de código aberto, a sua arquitetura modular permite estender as suas capacidades através da adição de módulos para servir diferentes propósitos. Como resultado, o servidor web é extremamente robusto.
Se procura instalar o Apache num sistema CentOS 7, este tutorial é para si. Adicionalmente, irá aprender a criar hosts virtuais para que possa alojar múltiplos websites num único servidor Apache HTTP a correr no CentOS.
Este é um tutorial detalhado focado apenas na instalação do Apache. Se procura o tutorial em tópicos sobre a stack LAMP, temos este guia sobre Como Instalar Linux, Apache, MySQL, PHP (LAMP) no CentOS 7 que pode consultar. Agora, vamos começar!
Pré-requisitos
Como este é um tutorial prático, deverá ter o seguinte:
- Um servidor a correr CentOS 7, pode criar um na CloudSigma em alguns passos simples seguindo este link.
- Configurar um utilizador não-root com privilégios sudo no seu servidor. Depois, inicie sessão com este utilizador.
- Configure uma firewall básica seguindo os passos no nosso tutorial sobre Configurar uma Firewall com o FirewallD no CentOS 7.
Passo 1: Instalar o Servidor Apache HTTP
Pode encontrar o Apache nos repositórios predefinidos do CentOS. Assim, a instalação é simples utilizando o gestor de pacotes yum. A partir da secção de pré-requisitos, precisa de ter sessão iniciada com o utilizador não-root. Execute o seguinte comando no seu terminal para atualizar o índice de pacotes httpd local do Apache:
|
1 |
sudo yum update httpd |
Assim que os pacotes estiverem atualizados, introduza o seguinte comando para instalar o Apache:
|
1 |
sudo yum install httpd |
Confirme a instalação e aguarde que o yum instale o Apache e as suas dependências necessárias.
Se seguiu os passos no tutorial sobre Configurar uma Firewall com o FirewallD no CentOS 7 e ativou a firewall para a porta 80, então está tudo pronto. Firewalld é o gestor de firewall para o CentOS. Caso contrário, pode ativar o serviço http (porta 80) do firewalld introduzindo o seguinte comando:
|
1 |
sudo firewall-cmd --permanent --add-service=http |
Se planeia servir tráfego através de HTTPS seguro, pode ativar o serviço https (porta 443) do firewalld introduzindo o seguinte comando:
|
1 |
sudo firewall-cmd --permanent --add-service=https |
Finalmente, deve recarregar o firewalld para que as alterações surtam efeito. Aqui está o comando para recarregar:
|
1 |
sudo firewall-cmd –reload |
Neste ponto, instalou e configurou o Apache para servir tráfego através de HTTP, ou HTTPS dependendo de ter executado os comandos acima.
Passo 2: Confirmar que o Servidor Web Apache está a Correr
No CentOS, o processo do Apache não se inicia automaticamente após a instalação. Para iniciar o Apache manualmente, introduza o seguinte comando:
|
1 |
sudo systemctl start httpd |
Para verificar se o serviço foi iniciado com sucesso, verifique o estado introduzindo o seguinte comando:
|
1 |
sudo systemctl status httpd |
Se o serviço estiver a correr, deverá ver um resultado semelhante à captura de ecrã abaixo. Note o estado ativo:

O resultado indica que o serviço foi iniciado com sucesso e está a correr. Em seguida, devemos também testar se o Apache consegue servir uma página aos utilizadores da internet. O Apache vem com uma página predefinida que pode utilizar para testar se o seu servidor pode ser acedido através da internet.
Precisará de encontrar o endereço IP público do seu servidor, caso ainda não o tenha. Este endereço IP é o que utilizará na barra de endereços do seu navegador para solicitar a página web predefinida do Apache. Pode exibir os endereços de rede do host introduzindo o seguinte comando:
|
1 |
hostname –I |
A partir da lista de endereços que obtiver, pode testar cada um no seu navegador para confirmar que funcionam. Opcionalmente, pode utilizar o curl para obter o seu endereço IP de icanhazip.com. O comando abaixo exibe o seu endereço IP público como visto a partir de um computador em outro local da internet:
|
1 |
curl -4 icanhazip.com |
Assim que tiver o endereço IP público do seu servidor, copie e cole-o na barra de endereços do seu navegador:
|
1 |
http://your_server_public_ip |
O seu navegador deve carregar a página web padrão do Apache no CentOS 7:

Se você conseguiu carregar a página web padrão do Apache, isso significa que o seu servidor está funcionando corretamente. Se você rolar para baixo, poderá ver algumas informações básicas sobre os arquivos do Apache e a localização dos diretórios. Com o serviço instalado e operando corretamente, você deve ser capaz de usar os diversos systemctl comandos para gerenciar o serviço.
Passo 3: Gerenciando o Serviço Apache
Nesta seção, mostraremos alguns comandos básicos de gerenciamento do Apache. Aqui está o comando que para o servidor web:
|
1 |
sudo systemctl stop httpd |
Aqui está o comando para iniciar o servidor web:
|
1 |
sudo systemctl start httpd |
A seguir, este é o comando para reiniciar o servidor web (parar e iniciar):
|
1 |
sudo systemctl restart httpd |
Depois disso, mostraremos o comando para recarregar o serviço Apache. Este comando é necessário quando você está apenas fazendo alterações de configuração. Ao recarregar, o processo do Apache aplicará as alterações de configuração sem derrubar conexões, como teria acontecido se você tivesse reiniciado:
|
1 |
sudo systemctl reload httpd |
De acordo com as configurações padrão, o Apache inicia automaticamente quando o servidor é inicializado. Se você quiser alterar esse comportamento, aqui está o comando para desativar a inicialização do serviço no boot:
|
1 |
sudo systemctl disable httpd |
Para reativar a inicialização do serviço no boot, insira o seguinte comando:
|
1 |
sudo systemctl enable httpd |
Passo 4: Configurando Hosts Virtuais do Apache
Por padrão, o Apache está configurado para hospedar e servir um único site. Na maioria dos casos, você desejará que seu servidor web sirva e hospede múltiplos sites. Por exemplo, você pode ter subdomínios ou pode querer configurar uma página de blog para o site principal da sua empresa/organização. É aqui que os hosts virtuais do Apache entram em ação. Os hosts virtuais do Apache permitem que você configure seu servidor web para servir múltiplos sites. Os hosts virtuais do Apache são o equivalente aos blocos de servidor no servidor Nginx.
Para este tutorial, mostraremos como criar um host virtual usando example.com como nosso domínio. Claro, o domínio example.com não funcionará na internet, então você deve substituí-lo pelo seu domínio real – os passos são os mesmos.
Quando você instala o Apache no CentOS, ele instala um host virtual que está configurado para servir conteúdo a partir do diretório /var/www/html. Esse design funciona bem se você estiver hospedando um único site. No entanto, queremos ser capazes de hospedar múltiplos sites. Deixaremos o diretório padrão /var/www/html e, em vez disso, criaremos outro diretório para o domínio example.com dentro do local /var/www. O motivo para deixar o diretório padrão é para que ele seja servido quando as solicitações dos clientes não corresponderem a nenhum outro site configurado com hosts virtuais. Além disso, se você quiser desativar os hosts virtuais criados, o padrão continuará servindo o tráfego.
Primeiro, crie um diretório dentro de /var/www para o seu nome de domínio. Você é livre para escolher o nome que desejar. No entanto, é recomendável escolher um nome semelhante ao seu domínio para facilitar a memorização quando você criar o arquivo conf do host virtual. Insira o seguinte comando para criar o diretório de exemplo:
|
1 |
sudo mkdir -p /var/www/example |
Insira o seguinte comando para criar uma pasta adicional que conterá os arquivos de log do site:
|
1 |
sudo mkdir -p /var/www/example/log |
Com os diretórios do seu site criados, atribua a propriedade do diretório com a variável de ambiente $USER usando o seguinte comando:
|
1 |
sudo chown -R $USER:$USER /var/www/example |
Execute o seguinte comando para garantir que a raiz da sua web tenha as permissões padrão:
|
1 |
sudo chmod -R 755 /var/www |
Agora, crie uma página simples index.html usando o nano dentro do diretório example inserindo o seguinte comando:
|
1 |
sudo nano /var/www/example/index.html |
No editor nano, adicione o seguinte trecho de código HTML:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Bem-vindo ao Example.com!</title> </head> <body> <h1>Se você consegue ver esta mensagem, isso significa <em>example.com</em> virtual host está funcionando!</h1> </body> </html> |
Depois de concluído, salve o arquivo pressionando Ctrl O e pressione ENTER. Agora você pode fechar o editor pressionando Ctrl X.
Até agora, temos o diretório do seu site e a página web básica para testar o host virtual. Em seguida, queremos criar os arquivos de configuração do host virtual. Os arquivos de host virtual especificam as configurações dos vários sites que você deseja hospedar em um único servidor Apache. Eles direcionam as solicitações de nome de domínio definidas para o seu diretório específico.
Os arquivos de host virtual são armazenados no diretório /etc/httpd/sites-available. Os arquivos de host virtual ativados são vinculados simbolicamente a partir do diretório /etc/httpd/sites-available para o diretório /etc/httpd/sites-enabled . Esses dois diretórios não são criados por padrão no CentOS, então você mesmo deve criá-los. Insira o seguinte comando para criar os diretórios:
|
1 |
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled |
Com os diretórios criados, instrua o Apache a procurar por hosts virtuais no diretório sites-enabled. Você fará isso modificando o arquivo de configuração principal do Apache. Insira o seguinte comando para abrir o arquivo no editor nano:
|
1 |
sudo nano /etc/httpd/conf/httpd.conf |
Queremos adicionar uma linha que instruirá o Apache a procurar por arquivos de configuração adicionais em um diretório opcional. Role até o final do arquivo e adicione a seguinte linha no final:
|
1 |
IncludeOptional sites-enabled/*.conf |
Salve o arquivo pressionando Ctrl O e pressione ENTER. Agora você pode fechar o editor pressionando Ctrl X. O próximo passo é criar o arquivo de host virtual dentro do diretório sites-available. Insira o seguinte comando para criar e abrir o novo arquivo com o editor nano:
|
1 |
sudo nano /etc/httpd/sites-available/example.conf |
No arquivo aberto, adicione o seguinte bloco de configuração. Lembre-se de substituir o nosso example.com pelo seu nome de domínio real e, se você usou um nome de diretório diferente em /var/www/example, também atualize isso adequadamente:
|
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example ErrorLog /var/www/example/log/error.log CustomLog /var/www/example/log/requests.log combined </VirtualHost> |
Como você pode ver, especificamos o nome de domínio e a raiz do documento onde os arquivos a serem servidos para este domínio serão encontrados. Também especificamos o local do log de erros – isso ajudará você durante a solução de problemas do servidor.
Assim que tivermos nosso arquivo de host virtual dentro do diretório sites-available, o próximo passo é habilitar o arquivo criando um link simbólico para o diretório sites-enabled . Insira o seguinte comando para criar o link simbólico:
|
1 |
sudo ln -s /etc/httpd/sites-available/example.conf /etc/httpd/sites-enabled/example.conf |
Se você seguiu as etapas até este ponto, seu host virtual deve estar pronto para exibir o conteúdo do seu site. No entanto, há mais uma verificação que você precisa configurar antes que os hosts virtuais comecem a funcionar. Abordaremos isso a seguir.
Etapa 5: Ajustar as Permissões do SELinux para Permitir Hosts Virtuais
Distribuições Linux, incluindo Fedora, RHEL e CentOS vêm com o SELinux por padrão. SELinux (Security Enhanced Linux) é uma arquitetura de segurança para sistemas Linux que restringe e define como um servidor deve processar solicitações e como os usuários devem interagir com sockets, portas de rede e diretórios essenciais.
Pronto para uso, o SELinux funcionará com a configuração padrão do Apache. No entanto, com o host virtual personalizado que você criou, incluindo um diretório de log personalizado, um erro de serviço será gerado quando você tentar reiniciar o serviço Apache. A solução é modificar as políticas do SELinux para permitir que o serviço Apache grave nos arquivos necessários.
O SELinux torna o CentOS um servidor altamente seguro. Portanto, não recomendamos desativá-lo completamente. Dado que o SELinux permite que você personalize seu nível de segurança de várias maneiras, é recomendável que você apenas atualize ou defina políticas com base nas necessidades do seu ambiente.
Você tem duas opções para atualizar as políticas do Apache: ou Universalmente ou por Diretório Específico. Atualizar políticas específicas para um diretório é mais seguro. Portanto, é a opção recomendada.
-
Atualizando as Políticas do Apache Universalmente
Você pode modificar a política do Apache universalmente, o que instruirá o SELinux a tratar todos os processos do Apache de forma idêntica usando o httpd_unified booleano. Tenha em mente que modificar as políticas do Apache universalmente não lhe dará o mesmo nível de controle que configurar cada diretório de forma específica. No entanto, é mais conveniente quando se trata de manutenção. Execute o seguinte comando para atualizar as políticas do Apache universalmente:
|
1 |
sudo setsebool -P httpd_unified 1 |
Vamos definir o que os valores neste comando estão fazendo:
- setsebool – atualiza os valores booleanos do SELinux.
- -P tag – atualiza o valor de inicialização para que essa alteração persista após as reinicializações.
- httpd_unified – o valor booleano que instruirá o SELinux a tratar todos os processos do Apache como o mesmo tipo. Usar o valor 1 o ativa.
-
Ajustando as Políticas do Apache em um Diretório
Se você deseja mais controle sobre os diretórios, ajustar as políticas do Apache por diretório é o caminho certo. No entanto, isso traz a sobrecarga de exigir mais manutenção. Isso ocorre porque a política não é global. Portanto, você precisará definir manualmente o tipo de contexto para quaisquer novos diretórios de log que especificar nos arquivos conf do seu host virtual.
Antes de atualizar a política, primeiro verifique o tipo de contexto que o SELinux atribuiu ao diretório /var/www/example/log usando o seguinte comando:
|
1 |
sudo ls -dZ /var/www/example/log/ |
O comando produzirá algo como o seguinte, que é basicamente o contexto SELinux do diretório:
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example/log/ |
httpd_sys_content_t é o contexto atual, informando ao SELinux que o processo do Apache só tem permissão para ler arquivos criados neste diretório. Como, a partir de nossas configurações de host virtual, queremos que o Apache grave em arquivos de log no diretório /var/www/example/log, modificaremos essa política para permitir que o Apache gere e anexe arquivos de log de aplicativos web. O contexto que permite isso é o httpd_log_t. Aqui está o comando para atualizar o contexto:
|
1 |
sudo semanage fcontext -a -t httpd_log_t "/var/www/example/log(/.*)?" |
Para aplicar as alterações do comando acima e fazer com que persistam após as reinicializações, execute o seguinte comando:
|
1 |
sudo restorecon -R -v /var/www/example/log |
Vamos definir o que o comando faz:
- restorecon – aplica as alterações e garante que elas persistam após as reinicializações.
- flag -R – executará o comando recursivamente, atualizando quaisquer arquivos existentes para usar o novo contexto.
- flag -v – exibe as alterações de contexto após a execução do comando. Ele produzirá algo como isto:
|
1 2 |
Saída: restorecon reset /var/www/example/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0 |
|
1 |
sudo ls -dZ /var/www/example/log/ |
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log |
Passo 6: Testar a Configuração do Host Virtual
Antes de podermos testar o host virtual, você precisará reiniciar os serviços do Apache. Aqui está o comando para isso:
|
1 |
sudo systemctl restart httpd |
Em seguida, liste o conteúdo do diretório de logs usando o seguinte comando:
|
1 |
ls -lZ /var/www/example/log |
Deve exibir algo como isto, mostrando que o Apache criou os arquivos de log:

Se você seguiu as etapas até este ponto, o Apache agora deve ser capaz de servir a página HTML de exemplo quando você visitar o seu nome de domínio conforme definido no seu arquivo de host virtual. Se desejar, você pode repetir as etapas 4 e 5 para configurar domínios adicionais e atualizar suas permissões do SELinux adequadamente.
Conclusão
Neste tutorial, instalamos o Apache, aprendemos como atualizar as políticas do SELinux para permitir que o Apache grave em arquivos de log personalizados e, finalmente, testamos nossa configuração para confirmar que ela está funcionando corretamente. Com essa base, você deve ser capaz de expandir e servir aplicações melhores com experiências mais ricas.
Se você quiser explorar uma pilha web completa, confira nosso tutorial sobre como instalar a pilha LAMP no CentOS 7.
Boa computação!
Comentários
Nenhum comentário ainda. Seja o primeiro.