Lösung 1:
Sie können nicht verhindern, dass ein Port an den falschen Dienst gebunden wird. Entfernen Sie in Ihrem Fall einfach Apache aus dem Autostart und Sie sollten gut sein.
Für 16.04 und neuer:
sudo systemctl disable apache2
Für ältere Ubuntu-Versionen:
sudo update-rc.d apache2 disable
Lösung 2:
Wenn Sie wirklich nicht apache2
verwenden , und es ist PHP 7.0, das es erfordert, dann sieht es so aus, als hätten Sie libapache2-mod-php7.0
Eingerichtet. Dieses Paket ist ohne Apache nutzlos. Da Sie nginx verwenden, haben Sie wahrscheinlich auch php7.0-fpm
oder php7.0-cgi
installiert, von denen beide ausreichen, um php7.0
zu erfüllen Abhängigkeitsanforderungen von :
$ apt-cache depends php7.0
php7.0
|Depends: php7.0-fpm
|Depends: libapache2-mod-php7.0
Depends: php7.0-cgi
Depends: php7.0-common
Conflicts: <php5>
Wenn Sie eines von php7.0-{fpm,cgi}
haben installiert haben, können Sie fortfahren und Apache deinstallieren.
Lösung 3:
Um Ihre Frage zu beantworten, können Sie wahrscheinlich einen Port auf eine bestimmte Anwendung beschränken, indem Sie SElinux verwenden. Ich habe es selbst nicht benutzt und habe nur oberflächliche Kenntnisse über seine Fähigkeiten, aber hier ist ein Hinweis, den ich auf dieser Seite gefunden habe:
https://serverfault.com/a/257056/392230
In dieser Antwort scheint wzzrd zu zeigen, wie man einer bestimmten Anwendung (foo) die Erlaubnis erteilt, sich an einen bestimmten Port (803) zu binden. Sie müssten nur die Richtlinie so einrichten, dass nur Ihre Anwendung (nginx) die von Ihnen angegebenen Ports (80 und 443) zulässt.
Wenn ich mich auf die Antwort von wzzrd stütze, könnte es so einfach sein, dies der Richtlinie hinzuzufügen
allow nginx_t nginx_port_t:tcp_socket name_bind;
und diese ausführen
semanage port -a -t nginx_port_t -p tcp 80
semanage port -a -t nginx_port_t -p tcp 443
Ich nehme jedoch an, dass Sie auch eine Zeile in der Richtlinie benötigen, die angibt, dass kein anderes Programm an diese Ports binden darf.
Am Ende rate ich nur, was die passende Konfiguration ist.
Wie auch immer, ich glaube nicht, dass es ein Ubuntu gegeben hat, auf dem SElinux standardmäßig installiert und aktiviert ist. Da meiner Meinung nach bestimmte Patches auf verschiedene Dienstprogramme und eine Kerneloption angewendet werden müssen, ist es möglicherweise einfacher, einfach Centos zu verwenden, auf dem SElinux von Anfang an installiert und aktiviert ist.
Tut mir leid, ich bin nicht mehr hilfreich. Vielleicht lade ich ein andermal ein Bild von Centos herunter und versuche es; es wird ein guter Lernschritt sein. Ich werde diese Antwort aktualisieren, wenn ich das tue.
Lösung 4:
Etwas, das ich in den Antworten noch nicht gesehen habe, aber immer noch eine Möglichkeit ist:
Ändern Sie die Apache-Konfiguration so, dass sie für alle Fälle auf einen anderen Port lauscht. Sie können dies tun, indem Sie die Apache-Konfigurationsdatei öffnen und die Zeilen mit Listen 80
ändern zu einem anderen Port.