Configura Discourse per lo sviluppo su Fedora Linux

This guide has been tested against a fresh install of Fedora 31 and 33, but may work on older versions that also use dnf as the package management tool. This is not an official guide but may be useful for other developers using Fedora. This is largely based on the Ubuntu development guide, with changes for the different packages for dnf. The assumption is that you do not have any of the packages installed already, although most will be skipped by the tooling if it is already installed.

If you’re looking to install Discourse for a production environment, prefer the docker install instructions on github.

Install required system and development packages

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

Install required npm packages

sudo npm install -g svgo pnpm

Install and setup 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

Install and setup redis

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

Installing rbenv, ruby-build, and 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
# confirm the install is correct
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

Install Ruby dependencies

gem update --system
gem install bundler mailcatcher rails

Clone Discourse code

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

Install Discourse dependencies

bundle install
pnpm install

Create the required databases and load the schema

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

Test installation by running the tests

bundle exec rake autospec

Run the application

bundle exec rails server

You should now be able to see the Discourse setup page at http://localhost:3000.

For further setup, see the existing official install guides.


This document is version controlled - suggest changes on 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