Configura Discourse per lo sviluppo su Fedora Linux

Questa guida è stata testata con un’installazione pulita di Fedora 31 e 33, ma potrebbe funzionare anche su versioni precedenti che utilizzano dnf come strumento di gestione dei pacchetti. Questa non è una guida ufficiale, ma potrebbe essere utile per altri sviluppatori che utilizzano Fedora. Si basa in gran parte sulla guida di sviluppo per Ubuntu, con modifiche per i diversi pacchetti per dnf. Si presume che nessuno dei pacchetti sia già installato, anche se la maggior parte verrà saltata dagli strumenti se è già presente.

Se stai cercando di installare Discourse per un ambiente di produzione, preferisci le istruzioni di installazione Docker su github.

Installa i pacchetti di sistema e di sviluppo richiesti

sudo dnf update
sudo dnf install -y "@development-tools" git rpm-build zlib-devel ruby-devel readline-devel libpq-devel ImageMagick sqlite sqlite-devel nodejs npm curl gcc g++ bzip2 openssl-devel libyaml-devel libffi-devel zlib-devel gdbm-devel ncurses-devel optipng pngquant jhead jpegoptim gifsicle oxipng

Installa i pacchetti npm richiesti

sudo npm install -g svgo pnpm

Installa e configura postgres

sudo dnf install postgresql-server postgresql-contrib
sudo postgresql-setup --initdb --unit postgresql
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo -u postgres -i createuser -s $USER

Installa e configura redis

sudo dnf install redis
sudo systemctl enable redis
sudo systemctl start redis

Installazione di rbenv, ruby-build e ruby

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
~/.rbenv/bin/rbenv init
printf 'export PATH="$HOME/.rbenv/bin:$PATH"\n' >> ~/.bashrc
printf 'eval "$(rbenv init - --no-rehash)"\n' >> ~/.bashrc
source ~/.bashrc
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
# conferma che l'installazione è corretta
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
rbenv install 2.7.1
rbenv global 2.7.1
rbenv rehash

Installa le dipendenze di Ruby

gem update --system
gem install bundler mailcatcher rails

Clona il codice di Discourse

git clone https://github.com/discourse/discourse.git ~/discourse
cd ~/discourse

Installa le dipendenze di Discourse

bundle install
pnpm install

Crea i database richiesti e carica lo schema

bundle exec rake db:create db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

Testa l’installazione eseguendo i test

bundle exec rake autospec

Esegui l’applicazione

bundle exec rails server

Dovresti ora essere in grado di vedere la pagina di configurazione di Discourse su http://localhost:3000.

Per ulteriori configurazioni, consulta le guide di installazione ufficiali esistenti.


Questo documento è controllato tramite versione - suggerisci modifiche su github.

27 Mi Piace

In Installazione di rbenv, ruby-build e ruby, l’URL per lo script rbenv-doctor non funziona più (apparentemente il branch è stato rinominato da master a main), il comando corretto ora è:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
2 Mi Piace

Grazie per le informazioni @nicolas-jaussaud, ho aggiornato l’OP.

Per tua informazione, ora preferisco usare chruby e ruby-install invece di rbenv.

2 Mi Piace

Ho riscontrato un problema durante l’esecuzione di bundle install poiché Fedora ora ha disabilitato di default il trasporto file.

L’errore si verifica durante il tentativo di installare la gemma sprockets e termina con il messaggio:

transport 'file' not allowed

Non so quale sia il modo corretto per farlo, ma puoi consentire temporaneamente il trasporto non sicuro:

git config --global protocol.file.allow always
# esegui la configurazione di discourse qui
git config --global protocol.file.allow never

Dopo di che ho riscontrato un errore simile durante l’esecuzione di db:migrate:

