[Nota: Il mio caso non è propriamente un problema di #installazione, ma l’errore prodotto è lo stesso di questo topic e la mia soluzione (sottostante) potrebbe essere utile ad altri. Moderatori (@pfaffman?), sentitevi liberi di categorizzare questo in modo più appropriato.]
Il messaggio ArgumentError appare dopo aver eseguito ./launcher rebuild app sulla mia istanza self-hosted, dockerizzata (installata e funzionante da molti anni). Succede perché unicorn non è in grado di scrivere un file pid nella directory /var/www/discourse/tmp/pids (all’interno del container). Il log mostra un loop di messaggi ArgumentError mentre tenta di scrivere quel file ogni pochi secondi.
Accedo al container dalla macchina host tramite
docker exec -it app bash
Dall’interno del container eseguo
find /var/www/discourse -printf '%u:%g\\n' | sort -t: -u
Questo mi mostra un elenco di proprietario:gruppo in quella directory
root:root
discourse:discourse
Quindi rendo la directory /var/www/discourse/tmp/pids leggibile da tutti tramite
chmod +r /var/www/discourse/tmp/pids
A questo punto, un file unicorn.pid viene scritto in quella directory. Il file ha un proprietario:gruppo di discourse:www-data.
La mia soluzione è stata cambiare ricorsivamente la proprietà di /var/www/discourse in discourse:www-data.
chown -R discourse:www-data /var/www/discourse
Questo richiede molto tempo poiché ci sono oltre 100.000 file. Probabilmente non è necessario farlo per l’intera directory, ma è quello che ho fatto.
Infine, ho reso il file /etc/postgres/13/main/pb_hba.conf leggibile da tutti
chmod +r /etc/postgres/13/main/pg_hba.conf
Riavvio il container e tutto funziona.
Sembra che la configurazione della proprietà dei file non sia del tutto corretta, ma non sono abbastanza esperto nell’arte di impostare i permessi per trovare una soluzione più semplice. Il fatto che il file unicorn.pid abbia un gruppo www-data sembra essere la chiave.
Sembra che dovrei eseguire questa procedura ogni volta che faccio un rebuild (cioè ogni volta che modifico il file app.yml). Si noti inoltre che non sembra essere un problema con un plugin specifico.
Spero che queste informazioni siano sufficienti affinché uno degli sviluppatori dia un’occhiata e dica: “Certo! Devo solo cambiare x per risolvere”.