Iniciar, parar e reiniciar o Apache: comandos e a diferença do graceful
Em um servidor Linux, você inicia, para e reinicia o Apache com o comando systemctl, e o nome do serviço é httpd na família RHEL e apache2 na família Debian. Depois de ler a saída do systemctl status, o arquivo de unidade do httpd e o script apachectl em um servidor AlmaLinux 9, vimos que o restart derruba o Apache e o sobe de novo, enquanto o graceful mantém o processo pai e só relê a configuração.
Como parar e reiniciar interrompem o serviço de verdade, não executamos start, stop nem restart no servidor de teste. Em vez disso, conferimos o comportamento com a documentação oficial do Apache, o manual do httpd.service e os registros de reload que estavam no servidor. O nome do host, o número da porta, os horários e a quantidade de requisições na saída abaixo são valores de exemplo.
1️⃣ Comandos para iniciar, parar e reiniciar o Apache
O nome do serviço do Apache muda conforme a família da distribuição. A família RHEL, como RHEL, AlmaLinux e Rocky Linux, o registra no systemd como httpd, e o Ubuntu e o Debian, como apache2.
| Tarefa | Família RHEL (httpd) | Família Debian (apache2) |
|---|---|---|
| Iniciar | systemctl start httpd | systemctl start apache2 |
| Parar | systemctl stop httpd | systemctl stop apache2 |
| Reiniciar | systemctl restart httpd | systemctl restart apache2 |
| Reler a configuração (graceful) | systemctl reload httpd | systemctl reload apache2 |
| Ver o status | systemctl status httpd | systemctl status apache2 |
| Iniciar automaticamente no boot | systemctl enable httpd | systemctl enable apache2 |
Execute os comandos da tabela como root. Em uma conta comum, coloque sudo antes do comando.
Se você confundir as famílias e usar o outro nome, o comando não é executado. Ao consultar o status com apache2 em um servidor da família RHEL, apareceu um erro dizendo que a unidade não foi encontrada.
systemctl status apache2Unit apache2.service could not be found.O código de saída foi 4, e ao trocar o nome para httpd no mesmo servidor saiu a saída normal.
Na família RHEL, você inicia, para e reinicia o Apache com os três comandos abaixo.
systemctl start httpdO start sobe um Apache que está parado. Para conferir se ele iniciou, use systemctl status.
systemctl stop httpdO stop para o Apache. Até você iniciá-lo de novo, ele não aceita requisições web.
systemctl restart httpdO restart executa stop e start em sequência. Se você só mudou arquivos de configuração, aplique com reload (graceful), que não derruba as conexões.
No AlmaLinux 9, o apachectl é um script de shell instalado no lugar do apachectl distribuído pelo Apache. Ao receber start, stop, restart e status, ele os repassa direto ao systemctl, então apachectl restart e systemctl restart httpd fazem a mesma coisa.
2️⃣ Ver o status do serviço Apache
Para saber se o Apache está rodando agora e quando ele iniciou, use systemctl status.
systemctl status httpd● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)
Active: active (running) since Sat 2026-10-17 08:30:49 UTC; 1 week 4 days ago
Docs: man:httpd.service(8)
Process: 2930107 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
Main PID: 741 (httpd)
Status: "Total requests: 52418; Idle/Busy workers 75/0;Requests/sec: 0.0528; Bytes served/sec: 3.9KB/sec"
Tasks: 224 (limit: 4615)
Memory: 184.3M (peak: 593.8M)
CPU: 47min 33.944s
CGroup: /system.slice/httpd.service
├─ 741 /usr/sbin/httpd -DFOREGROUND
├─2930111 /usr/sbin/httpd -DFOREGROUND
├─2930143 /usr/sbin/httpd -DFOREGROUND
└─2930144 /usr/sbin/httpd -DFOREGROUND
Oct 28 15:00:00 server systemd[1]: Reloading The Apache HTTP Server...
Oct 28 15:00:00 server systemd[1]: Reloaded The Apache HTTP Server.
Oct 28 15:00:00 server httpd[741]: Server configured, listening on: port 80active (running) na linha [Active] significa que ele está rodando agora, e o horário depois de since é quando ele iniciou. Este servidor iniciou 11 dias antes e nunca parou, e [Main PID] 741 era o processo pai que subiu naquele momento.
Em [CGroup], o que aparece abaixo de 741 são processos filhos que de fato atendem às requisições (veja Processos). A linha [Status] mostra o número de requisições atendidas até agora e quantos workers estão livres e quantos estão ocupados.
As três linhas de log no fim da saída eram registros de reload deixados uma vez por dia no mesmo horário: a ferramenta logrotate, que divide os logs por data, executou systemctl reload httpd depois de terminar a rotação, e o manual do httpd.service também diz que o httpd recebe reload depois do logrotate.
Em scripts e comandos de verificação, use is-active e is-enabled, que mostram uma só palavra.
systemctl is-active httpdactiveCom o serviço rodando, saiu active e o código de saída 0. Mesmo com apache2, que não existe no servidor, saiu inactive e o código de saída 3, igual a um serviço parado, então nos scripts confira primeiro se o nome do serviço está certo.
systemctl is-enabled httpdenabledenabled significa que o Apache está registrado para iniciar automaticamente no boot.
3️⃣ Diferença entre reiniciar o Apache e o graceful
O restart e o graceful (reload) tratam de forma diferente as requisições em andamento e o processo pai. Primeiro conferimos essa diferença nas linhas do arquivo de unidade do httpd usadas para reload e stop.
systemctl cat httpd | grep -E "Exec|Kill"ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
KillSignal=SIGWINCH
KillMode=mixedA linha ExecReload significa que o reload executa httpd -k graceful, e a linha KillSignal significa que o sinal enviado no stop é SIGWINCH (graceful-stop).
Por isso o systemctl restart httpd para o Apache com graceful-stop e depois o inicia de novo. As requisições em andamento são concluídas antes de ele cair, mas o próprio processo pai sobe de novo, então o número do [Main PID] muda. Entre a parada e o início, a porta fica fechada e novas conexões não são aceitas. O arquivo de unidade apache2.service do pacote do Debian também executa apachectl graceful-stop ao parar.
O httpd -k restart envia um sinal HUP ao processo pai. Segundo a documentação oficial do Apache, o pai continua, mas os processos filhos são encerrados na hora, então as requisições em andamento são cortadas e as estatísticas de requisições voltam a 0.
O graceful envia um sinal USR1 ao processo pai. O pai relê os arquivos de configuração, e cada processo filho é trocado por um filho com a nova configuração assim que termina a requisição que estava atendendo. As conexões que chegam nesse meio-tempo ficam na espera do sistema operacional, então não se perdem.
É como uma loja que continua aberta enquanto cada caixa, ao terminar de atender o cliente, passa o posto para um colega da nova escala.
Conferimos essa diferença pelo Main PID. Embora o reload rodasse todo dia, o Main PID 741 e o horário de Active continuavam os mesmos de 11 dias antes, e os números dos processos filhos (2930111 etc.) vinham logo depois do 2930107 da linha [Process] do último reload.
systemctl reload httpd, apachectl graceful e httpd -k graceful são todos o mesmo graceful. No AlmaLinux 9, o apachectl envia SIGUSR1 ao processo pai com systemctl kill quando recebe graceful, e o apachectl -k graceful, com -k na frente, tira o -k e faz a mesma coisa.
O graceful só relê a configuração, então não serve depois de atualizar o pacote httpd. Segundo o manual do httpd.service, o reload não é seguro se um módulo atualizado usa um recurso que só existe no novo httpd; por isso o pacote httpd reinicia o Apache automaticamente com systemctl try-restart quando é atualizado.
4️⃣ Verificar a sintaxe da configuração do Apache
Mesmo que você aplique as mudanças com graceful para não derrubar conexões, o Apache não passa para a nova configuração se um arquivo de configuração tiver um erro de digitação. Segundo a documentação oficial do Apache, restart e graceful fazem primeiro uma verificação de sintaxe e, se houver erro, só mostram a mensagem de erro e não reiniciam.
Por isso, depois de editar a configuração, verifique primeiro a sintaxe com apachectl -t.
apachectl -tSyntax OKAo executar apachectl -t, saiu uma única linha Syntax OK, e com apachectl configtest o resultado foi o mesmo. O apachectl da família RHEL executa httpd -t do jeito que está quando recebe -t.
Ao verificar um arquivo de configuração de teste com um nome de diretiva escrito errado, em vez de Syntax OK saiu o erro AH00526 junto com o número da linha e a diretiva não reconhecida ([Invalid command 'DirectoryIndx']), e o código de saída foi 1. Corrija a linha indicada na mensagem de erro e verifique de novo.
systemctl reload httpdSe a verificação passar, aplique a configuração com reload. Segundo a documentação oficial do Apache, a verificação de sintaxe só olha a sintaxe, então a aplicação pode falhar mesmo que ela passe. Depois do reload, confira mais uma vez a linha [Active] do systemctl status e os logs no fim.
🔲 Simulador de comandos do Apache
No servidor virtual do simulador abaixo, você mesmo pode digitar comandos systemctl, apachectl e httpd -k. Depois do reload, o Main PID continua o mesmo e só os números dos processos filhos mudam. Depois do restart, até o Main PID muda para um número novo.
🔢 FAQ & conteúdo recomendado
Apache · Erro ao reiniciar
Erro ao reiniciar o Apache | (20014)Internal error: Error retrieving pid file logs/httpd.pid
Por que comandos como apachectl restart dão erro no arquivo pid e os passos para limpar um httpd.pid vazio.
Apache · php-fpm
Aviso de max_children do php-fpm: descubra a causa nos logs antes de aumentar os workers
O registro de como encontramos pelos logs a causa do acúmulo de avisos de max_children em um servidor WordPress com Nginx, Apache e php-fpm.
ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.