Configurer Discourse pour le développement sur 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 « J'aime »

Dans Installation de rbenv, ruby-build et ruby, l’URL du script rbenv-doctor ne fonctionne plus (apparemment, la branche a été renommée de master à main), la commande correcte est maintenant :

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
2 « J'aime »

Merci pour l’info @nicolas-jaussaud, j’ai mis à jour l’OP.

Pour info, je préfère maintenant utiliser chruby et ruby-install plutôt que rbenv.

2 « J'aime »

J’ai rencontré un problème en essayant d’exécuter bundle install car Fedora désactive désormais par défaut le transport de fichiers.

L’erreur se produit lors de la tentative d’installation du gem sprockets et se termine par le message :

transport 'file' not allowed

Je ne sais pas quelle est la bonne façon de faire, mais vous pouvez temporairement autoriser le transport non sécurisé :

git config --global protocol.file.allow always
# exécutez la configuration de discourse ici
git config --global protocol.file.allow never

Après cela, j’ai rencontré une erreur comme celle-ci lors de l’exécution de 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'

Il semble que cela se soit produit après la fin de la migration, donc comme je n’ai pas pu trouver comment résoudre ce problème, je l’ai ignoré, mais heureusement, mon site de développement semble fonctionner.

Pour l’environnement de test, je n’ai pas eu la même erreur mais j’ai eu une erreur concernant le manque d’oxipng, qui ne semble pas être disponible en tant que package Fedora.

Après cela, je n’ai plus rencontré de problèmes, tout fonctionnait encore plus ou moins bien sur Fedora 38. Cependant, j’avais précédemment installé rbenv en utilisant d’autres instructions de configuration.

En exécutant bundle exec rake autospec, j’ai eu quelques échecs de tests (135) mais il semble que j’aie un environnement de développement plus ou moins fonctionnel.

2 « J'aime »

J’ai réussi à faire fonctionner la version Dev il y a quelque temps, mais la version Production était trop difficile pour moi. .

Je viens de suivre ce guide pour l’installer sur Fedora 40 Workstation, j’ai dû ajouter oxipng aux installations de la distribution.
sudo dnf install oxipng

3 « J'aime »

Merci de nous avoir informés, j’ai mis à jour la documentation dans ce commit : docs/fedora-setup: include oxipng package (#14) · discourse/discourse-developer-docs@eb51e54 · GitHub.

1 « J'aime »

Je suis bloqué après l’installation aujourd’hui sur Fedora 41 avec le problème suivant lorsque je me connecte à localhost:3000 et que je clique sur enregistrer :
« aucun e-mail d’administrateur n’a été défini lors de la configuration » ; le message explique comment ajouter un e-mail d’administrateur.

J’ai échoué à ajouter un compte administrateur avec succès en suivant cette procédure à cause de 2 erreurs lors de l’utilisation de ./launcher enter app :
1° La première erreur résolue était : aucun fichier app.yml présent – J’ai copié le sampleapp.yml du dossier sample vers le dossier du conteneur, puis je l’ai modifié pour ajouter des adresses e-mail, puis j’ai reconstruit avec /var/discourse/launcher rebuild app
2° La deuxième erreur n’est pas résolue :
Réponse d’erreur du démon : Aucun conteneur trouvé : app
Si j’utilise les commandes rake pour créer un administrateur, il me dit qu’aucun rakefile n’est trouvé

Quelqu’un peut-il m’aider s’il vous plaît ?

Cette installation n’utilise pas Docker, vous ne pouvez donc pas entrer dans un conteneur.

Essayez de créer un administrateur à partir du dossier Discourse avec cette commande :

bin/rails admin:create
1 « J'aime »

Salut Coconut, tu es rapide à répondre et efficace, merci beaucoup !
La commande renvoie gem bunder missing, que j’ai installé avec gem install bundler -v 2.6.2 et j’ai ensuite pu appliquer ta solution avec succès !

2 « J'aime »

Je viens d’essayer d’exécuter une installation locale et j’ai rencontré des problèmes avec pgvector. C’est sur Fedora 42 et Postgres16. La version packagée de pgvector est 0.6.2 et il semble que je doive compiler à partir des sources pour en obtenir une plus récente.

Ensuite, j’ai rencontré des conflits en essayant de compiler pgvector, qui semble nécessiter le paquet postgresql-private-devel qui avait des requêtes conflictuelles avec libpq-devel.

Résolu en :

  •  sudo dnf install postgresql-server-devel --allowerasing
    
  • Compiler pgvector
  • Vérifier la version installée
    sudo -u postgres psql discourse_development -c "SELECT * FROM pg_available_extensions WHERE name = 'vector';"
    
  •  sudo systemctl restart postgresql
    
2 « J'aime »