Guida alla configurazione dell'ambiente di sviluppo Discourse - Windows 11

Ciao a tutti,

Dopo aver passato del tempo a cercare di configurare un ambiente di sviluppo funzionante su Windows 11 / WSL2, ho pensato di condividere i passaggi che ho seguito.

Questo è il mio primo post qui, quindi spero che sia utile a qualcuno :slight_smile: Sono un amministratore di sistema abituato a lavorare con Windows, quindi questo è stato un percorso interessante per imparare Linux / Ruby / Discourse, ecc.

Alcune cose sembrano essere cambiate da quando è stata scritta la guida per Windows 10 e ho riscontrato alcuni problemi lungo il percorso (e leggendo i commenti, non ero l’unico!)

Posso confermare che le seguenti istruzioni hanno funzionato sulla mia installazione di Windows 11 Pro 22H2 e anche sulla mia build Insider di Windows 11 23H2 Release Preview in arrivo.

Cercherò di mantenere le istruzioni il più brevi e semplici possibile :slight_smile:

Preparazione iniziale

  1. Controlla eventuali aggiornamenti di WSL e installali se applicabile. Da una finestra di Windows Powershell usa questo comando:-

wsl.exe --update

  1. Installa Ubuntu su WSL2 usando questo comando:-

wsl.exe --install -d Ubuntu

  1. Segui le istruzioni a schermo per creare nome utente e password

  2. Una volta nel terminale di Ubuntu, controlla e installa tutti gli aggiornamenti applicabili

sudo apt update && sudo apt upgrade -y

  1. Ora che tutto è aggiornato possiamo procedere :slight_smile:

Modifiche WSL

  1. Prima di clonare Discourse, esegui il seguente comando per aprire il file /etc/wsl.conf:-

sudo nano /etc/wsl.conf

  1. In fondo al file esistente, aggiungi quanto segue, premi Ctrl + X per salvare le modifiche e premi “Y” quando richiesto.
[automount]
enabled  = true
root     = /mnt/
options  = "metadata,umask=22,fmask=11"
  1. Chiudi completamente il terminale WSL e riavvialo affinché queste modifiche vengano applicate correttamente.

  2. Ora copia e incolla il seguente script di installazione di una riga per configurare l’ambiente di sviluppo. A seconda della velocità del tuo computer e/o della connessione Internet, potrebbe essere necessario un po’ di tempo per completare, quindi vai a prenderti un caffè o qualcos’altro!

bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)

  1. Avvia il servizio PostgreSQL:-
sudo service postgresql start

  1. Poiché stiamo eseguendo in WSL2, ho ricevuto un messaggio di avviso sulla VM che esaurisce la memoria, che può essere risolto eseguendo quanto segue
sudo sysctl vm.overcommit_memory=1

  1. Esegui quanto segue in modo che redis-server si riavvii automaticamente:-
redis-server --daemonize yes
  1. Clona Discourse nella cartella home:-
git clone https://github.com/discourse/discourse.git ~/discourse

  1. Passa alla cartella Discourse appena creata:-
cd ~/discourse

  1. Esegui i seguenti comandi (li ho eseguiti una riga alla volta)(Non sono sicuro se questo sia necessario o se possano essere copiati e incollati in un’unica volta)
source ~/.bashrc

bundle install

yarn install

  1. Configura l’ambiente:-
RAILS_ENV=development bundle exec rake db:create db:migrate

  1. Avvia Discourse
DISCOURSE_HOSTNAME=localhost UNICORN_LISTENER=localhost:3000 bin/ember-cli -u

  1. Apri un terminale separato, spostati nella directory Discourse usando cd ~/discourse ed esegui rails admin:create - segui le istruzioni per configurare il tuo account utente Admin.

  2. Vai su http://localhost:4200 in un browser web e Discourse dovrebbe essere attivo e funzionante :slight_smile:

10 Mi Piace

Questa parte potrebbe fallire. Se succede, fai clic su start, digita attiva o disattiva funzionalità di Windows
Abilita piattaforma macchina virtuale
Riavvia

Riprendi con i comandi.

4 Mi Piace

Grazie per averlo aggiunto, Andrew!

