Es scheint ein Problem mit iptables und Docker zu geben. Das sind die Stichworte, nach denen Sie suchen sollten. Es handelt sich nicht um ein Discourse-Problem.
Das deutet für mich darauf hin, dass das Docker-Netzwerk nicht funktioniert. Selbst wenn Discourse und Redis ordnungsgemäß arbeiten, kann Discourse nicht auf Redis zugreifen, weil das Netzwerk und/oder Docker defekt sind.
Meine Vermutung ist, dass diese Probleme irgendwann nach der Installation von firewalld aufgetreten sind und dass dies Ihre Installation beschädigt hat.
Ich habe den firewalld-Dienst gestoppt, Docker neu gestartet und den fehlerhaften Container ebenfalls neu gestartet, aber der Fehler bleibt derselbe (in production.log):
Error connecting to Redis on localhost:6379 (Errno::ENETUNREACH) subscribe failed, reconnecting in 1 second.
Ich habe einige Fortschritte gemacht. Meine Konfiguration verwendet Apache 2.4 als Proxy. In meiner Konfiguration habe ich Folgendes hinzugefügt:
RemoteIPHeader X-Forwarded-For
Um die ursprüngliche IP-Adresse zu verfolgen.
Nach dem Neustart von httpd konnte ich auf Discourse zugreifen (mit einer Warnung zum Ablauf des SSL-Zertifikats). Das habe ich ebenfalls behoben, und jetzt funktioniert alles gut, aber mit deaktiviertem firewalld.
Ich habe viele Beiträge über Probleme zwischen Docker und firewalld unter CentOS 7 gefunden. Ich werde also wieder zu iptables wechseln.
Bezüglich der Redis-Fehlermeldung: Nach den oben genannten Schritten erscheint diese nur noch, wenn Docker gestoppt wird. Beim Neustart wird sie nicht angezeigt, daher gehe ich davon aus, dass das in Ordnung ist.
Danke!
csmu
(Keith John Hutchison - Ceiteach Seán Mac Úistin)
7
Nachdem ich das gelesen hatte, habe ich Docker auf unserem Centos-Server gestoppt