Ich habe ein Problem, das ich seit einigen Tagen zu beheben versuche, und ich weiß nicht, was ich tun soll. Ich habe nach Antworten gesucht, aber all die, die ich gefunden habe, haben mir nicht geholfen.
Ich bin ein bisschen neu hier und ich hoffe wirklich, dass mir jemand helfen kann. Sie können mir sagen, welche Informationen ich geben muss, um eine Lösung zu finden.
$ systemctl status nginx.service
nginx.service - Startup script for nginx service
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2016-03-08 13:23:35 GMT; 2min 20s ago
Mar 08 13:23:33 startdedicated.com nginx[8315]: nginx: [emerg] bind() to ------------ f...e)
Mar 08 13:23:33 startdedicated.com nginx[8315]: nginx: [emerg] bind() to ----- f...e)
Mar 08 13:23:34 startdedicated.com nginx[8315]: nginx: [emerg] bind() to ----- f...e)
Mar 08 13:23:34 startdedicated.com nginx[8315]: nginx: [emerg] bind() to ----- f...e)
Mar 08 13:23:35 startdedicated.com nginx[8315]: nginx: [emerg] bind() to ----- f...e)
Mar 08 13:23:35 .startdedicated.com nginx[8315]: nginx: [emerg] still could not bind()
Mar 08 13:23:35 startdedicated.com systemd[1]: nginx.service: control process exited, code=...=1
Mar 08 13:23:35 startdedicated.com systemd[1]: Failed to start Startup script for nginx service.
Mar 08 13:23:35 startdedicated.com systemd[1]: Unit nginx.service entered failed state.
Mar 08 13:23:35 startdedicated.com systemd[1]: nginx.service failed.
Antworten:
Versuchen Sie, die folgenden zwei Befehle auszuführen:
sudo fuser -k 80/tcp
sudo fuser -k 443/tcp
Dann ausführen
sudo service nginx restart
Wenn dies funktioniert hat , installiert Ihr Hosting-Anbieter möglicherweise Apache standardmäßig während einer Neuinstallation auf Ihrem Server. Lesen Sie daher weiter, um eine dauerhaftere Lösung zu finden. Wenn dies nicht funktioniert hat, lesen Sie weiter, um das Problem zu identifizieren.
Führen Sie aus
nginx -t
und wenn es nichts zurückgibt, würde ich das Nginx-Fehlerprotokoll überprüfen. Standardmäßig sollte es sich in befinden/var/log/nginx/error.log
.Sie können es mit jedem Texteditor öffnen:
sudo nano /var/log/nginx/error.log
Kannst du dort etwas Verdächtiges finden?
Das zweite Protokoll, das Sie überprüfen können, ist das folgende
sudo nano /var/log/syslog
Als ich dieses Problem hatte, lag es daran, dass mein Hosting-Anbieter Apache während einer Neuinstallation automatisch installierte. Es blockierte Port 80.
Bei der Ausführung wurde
sudo nano /var/log/nginx/error.log
Folgendes als Fehlerprotokoll angezeigt:Der obige Fehler zeigt, dass Nginx nicht an Port 80 gebunden werden konnte, da es bereits verwendet wurde.
Um dies zu beheben, müssen Sie Folgendes ausführen:
yum install net-tools
sudo netstat -tulpn
Wenn Sie das oben genannte ausführen, erhalten Sie ungefähr Folgendes:
Sie können sehen, dass Port 80 von httpd (Apache) blockiert wird. Dies kann auch Port 443 sein, wenn Sie SSL verwenden.
Rufen Sie die PID des Prozesses ab, der Port 80 oder 443 verwendet. Senden Sie den Befehl kill, indem Sie den
<PID>
Wert ändern :sudo kill -2 <PID>
Beachten Sie in meinem Beispiel, dass der PID-Wert von Apache
1762
so war, dass ich ihn ausführen würdesudo kill -2 1762
Alternativ können Sie Folgendes ausführen:
sudo fuser -k 80/tcp
sudo fuser -k 443/tcp
Nachdem Port 80 oder 443 klar ist, können Sie Nginx starten, indem Sie Folgendes ausführen:
sudo service nginx restart
Es ist auch ratsam, alles zu entfernen, was zuvor die Ports 80 und 443 blockiert hat. Dadurch werden Konflikte in Zukunft vermieden. Da Apache (httpd) meine Ports blockierte, entfernte ich es, indem ich Folgendes ausführte:
yum remove httpd httpd-devel httpd-manual httpd-tools mod_auth_kerb mod_auth_mysql mod_auth_pgsql mod_authz_ldap mod_dav_svn mod_dnssd mod_nss mod_perl mod_revocator mod_ssl mod_wsgi
Hoffe das hilft.
quelle
sudo netstat -tulpn
ich tatsächlichtcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 24873/nginx: master
, aber wenn ich versuche, den Dienst zu starten oder seinen Status zu sehen, bekomme ich diesesnginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Bizarre. Irgendeine Idee warum?Kann nützlich sein, um die Syntax der Konfigurationsdateien von Nginx zu überprüfen, indem Sie Folgendes ausführen:
quelle
sudo /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
oder einfachsudo /usr/local/nginx/sbin/nginx -t
nginx/sites-enabled
Sobald diese Fehler behoben sind, werden alle anderen Befehle ordnungsgemäß ausgeführt.In meinem Fall liegt es daran, dass der Apache-Server irgendwie läuft. Also stoppe ich Apache und starte Nginx neu. Arbeite wie ein Zauber!
quelle
Versuchen Sie, mit dem folgenden Befehl zu debuggen:
Welche Ausgaben so etwas wie:
Und beheben Sie diese Warnungen
Starten Sie dann nginx neu
quelle
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
Die Ursache des Problems ist folgende: Ich hatte bereits einen
Apache
Webserver installiert und habe den Port80
auf meinem lokalen Computer aktiv überwacht .Apache
undNginx
sind die beiden wichtigsten Open-Source-Hochleistungs-Webserver, die in der Lage sind, unterschiedliche Workloads zu bewältigen, um die Anforderungen moderner Webanforderungen zu erfüllen. JedochApache
dient in erster Linie als ein HTTP - Server , währendNginx
ein Hochleistungs asynchroner Web - Server und Reverse - Proxy - Server.Die Unfähigkeit
Nginx
zu starten war, weilApache
Port 80 bereits als Standardport abgehört wurde, der auch der Standardport für istNginx
.Eine schnelle Problemumgehung besteht darin, den
Apache
Server zu stoppen, indem Sie den folgenden Befehl ausführenStarten Sie dann den
Nginx
Server, indem Sie den folgenden Befehl ausführenDas gleiche Problem tritt jedoch erneut auf, wenn wir versuchen, den
Apache
Server erneut zu starten , da beide den Port80
als Standardport verwenden.So habe ich es behoben :
Führen Sie den folgenden Befehl aus, um die Standardkonfigurationsdatei von Nginx im Nano-Editor zu öffnen
Scrollen Sie beim Öffnen der Datei im Nano-Editor nach unten und ändern Sie den Standard-Server-Port in einen beliebigen Port Ihrer Wahl. Für mich habe ich mich entschieden, es in Port zu ändern
85
Scrollen Sie auch nach unten und ändern Sie den virtuellen Host-Port in einen beliebigen Port Ihrer Wahl. Für mich habe ich mich auch dafür entschieden, es in Port zu ändern
85
Dann speichern und beenden Sie die Datei , indem Sie auf Ihrer Tastatur drücken:
Möglicherweise werden Sie weiterhin aufgefordert, Y auf Ihrer Tastatur zu drücken , um Ihre Änderungen zu speichern.
Bestätigen Sie abschließend, dass Ihre Konfiguration korrekt ist, und starten Sie den
Nginx
Server neu:Sie können jetzt in Ihrem Browser zu
localhost:nginx-port
(localhost:85
) navigieren , um die Änderungen zu bestätigen.Anzeigen der Standard-Nginx-Startseite
Wenn die Standard-Nginx-Startseite angezeigt werden soll, wenn Sie in Ihrem Browser zu
localhost:nginx-port
(localhost:85
) navigieren, gehen Sie folgendermaßen vor:Untersuchen Sie das Verzeichnis,
/var/www/html/
das das Standardverzeichnisroot
für beide ist,Apache
undNginx
listen Sie dessen Inhalt auf:Sie werden 2 Dateien im Verzeichnis aufgelistet:
Führen Sie den folgenden Befehl aus, um die Standardkonfigurationsdatei von Nginx im Nano-Editor zu öffnen:
Ändern Sie die Reihenfolge der Indexdateien im Stammverzeichnis wie folgt:
dazu (Setzen der Standard-Nginx-Startseite -
index.nginx-debian.html
unmittelbar danach auf die 2. Positionindex
):Dann speichern und beenden Sie die Datei , indem Sie auf Ihrer Tastatur drücken:
Möglicherweise werden Sie weiterhin aufgefordert, Y auf Ihrer Tastatur zu drücken , um Ihre Änderungen zu speichern.
Bestätigen Sie abschließend, dass Ihre Konfiguration korrekt ist, und starten Sie den
Nginx
Server neu:Sie können jetzt in Ihrem Browser zu
localhost:nginx-port
(localhost:85
) navigieren , um die Änderungen zu bestätigen.Das ist alles.
ich hoffe das hilft
quelle
Wenn etwas nicht an einen Port gebunden werden kann, sind es 5%, weil es nicht von root (Sticky Suid Bit, Sudo) gestartet wird, und 94%, weil eine andere Anwendung bereits an diesen Port gebunden ist.
Stellen Sie sicher, dass Nginx wirklich heruntergefahren ist und Sie nicht versuchen, es versehentlich zweimal zu starten.
Stellen Sie sicher, dass Apache oder andere Dienste, die Port 80 verwenden, nicht ausgeführt werden.
Nutzen Sie
netstat -a | grep tcp
, um mehr zu erfahren.quelle
Das Ändern des Ports kann hilfreich sein, da 80 Ports bereits irgendwo verwendet werden
Ändern Sie den Port:
Starten Sie dann den Nginx-Server neu
quelle
Für meinen Fall muss ich rennen
Es wird überprüft, ob die Nginx-Konfiguration korrekt ist oder nicht. Wenn nicht, wird angezeigt, welche Konfiguration den Fehler verursacht.
Dann müssen Sie gehen
/etc/nginx/sites-available
, um die defekte Konfiguration zu beheben.Danach können Sie Nginx problemlos neu starten.
quelle
In meinem Fall konnte nginx die hier befindliche Protokolldatei nicht öffnen
/var/log/nginx/error.log
Dies lag daran, dass ich das Protokollverzeichnis gelöscht hatte, um Speicherplatz im Stammverzeichnis freizugeben (was sich als dumm herausstellte).
Ich habe dann einen Protokollordner in var und einen Nginx-Ordner in log erstellt.
Dann einfach laufen
sudo service nginx start
quelle
oder zurücksetzen
/etc/nginx/sites-available/default
quelle
Versuchen Sie, einen Benutzer in der Datei nginx.conf festzulegen. Vielleicht kann er deshalb den Dienst nicht starten:
quelle
Ich hatte das gleiche Problem, als ich Vesta verwendete, das Nginx mit Apache verwendet. Das Problem war, dass Apache nach dem Anwenden aller Updates 443 auf https abhörte. Die Lösung bestand nur darin, die 443 Inhalte in ports.conf zu kommentieren. Dies liegt daran, dass nginx auch diesen Port verwendet.
quelle
Überprüfen Sie df -h, wenn Sie sich unter dem centOS-System befinden
quelle
Das hat bei mir funktioniert:
Gehen Sie zuerst zu
cd / etc / nginx
Nehmen Sie die Änderungen in der Datei nginx.conf vor und stellen Sie den Standardport so ein, dass er von 80 auf eine beliebige 85 oder etwas anderes wartet.
Verwenden Sie dann diesen Befehl, um diesen Porttyp zu binden, damit nginx ihn verwenden kann:
Semanage-Port -a -t PORT_TYPE -p TCP 85
Dabei ist PORT_TYPE eine der folgenden Angaben: http_cache_port_t, http_port_t, jboss_management_port_t, jboss_messaging_port_t, ntop_port_t, puppet_port_t.
Dann renne:
sudo systemctl start nginx; #sudo systemctl status nginx
[Sie sollten den aktiven Status sehen]; #sudo systemctl enable nginx
quelle
Versuchen :
quelle
Schreiben Sie einfach, dass Ihre Arbeit erledigt ist
Viel Spaß beim Lernen
quelle
Ich verwende RHEL 7.4 mit NGINX 1.13.8 und wenn ich dasselbe mit sudo mache, funktioniert es Ok:
Stellen Sie einfach sicher, dass jeder, der verwenden möchte,
nginx.service
über Ausführungsberechtigungen verfügt.quelle
Verwenden Sie diesen Befehl, um
sudo service apache2 stop
sudo apt-get purge apache2
sudo apt-get update
sudo apt-get install nginx
sudo service nginx neu starten
quelle