Una cosa molto importante con cui ho faticato per un po’ a capire è che la repository deve assolutamente trovarsi nel file system WSL (cioè, NON su /mnt/*). Altrimenti, otterrai ogni sorta di errori strani o avrai un’istanza molto, molto, molto lenta.

Questo dovrebbe essere conoscenza comune, ma dalla mia interazione con altri sviluppatori, non lo è affatto.

2 Mi Piace

Ciao AliBenBongo :wave:

Grazie per questa guida.

Per curiosità, hai provato Install Discourse on Windows for development ma hai riscontrato problemi su Windows 11?

Ho seguito questa guida ufficiale meno di due mesi fa per configurare la mia installazione di sviluppo su Win11 e ha funzionato perfettamente.

2 Mi Piace

È interessante, sì, ho provato quella guida per prima e ho riscontrato molti messaggi di errore. Non ricordo specificamente, ma alcuni dei messaggi di errore sono stati menzionati nella sezione commenti dello stesso thread…

Penso che alla fine sia una buona cosa, dato che ho sicuramente acquisito più conoscenze risolvendo il problema da solo e poi scrivendo questa guida! :slight_smile:

1 Mi Piace

Probabilmente è una domanda stupida ma devo chiedere. Supponendo che potrei far funzionare questo seguendo la tua guida. Pensi che sia possibile fare il reverse proxy di questo su un dominio?

Non ci sono domande stupide, possiamo sempre imparare qualcosa di nuovo! :slight_smile: Non ho molta esperienza con le cose del proxy inverso, tranne che per l’uso di Nginx Proxy Manager in un container Docker - forse dai un’occhiata a quello, dato che fa la maggior parte del lavoro pesante e genera persino certificati SSL gratuiti tramite Let’s Encrypt.

1 Mi Piace

Sospetto che incontrerai molti problemi. L’installazione per sviluppatori non è supportata per l’esecuzione in produzione.

Eseguire l’installazione standard nel cloud potrebbe costare qualche dollaro al mese, ma quanto vale il tuo tempo?! Con questo puoi essere operativo in 30 minuti e aver finito.

2 Mi Piace

In realtà è quello che ho fatto. Ho iniziato con Communiteq, ho provato anche DigitalOcean ma alla fine sono approdato a Contabo.

Penso di essere un lunatico perché quello che stavo cercando di fare (solo per vedere se ci riuscivo), eseguendo Ubuntu in HyperV, sono persino riuscito a mettere la VM sulla stessa subnet lol ma non sono riuscito a far funzionare il controllo iniziale del dominio. Penso che parte del problema sia che sto già ospitando una manciata di servizi sul mio host Windows e di conseguenza sto inoltrando le porte 80/443 all’IP di quella macchina. So che va oltre lo scopo di questa discussione e non è supportato, ma hai qualche esperienza nel provare a fare qualcosa di simile?

Va notato che, se non hai ancora installato alcun sottosistema, questo comando non funzionerà.

1 Mi Piace

Mi sono bloccato durante l’installazione di Ruby; questo mi ha aiutato: ChatGPT - Ruby 3.2 Not Released

Ciao, benvenuto :wave:

Se segui i passaggi in questa guida, non dovrai installare Ruby manualmente. Lo script “install-rails” lo farà automaticamente.

Per tua informazione, l’ultima versione di Ubuntu, la 24.04, non sembra funzionare e ho avuto molti problemi con essa

Quindi, durante l’installazione con WSL, assicurati di utilizzare:

wsl.exe --install -d Ubuntu-22.04

Ciao :waving_hand:, sto usando WSL2 su Windows 11 e ho seguito i passaggi di questo post per installare un’istanza di sviluppo Discourse locale. Ho riscontrato alcuni problemi, ma alla fine sono riuscito a risolverli. Ecco cosa ho scoperto:

(All’inizio ho provato con ubuntu-20.04 ma ho riscontrato un problema con la dipendenza mancante libwebp7 che è richiesta durante l’installazione di ImageMagick. Sembra che libwebp7 non sia disponibile per Ubuntu-20.04) :right_arrow: Ho deciso di usare invece ubuntu-22.04 che ha funzionato per me.

Seguendo la guida di @AliBenBongo nel post di apertura, tutto ciò che precede il passaggio 9) ha funzionato come previsto. :+1:

Nel passaggio 9) sono state necessarie alcune modifiche

Alcune delle risorse su https://raw.githubusercontent.com/discourse/install-rails/master/linux non sono aggiornate, sembra:

  • Ho dovuto installare Ruby 3.3.x invece di 3.2.1 cambiando ruby_version=“3.2.1” in ruby_version=“3.3.9”
  • Ho dovuto installare Node 20 invece di 18 cambiando curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - in curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -

Nel passaggio 15) è necessario eseguire pnpm install invece di yarn install

Quindi, durante l’esecuzione delle migrazioni nel passaggio 16), ha generato un errore per alcune migrazioni a seconda dell’estensione Postgres pgvector. Quindi ho seguito la guida all’installazione per Linux qui: https://github.com/pgvector/pgvector/blob/master/README.md

:warning: Per sicurezza, è meglio copiare i comandi direttamente dal file readme. Tuttavia, se sei curioso, ecco cosa ha funzionato per me:

git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install

Dopo di che, sono stato in grado di eseguire le migrazioni nel passaggio 16 e ho completato l’installazione seguendo il resto della guida. :tada:

1 Mi Piace