2 votes

Impossible de démarrer apache httpd même si le port 80 n'est pas utilisé

Exécuté sur une instance AWS ec2, un peu de contexte, je suis un gars de frontend essayant de résoudre un problème avec un serveur web de production et j'ai épuisé mes connaissances en dépannage/linux cli et je suis hors de ma zone de confort.

J'ai fait un changement dans le httpd.conf pour ajouter un nouveau domaine et a suivi les instructions qui disaient d'utiliser le fichier sudo service httpd restart pour que les changements que j'ai faits prennent effet. Cela a provoqué une erreur et maintenant le service httpd s'est arrêté, ce qui signifie qu'aucun de nos sites n'est servi.

J'ai essayé les choses suivantes pour redémarrer le service httpd :

  • apachectl configtest renvoie à Syntax OK
  • sudo service httpd start renvoie l'erreur suivante :

    Redirecting to /bin/systemctl start httpd.service Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

-> en cours d'exécution systemctl status httpd.service après cela donne cette information :

httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Mon 2021-01-18 16:00:20 UTC; 1min 20s ago
     Docs: man:httpd.service(8)
  Process: 5943 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 5943 (code=exited, status=1/FAILURE)
   Status: "Reading configuration..."

Jan 18 16:00:20 ip-172-31-38-82.eu-west-1.compute.internal systemd[1]: Starting The Apache HTTP Server...
Jan 18 16:00:20 ip-172-31-38-82.eu-west-1.compute.internal httpd[5943]: [Mon Jan 18 16:00:20.317159 2021] [so:warn] [pid 5943] AH01574: module headers_module is already loaded, skipping
Jan 18 16:00:20 ip-172-31-38-82.eu-west-1.compute.internal systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Jan 18 16:00:20 ip-172-31-38-82.eu-west-1.compute.internal systemd[1]: Failed to start The Apache HTTP Server.
Jan 18 16:00:20 ip-172-31-38-82.eu-west-1.compute.internal systemd[1]: Unit httpd.service entered failed state.
Jan 18 16:00:20 ip-172-31-38-82.eu-west-1.compute.internal systemd[1]: httpd.service failed.
[ec2-user@ip-172-31-38-82 ~]$ 
  • en cours d'exécution sudo apachectl -k start donne l'avertissement suivant mais pas d'erreur :

    [so:warn] [pid 5967] AH01574: module headers_module is already loaded, skipping

  • Un autre sujet que j'ai vu disait que quelque chose d'autre pouvait déjà fonctionner sur le port 80 et qu'il fallait utiliser sudo netstat -lpAinet pour voir ce qui est en cours d'exécution et qui est revenu :

    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:ssh 0.0.0.0: LISTEN 3246/sshd
    tcp 0 0 localhost:smtp 0.0.0.0:
    LISTEN 3208/master
    tcp 0 0 0.0.0.0:sunrpc 0.0.0.0: LISTEN 2750/rpcbind
    udp 0 0 0.0.0.0:bootpc 0.0.0.0:
    2971/dhclient
    udp 0 0 0.0.0.0:sunrpc 0.0.0.0: 2750/rpcbind
    udp 0 0 localhost:323 0.0.0.0:
    2772/chronyd
    udp 0 0 0.0.0.0:799 0.0.0.0:* 2750/rpcbind

Et rien ici ne dit port 80 ou n'a le nom de programme apache.

  • J'ai essayé une autre commande pour démarrer le service httpd qui a renvoyé une erreur indiquant que le service ne pouvait pas être lié au port 80 (je ne trouve plus la commande en question). L'article mentionne que le service httpd doit être démarré avec les permissions de root pour attribuer des numéros de port inférieurs à 1024. J'ai essayé de vérifier mes permissions en utilisant sudo -l et le message suivant a été renvoyé :

    User ec2-user may run the following commands on ip-172-31-38-82: (ALL) ALL (ALL) NOPASSWD: ALL

qui semble avoir les bonnes permissions pour l'exécuter.

Et c'est là que j'ai atteint la limite où je me sentais à l'aise pour dépanner par moi-même.

0 votes

Ce que systemd n'est pas capable de déterminer, c'est qu'en plus des journaux et des erreurs enregistrés dans journald, Apache maintient également son propre journal (d'erreurs). C'est généralement là qu'Apache enregistre les erreurs les plus utiles et les plus verbeuses (au démarrage). Celles-ci se trouvent généralement dans un fichier /var/log sous-répertoire

1 votes

@HermanB Merci pour le conseil, j'ai jeté un coup d'oeil au journal des erreurs pour httpd et le plus récent (ainsi que tous ceux avant cela de mes tentatives précédentes) disent : [suexec:notice] [pid 5995] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) AH00016: Configuration Failed

1 votes

Bien que Suexec soit assez particulier sur de nombreuses choses (voir par exemple : httpd.apache.org/docs/2.4/suexec.html ) ce message semble être un faux-fuyant. Le site AH00016: Configuration Failed Le message est probablement le vrai problème. Vous en verrez peut-être davantage dans les autres journaux d'Apache (y a-t-il un ssl-error-log ?).

0voto

ebeck Points 11

Comme l'a suggéré Andrew Schulman dans les commentaires sur ma question, le problème ne venait pas de la configuration mais du certificat SSL utilisé par l'un des domaines. Le site certificate.crt y private.key Les fichiers ne correspondaient pas, ce qui était certes ma faute pour avoir essayé de les échanger auparavant.

Après avoir cherché le message d'erreur AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) AH00016: Configuration Failed que j'ai trouvé grâce à HermanB, j'ai réalisé que c'était ma tentative de mise à jour du certificat qui avait causé le problème et, bien sûr, la mise à jour des deux parties du certificat a réglé le problème.

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