Ciao! Ho installato con successo Discourse su una macchina virtuale Ubuntu 18.04 (usando VMware Workstation 15 Player) seguendo la guida. L’accesso a http://localhost:3000/ dalla VM funziona bene, ma non riesco ad raggiungerlo dal mio sistema host Windows 10. La rete della VM è configurata in modalità bridge e per avviare il server Rails sto eseguendo:
bundle exec rails server --binding=0.0.0.0
Tuttavia, quando provo ad accedere a http://192.168.0.172:3000/ dalla mia macchina host, ottengo un errore di connessione rifiutata. Ho provato a configurare un semplice server HTTP Python all’interno della VM:
python3 -m http.server 3000
E riesco effettivamente ad accedervi dalla macchina host, quindi penso che il problema sia specifico di Discourse. Mi sto perdendo qualcosa?
Ciao @neounix, grazie per la risposta. Ho già configurato la rete della VM in modalità bridge e riesco a raggiungerla dall’esterno usando un semplice server HTTP Python in ascolto sulla stessa porta (3000) e indirizzo (0.0.0.0), ma per qualche motivo non funziona con il server Discourse…
Il problema qui è che l’opzione --binding viene completamente ignorata. Ho provato il tuo comando in locale e ho notato questa riga nell’output (l’output è molto rumoroso, quindi è molto facile perdere di vista questa riga):
I, [2020-06-08T17:26:55.938086 #21001] INFO -- : listening on addr=127.0.0.1:3000 fd=15
Leggendo il nostro file config/unicorn.conf.rb, per far sì che il server ascolti su 0.0.0.0 è necessario impostare la variabile d’ambiente UNICORN_BIND_ALL=1. Quindi questo dovrebbe funzionare: UNICORN_BIND_ALL=1 bundle exec rails server.
In alternativa, puoi utilizzare lo script bin/unicorn, che accetta un’opzione --host che puoi usare per associare il server a 0.0.0.0.
Grazie, mi ha risparmiato un bel mal di testa.
Mi chiedo se sia possibile aggiornare le guide ufficiali degli utenti per includere questo metodo invece della soluzione non funzionante con bundle exec rails server -b 0.0.0.0.
L’ho vista ovunque su internet e non avrei mai immaginato che non avrebbe funzionato.