At /home/hhyyrylainen/Projects/discourse/lib/site_setting_extension.rb:199:in `public_send`
Deprecation notice: `SiteSetting.enable_personal_messages` has been deprecated. Please use `SiteSetting.personal_message_enabled_groups` instead. (removal in Discourse 3.0) 
At /home/hhyyrylainen/Projects/discourse/lib/site_setting_extension.rb:199:in `public_send`
#<Thread:0x00007f94c3342600 /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:83 run> terminated with exception (report_on_exception is true):
/home/hhyyrylainen/.gem/ruby/3.2.0/gems/activerecord-7.0.4.3/lib/active_record/connection_handling.rb:309:in `connection_pool': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished)
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management/rails_61_compat.rb:8:in `current'
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:115:in `current_db_hostnames'
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:111:in `current_hostname'
	from /home/hhyyrylainen/Projects/discourse/lib/discourse.rb:232:in `handle_job_exception'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:114:in `rescue in do_work'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:113:in `do_work'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:85:in `block (2 levels) in start_thread'
/home/hhyyrylainen/.gem/ruby/3.2.0/gems/activerecord-7.0.4.3/lib/active_record/connection_handling.rb:309:in `connection_pool': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished)
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:79:in `with_connection'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:96:in `do_work'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:85:in `block (2 levels) in start_thread'

Sembra che sia successo dopo che la migrazione è stata completata, quindi dato che non sono riuscito a capire come risolvere il problema l’ho ignorato, ma fortunatamente il mio sito di sviluppo sembra funzionare.

Per l’ambiente di test non ho riscontrato lo stesso errore ma un errore relativo alla mancanza di oxipng, che non sembra essere disponibile come pacchetto Fedora.

Dopo di che non ho riscontrato altri problemi, tutto ha continuato a funzionare più o meno bene su Fedora 38. Tuttavia, in precedenza avevo installato rbenv utilizzando altre istruzioni di configurazione.

Eseguendo bundle exec rake autospec ho riscontrato alcuni fallimenti nei test (135) ma sembra che abbia ottenuto una configurazione di sviluppo per lo più funzionante.

2 Mi Piace

Ho ottenuto la versione Dev funzionante qualche tempo fa, ma la versione di produzione era troppo difficile per me. .

Ho appena seguito questa guida per l’installazione su Fedora 40 Workstation, ho dovuto aggiungere oxipng alle installazioni della distribuzione.
sudo dnf install oxipng

3 Mi Piace

Grazie per avercelo fatto sapere, ho aggiornato la documentazione in questo commit: docs/fedora-setup: include oxipng package (#14) · discourse/discourse-developer-docs@eb51e54 · GitHub.

1 Mi Piace

Sono bloccato dopo l’installazione oggi su Fedora 41 con il seguente problema quando mi connetto a localhost:3000 e clicco su registra:
“non sono state definite email di amministratori durante l’installazione”; il messaggio fornisce come aggiungere un’email di amministratore.

Non sono riuscito ad aggiungere con successo un account amministratore seguendo questa procedura a causa di 2 errori quando ho usato ./launcher enter app:
1° Il primo errore risolto è stato: il file app.yml non è presente → Ho copiato il sampleapp.yml dalla cartella sample alla cartella del container, quindi l’ho modificato per aggiungere indirizzi email, quindi ho ricostruito con /var/discourse/launcher rebuild app
2° Il secondo errore non è risolto:
Risposta di errore dal daemon: Nessun container trovato: app
Se uso i comandi rake per creare un amministratore, mi dice che non è stato trovato alcun rakefile

Qualcuno può per favore aiutarmi?

Questa installazione non utilizza docker, quindi non è possibile entrare in un container.

Prova a creare un amministratore dalla cartella Discourse con questo comando:

bin/rails admin:create
1 Mi Piace

Ciao Coconut, sei veloce a rispondere ed efficiente, grazie mille!
Il comando restituisce gem bundler mancante, che ho installato con gem install bundler -v 2.6.2 e poi ho potuto applicare con successo la tua soluzione!

2 Mi Piace

Ho appena provato a eseguire un’installazione locale e ho riscontrato problemi con pgvector. Questo su Fedora 42 e Postgres16. La versione pacchettizzata di pgvector è 0.6.2 e sembra che io debba compilare dal sorgente per ottenerne una più recente.

Poi ho riscontrato conflitti cercando di compilare pgvector, che sembra richiedere il pacchetto postgresql-private-devel che aveva richieste contrastanti con libpq-devel.

Risolto con:

  • sudo dnf install postgresql-server-devel --allowerasing
    
  • Compila pgvector
  • Controlla la versione installata
    sudo -u postgres psql discourse_development -c "SELECT * FROM pg_available_extensions WHERE name = 'vector';"
    
  • sudo systemctl restart postgresql
    
2 Mi Piace