Einige Worte zu den Fehlern, die Sie in Zukunft hoffentlich vor ähnlichen Situationen bewahren werden.
In Linux sind Ports von 0 bis 1024 für die Verwendung durch das System reserviert. Dies bedeutet, dass Sie die Berechtigung haben müssen, auf grundlegende Systemeinstellungen zuzugreifen, um eine zu verwenden. Der Root-Benutzer hat solche Rechte und kann tatsächlich einen Port zwischen 0 und 1024 verwenden.
Wie Sie sehen können, gibt das System durch die Apache2-Antwort die Wurzel des Problems an ([...] konnte nicht an die Adresse bla bla 80 gebunden werden ):
(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
Wenn der Apache2-http-Daemon gestartet wird, versucht er, den 80-Port zu binden, da dies der Standardport für die Verwendung in HTTP ist. Dies ist ein Port innerhalb des Systems, dem Ports zugewiesen sind, und als solcher kann nur root darauf zugreifen.
Sie haben den Befehl start als typischer Benutzer ohne Root-Berechtigungen ausgeführt und dies nicht getan.
In einfachen Worten:
Du:
Hallo Apache2. Ich bin Kongthap und ich sage dir, dass du anfangen sollst ( /etc/init.d/apache2 start
)
Apache2:
OKAY. Ich starte (Starte Webserver apache2)
System, bitte geben Sie mir Port 80, um Verbindungen zu verwenden und zu überwachen.
System:
OKAY. Einen Moment, um zu überprüfen ...
Ahh ... Entschuldigung Apache2, aber ich kann nicht zulassen, dass Sie bei 80 Port laufen, es ist für den persönlichen Gebrauch.
Und Sie haben nicht die richtigen Berechtigungen, um es zu binden. ( Operation not permitted
)
Apache2:
Ohh, Kongthap ich konnte nicht starten, das System hat es nicht zugelassen ( (13)Permission denied:[...]
)
Fazit
Es gibt hauptsächlich zwei Lösungen für dieses Problem:
Führen Sie den Apache2-HTTP-Daemon mit Root-Rechten aus sudo
:
sudo service apache2 start
oder:
sudo /etc/init.d/apache2 start
Ändern Sie den Standard - Port von 80
etwas mehr als 1024
, sagen wir 2000
, 2500
, 9000
usw. Ein typischer Hafen laufen , wenn in einer solchen Situation ist8080
sudo vi /etc/apache2/ports.conf
suchen oder wenn nicht da hinzufügen:
Listen 8080
oder ein anderer Port Ihrer Wahl, z. B. Port, > 1024
und der ausgewählte Port wird von keinem anderen Prozess verwendet.
service
die bevorzugte Methode verwendet?Es folgen die Befehle zum Starten / Stoppen / Neustarten des Apache-Servers:
Anfangen:
Stoppen:
Neustarten:
quelle
Überprüfen Sie den Kontext des Selinux-Ports, indem Sie den Befehl eingeben
Wenn es in der http_port_t-Liste vorhanden ist, ist es in Ordnung, andernfalls fügen Sie Ihren Port durch hinzu
oder etwas, das Sie zuweisen möchten.
quelle
Dies ist ein Selinux-Fehler, oder zumindest war es in meinem Fall. Ändern Sie entweder den Booleschen Wert, deaktivieren Sie Selinux oder setzen Sie ihn auf "Permissive" mit
setenforce 0
.Die boolesche Änderung würde erfordern, dass Sie ausführen
getenforce -a | grep http
und nach "http connect network zulassen" suchen. Kopiere es und ersetze "on", wo auf der Liste "- off" stehtquelle