web-dev-qa-db-fra.com

Pourquoi ai-je le message "Autorisation refusée: make_sock: impossible de lier à l'adresse" lors du démarrage d'Apache2?

Je peux l'arrêter en utilisant

/etc/init.d/Apache2 stop

Mais quand je veux recommencer en utilisant:

/etc/init.d/Apache2 start

Je reçois cette erreur:

Starting web server Apache2                                                  /usr/sbin/Apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
Apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
                                                                         [fail]
24
Artisan

Quelques mots sur les erreurs que vous obtenez qui, espérons-le, vous éviteront des situations similaires à l'avenir.

Sous Linux, les ports 0 à 1024 sont réservés à l'utilisation du système. Cela signifie que pour pouvoir en utiliser un, vous devez avoir le droit de modifier - accéder aux paramètres système de base. L'utilisateur root dispose de tels privilèges et peut utiliser un port compris entre 0 et 1024.

Dans votre problème, comme vous pouvez le constater, la réponse système Apache2 indique la racine du problème ([...] ne peut pas se lier à l'adresse blah blah 80 ):

(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80

Lorsque le démon http Apache2 démarre, il tente de lier le port 80 car il s’agit du port par défaut à utiliser avec HTTP voir , qui est un port situé dans les ports attribués au système. En tant que tel, il est uniquement accessible. par racine.

Vous avez exécuté la commande de démarrage en tant qu'utilisateur typique sans privilèges root et vous avez abouti à un échec.

En termes simples:

Vous:

Bonjour Apache2. Je suis Kongthap et je vous dis de commencer (/etc/init.d/Apache2 start)

Apache2:

D'ACCORD. Je commence (démarrage du serveur Web Apache2)

Système, donnez-moi le port 80 à utiliser et écoutez les connexions.

Système:

D'ACCORD. Un moment pour vérifier ...

Ahh ... Désolé Apache2 mais je ne peux pas vous laisser courir à 80 ports, c'est pour un usage personnel.

Et vous n'avez pas les privilèges appropriés pour le lier. (Operation not permitted)

Apache2:

Ohh, Kongthap, j'ai échoué à démarrer, le système ne m'a pas laissé le faire ((13)Permission denied:[...])

Conclusion

Il y a principalement deux solutions à ce problème:

  1. Exécutez le démon HTTP Apache2 avec les privilèges root en utilisant Sudo:

    Sudo service Apache2 start
    

    ou:

    Sudo /etc/init.d/Apache2 start
    
  2. Modifiez le port par défaut de 80 en un élément supérieur à 1024, dites 2000, 2500, 9000, etc. Un port typique à exécuter dans une telle situation est 8080

    Sudo vi /etc/Apache2/ports.conf
    

    chercher ou sinon ajouter:

    Listen 8080
    

    ou tout autre port de votre choix tel que le port > 1024 et le port sélectionné n'est pas utilisé par un autre processus.

47
Stef K

Voici les commandes pour démarrer/arrêter/redémarrer le serveur Apache:

  • Commencer:

    Sudo /etc/init.d/Apache2 start
    
  • Arrêter:

    Sudo /etc/init.d/Apache2 stop
    
  • Recommencer:

    Sudo /etc/init.d/Apache2 restart
    
7
Saurav Kumar

Vérifiez le contexte du port selinux en émettant une commande

semanage port -l | grep http

S'il est présent dans la liste http_port_t, tout va bien, sinon ajoutez votre port en

semanage port -a -t http_port_t -p tcp 80

ou quelque chose que vous voulez assigner.

3
zahid iqbal

C'est une erreur selinux, ou du moins c'était dans mon cas. Changez le booléen, désactivez selinux ou configurez-le de façon permissive avec setenforce 0.

Le changement booléen nécessiterait que vous exécutiez getenforce -a | grep http et que vous recherchiez "autoriser le réseau de connexion http". Copiez-le et remplacez "on" où la liste indique "- off"

1
tru