3 votes

systemctl restart httpd Failed to start Le serveur HTTP Apache httpd pid déjà en cours d'exécution

Pardonnez le post croisé de Stack Overflow mais j'ai réalisé que c'était probablement le meilleur endroit pour demander.

J'ai récemment reconstruit mon serveur sur AWS, en passant d'Amazon Linux à Amazon Linux 2, qui comme Linux 1 semble être un fork de CentOS, maintenant CentOS 7. La configuration de mon serveur virtuel reste la même que celle de la version précédente, tandis que tous les autres fichiers de configuration sont les nouveaux fichiers par défaut. (Juste pour info, je ne suis pas sûr que cela ait une quelconque incidence).

Depuis la reconstruction, je ne peux plus faire systemctl restart httpd . Je reçois l'erreur The Apache HTTP Server httpd pid (NNNN) already running .

J'ai fait lots J'ai fait des recherches sur Internet et j'ai vu que de nombreuses personnes avaient ce problème, mais il s'agit toujours de quelque chose de différent. différents qu'ils ont fait. Je ne peux pas penser à quelque chose de "différent" que j'ai fait.

J'ai appris que le PID que je vois comme "déjà en cours d'exécution", appartenant à root, est le "processus maître" et que tous les autres PID, appartenant à apache, sont les "processus ouvriers". CentOS httpd fonctionne à la fois en tant que root et utilisateur apache

root      4461     1  0 07:18 ?        00:00:00 /usr/sbin/httpd -k restart
apache    4467  4461  0 07:18 ?        00:00:09 /usr/sbin/httpd -k restart
apache    4468  4461  0 07:18 ?        00:00:08 /usr/sbin/httpd -k restart
apache    4471  4461  0 07:18 ?        00:00:08 /usr/sbin/httpd -k restart
apache    4477  4461  0 07:18 ?        00:00:08 /usr/sbin/httpd -k restart
apache    4498  4461  0 07:18 ?        00:00:07 /usr/sbin/httpd -k restart
apache    5236  4461  0 07:19 ?        00:00:08 /usr/sbin/httpd -k restart
apache    5248  4461  0 07:19 ?        00:00:09 /usr/sbin/httpd -k restart
apache    5987  4461  0 07:20 ?        00:00:09 /usr/sbin/httpd -k restart
apache    5993  4461  0 07:20 ?        00:00:08 /usr/sbin/httpd -k restart
apache    5994  4461  0 07:20 ?        00:00:09 /usr/sbin/httpd -k restart
# systemctl restart httpd;systemctl status httpd;
Job for httpd.service failed. See "systemctl status httpd.service" and "journalctl -xe" for details.
 httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: failed (Result: protocol) since Thu 2021-12-23 19:56:05 UTC; 4ms ago
     Docs: man:httpd.service(8)
  Process: 31799 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=0/SUCCESS)
 Main PID: 31799 (code=exited, status=0/SUCCESS)
   Status: "Reading configuration..."

Dec 23 19:56:04 ip-10-5-11-55.ec2.internal systemd[1]: Starting The Apache HTTP Server...
Dec 23 19:56:05 ip-10-5-11-55.ec2.internal httpd[31799]: httpd (pid 4461) already running
Dec 23 19:56:05 ip-10-5-11-55.ec2.internal systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 19:56:05 ip-10-5-11-55.ec2.internal systemd[1]: Unit httpd.service entered failed state.
Dec 23 19:56:05 ip-10-5-11-55.ec2.internal systemd[1]: httpd.service failed.

Rien d'inhabituel dans le journal des erreurs d'Apache :

[Thu Dec 23 07:18:58.777745 2021] [suexec:notice] [pid 4460] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Thu Dec 23 07:18:58.802753 2021] [lbmethod_heartbeat:notice] [pid 4461] AH02282: No slotmem from mod_heartmonitor
[Thu Dec 23 07:18:58.802850 2021] [http2:warn] [pid 4461] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more
[Thu Dec 23 07:18:58.847386 2021] [mpm_prefork:notice] [pid 4461] AH00163: Apache/2.4.51 () PHP/7.4.21 configured -- resuming normal operations
[Thu Dec 23 07:18:58.847414 2021] [core:notice] [pid 4461] AH00094: Command line: '/usr/sbin/httpd'

Si je tue ce PID "maître", alors je peux faire des redémarrages sans problème.

# kill 4461
# systemctl restart httpd;systemctl status httpd;
 httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-12-23 20:01:31 UTC; 6ms ago
     Docs: man:httpd.service(8)
 Main PID: 3091 (httpd)
   Status: "Configuration loaded."
   CGroup: /system.slice/httpd.service
           3091 /usr/sbin/httpd -DFOREGROUND

Dec 23 20:01:31 ip-10-5-11-55.ec2.internal systemd[1]: Starting The Apache HTTP Server...
Dec 23 20:01:31 ip-10-5-11-55.ec2.internal systemd[1]: Started The Apache HTTP Server.
# ps -Af | grep httpd
root      3145     1  1 20:01 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    3147  3145  0 20:01 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    3153  3145  0 20:01 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    3171  3145  0 20:01 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    3177  3145  0 20:01 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    3183  3145  0 20:01 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND

Le conseil de la plupart des gens est de "tuer le processus", Apache ne démarre pas, il fonctionne déjà mais n'utilise pas le fichier pid ? mais j'ai besoin que ça fonctionne sans surveillance. Qu'est-ce que je pourrais voir d'autre ?

0 votes

"Le module mpm (prefork.c) n'est pas supporté par mod_http2" : corrigez d'abord ce problème en passant à mpm_worker o mpm_event

0 votes

@digijay Oui, je sais, mais il y a des problèmes avec HTTP2 et l'équilibrage de la charge d'AWS, donc je ne suis pas concerné par cela. Et ce message d'avertissement était présent sur l'ancien serveur, donc il est lié au problème actuel.

0 votes

Je voulais dire "pas" lié

0voto

rwhirn Points 21

Bien que j'aie beaucoup cherché, je n'ai pas trouvé les réponses données pour d'autres versions de Linux. J'ai trouvé la réponse lorsque j'ai remarqué que httpd avait été lancé à l'origine avec "apachectl" et que j'essayais de le redémarrer en utilisant "systemctl", et j'ai pensé que cela pouvait être le problème. Lorsque j'ai fait des recherches sur ce sujet, j'ai trouvé de nombreuses réponses. Celle-ci semble être la plus concise : https://unix.stackexchange.com/questions/240528/apache-and-systemd

Dans d'autres, vous rencontrez le même problème que moi, à savoir qu'une fois que vous commencez avec apachectl, vous devez vous y tenir car systemd ne peut pas savoir ce que vous avez fait avec apachectl car il utilise une configuration différente.

0voto

Aathil Mohamed Points 1

Cela peut être résolu en changeant la politique de SE Linux en tant qu'utilisateur root entrez d'abord la commande

journalctl -xe

vous pouvez voir ces deux-là dans le bas de l'exécution

ausearch -c 'ftdc' --raw | audit2allow -M my-ftdc
semodule -i my-ftdc.pp

puis redémarrez la machine

reboot

puis lancez le serveur httpd

systemctl start httpd

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X