![HTTPD kann unter CentOS 7 nicht neu gestartet werden](https://rvso.com/image/726390/HTTPD%20kann%20unter%20CentOS%207%20nicht%20neu%20gestartet%20werden.png)
Ich habe eine Instanz, auf der CentOS 7 läuft. Und ich habe ein Problem, wenn ich neu starte httpd
.
Meine Konfiguration funktioniert einwandfrei, meine Sites werden wie gewünscht gesendet. Darüber hinaus sudo apachectl configtest
erhalte ich zurück, wenn ich den Befehl ausführe Syntax OK
.
Aber wenn ich neu starte httpd
, wird die folgende Statusmeldung nicht angezeigt:
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2018-08-28 12:30:26 CEST; 6s ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 9569 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
Process: 9568 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
Main PID: 9568 (code=exited, status=1/FAILURE)
Aug 28 12:30:26 vps httpd[9568]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
Aug 28 12:30:26 vps httpd[9568]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
Aug 28 12:30:26 vps httpd[9568]: no listening sockets available, shutting down
Aug 28 12:30:26 vps httpd[9568]: AH00015: Unable to open logs
Aug 28 12:30:26 vps systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Aug 28 12:30:26 vps kill[9569]: kill: cannot find process ""
Aug 28 12:30:26 vps systemd[1]: httpd.service: control process exited, code=exited status=1
Aug 28 12:30:26 vps systemd[1]: Failed to start The Apache HTTP Server.
Aug 28 12:30:26 vps systemd[1]: Unit httpd.service entered failed state.
Aug 28 12:30:26 vps systemd[1]: httpd.service failed.
Ich merke, dass etwas anderes an seiner Stelle funktioniert, httpd
wenn ich es neu starte. Deshalb führe ich aus netstat -tulpn | grep :80
.
tcp 0 0 0.0.0.0:8060 0.0.0.0:* LISTEN 2560/nginx: master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2560/nginx: master
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 1434/unicorn master
tcp 0 0 127.0.0.1:8082 0.0.0.0:* LISTEN 1307/sidekiq 5.1.3
Das obige Ergebnis verwirrt mich etwas, da ich es nicht Nginx
auf meinem System installiert habe und es which nginx
auch nichts zurückgibt.
Wenn ich meine Instanz jedoch neu starte, httpd
funktioniert sie wie vorgesehen.
Was kann ich tun, um mein Problem zu lösen?
Antwort1
Ok, das Rätsel ist gelöst; danke an Gerald Schneider. (obwohl es zum Glück kein Trojaner war)
Durch die Ausführung ps -Af | grep $pid
habe ich weitere Einblicke erhalten und wurde auf GitLab aufmerksam gemacht. (Ich wusste, dass da etwas faul war, konnte aber die Grundursache des Problems nicht herausfinden und es nicht richtig identifizieren.)
httpd
stand im Konflikt mit gitlab
. Nachdem ich es ausgeführt sudo gitlab-ctl stop
und dann versucht hatte, es neu zu starten httpd
, lief alles wie gewohnt.
Auch,diese Fragegibt etwas mehr Einblick in das Apache-, GitLab- und Nginx-Dilemma. (und die erste Erwähnung ist, dass Apache und GitLab sich auf Port 80 widersprechen :])
Antwort2
Sie können systemctl
den Befehl verwenden, um den laufenden Dienst zu identifizieren.
In Ihrem Fallsystemctl list-unit-files | grep nginx
Beispiel
systemctl list-unit-files | grep nginx
nginx-nr-agent.service generated
nginx.service enabled
Anschließend können Sie weitere Informationen zum laufenden Dienst mit dem Befehl erhalten.systemctl status servicename
Beispiel
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-08-28 15:03:08 EEST; 47min ago
Docs: man:nginx(8)
Process: 1455 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 1460 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 1458 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 1462 (nginx)
Tasks: 2 (limit: 4915)
CGroup: /system.slice/nginx.service
├─1462 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─1463 nginx: worker process
Wahrscheinlich helfen Ihnen ExecStop und ExecStart dabei, den Speicherort der Binärdatei zu ermitteln.
Antwort3
master wird von Postfix in Linux-Servern verwendet. Versuchen Sie, Postfix mit dem folgenden Befehl zu stoppen
/sbin/service postfix stop
Auch wenn Postfix für Ihre Konfiguration nicht erforderlich ist, können Sie den Neustart beim Neustart des Servers mit dem folgenden Befehl verhindern
chkconfig postfix off
Aus dem Fehler geht auch hervor, dass Sie versuchen, httpd auf 0.0.0.0:80 zu starten. Versuchen Sie stattdessen, eine IP-Adresse in der Datei httpd.conf zu verwenden, um einen spezifischeren Fehler zu erhalten.
Versuchen Sie nun, den httpd-Dienst zu stoppen und neu zu starten.