Configurer Discourse pour le développement sur Fedora Linux

Ce guide a été testé avec une installation fraîche de Fedora 31 et 33, mais il peut fonctionner sur des versions plus anciennes qui utilisent également dnf comme outil de gestion de paquets. Ceci n’est pas un guide officiel, mais il peut être utile pour les autres développeurs utilisant Fedora. Il est largement basé sur le guide d’installation pour Ubuntu pour le développement, avec des modifications pour les différents paquets pour dnf. Nous supposons qu’aucun des paquets n’est déjà installé, bien que la plupart seront ignorés par les outils si l’installation est déjà faite.

Si vous cherchez à installer Discourse pour un environnement de production, préférez les instructions d’installation Docker sur github.

Installer les paquets système et de développement requis

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

Installer les paquets npm requis

sudo npm install -g svgo pnpm

Installer et configurer 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

Installer et configurer redis

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

Installation de rbenv, ruby-build et 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
# confirmer que l'installation est correcte
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

Installer les dépendances Ruby

gem update --system
gem install bundler mailcatcher rails

Cloner le code Discourse

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

Installer les dépendances Discourse

bundle install
pnpm install

Créer les bases de données requises et charger le schéma

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

Tester l’installation en exécutant les tests

bundle exec rake autospec

Exécuter l’application

bundle exec rails server

Vous devriez maintenant pouvoir voir la page de configuration de Discourse à http://localhost:3000.

Pour une configuration plus poussée, consultez les guides d’installation officiels existants.


Ce document est contrôlé par version - suggérez des modifications sur 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 »