[Hinweis: Mein Fall ist eigentlich kein #Installationsproblem, aber die Fehlermeldung ist dieselbe wie in diesem Thema und meine Lösung (unten) könnte für andere hilfreich sein. Moderatoren (@pfaffman?), könnt ihr das bitte passender kategorisieren.]
Die Meldung ArgumentError erscheint, nachdem ich ./launcher rebuild app auf meiner selbst gehosteten Docker-Instanz (seit vielen Jahren installiert und funktionierend) ausführe. Dies geschieht, weil Unicorn keine PID-Datei in das Verzeichnis /var/www/discourse/tmp/pids (innerhalb des Containers) schreiben kann. Das Protokoll zeigt eine Schleife von ArgumentError-Meldungen, da versucht wird, diese Datei alle paar Sekunden zu schreiben.
Ich melde mich vom Host-Rechner aus über
docker exec -it app bash
in den Container ein.
Innerhalb des Containers führe ich aus
find /var/www/discourse -printf '%u:%g\\n' | sort -t: -u
Dies zeigt mir eine Liste der Besitzer:Gruppen in diesem Verzeichnis
root:root
discourse:discourse
Dann mache ich das Verzeichnis /var/www/discourse/tmp/pids für alle lesbar, indem ich
chmod +r /var/www/discourse/tmp/pids
ausführe. An diesem Punkt wird eine unicorn.pid-Datei in dieses Verzeichnis geschrieben. Die Datei hat einen Besitzer:Gruppe von discourse:www-data.
Meine Lösung war, den Besitz von /var/www/discourse rekursiv auf discourse:www-data zu ändern.
chown -R discourse:www-data /var/www/discourse
Dies dauert lange, da es über 100.000 Dateien gibt. Wahrscheinlich ist es nicht notwendig, das gesamte Verzeichnis zu durchlaufen, aber das habe ich getan.
Zuletzt habe ich die Datei /etc/postgres/13/main/pb_hba.conf für alle lesbar gemacht.
chmod +r /etc/postgres/13/main/pg_hba.conf
Starte den Container neu und alles funktioniert.
Es scheint, dass die Einrichtung des Dateibesitzes nicht ganz richtig ist, aber ich bin nicht erfahren genug mit der Kunst der Berechtigungseinstellungen, um eine einfachere Lösung zu finden. Die Tatsache, dass die unicorn.pid-Datei eine Gruppe von www-data hat, scheint der Schlüssel zu sein.
Es scheint, dass ich diese Prozedur jedes Mal durchlaufen müsste, wenn ich einen rebuild durchführe (d. h. jedes Mal, wenn ich die app.yml-Datei ändere). Beachte auch, dass es sich nicht um ein Problem mit einem bestimmten Plugin zu handeln scheint.
Hoffentlich sind das genügend Informationen für einen der Entwickler, um sich das anzusehen und zu sagen: “Natürlich! Ich muss nur x ändern, um es zu beheben.”