Ah, je comprends, oui, différents systèmes d’exploitation et ainsi de suite. J’ai déjà quelqu’un qui demande comment j’ai fait - je posterai ici au cas où.
Il faut Ruby 3.2.x (via rbenv, pour ne pas dépendre du système d’exploitation), Node v16.19.x/npm 8.19.x, et PostgreSQL (probablement toute version supérieure à 11).
- J’ai créé un fichier
.ruby-version, qui spécifiait la version de Ruby que j’ai installée (3.2.2).
- J’ai fait un
bundle et toutes les gems se sont compilées sans problème.
- Dans PostgreSQL lui-même, j’ai dû configurer la base de données :
CREATE DATABASE discourse;
CREATE USER discourse WITH password 'fA....';
GRANT ALL PRIVILEGES ON DATABASE discourse TO discourse;
\c discourse
GRANT ALL ON SCHEMA public TO discourse;
J’ai été surpris que database.yml ne prenne pas les variables production (cela semble très contraire aux conventions Rails). Tous les paramètres de la base de données se trouvaient dans config/discourse.conf, ainsi que les valeurs SMTP. Je les ai remplies.
Ensuite, j’ai exécuté les migrations de la base de données :
bundle exec rails db:migrate
Tout a fonctionné correctement et les migrations ont été réussies.
- Dans
config/sidekiq.yml, après la section development, j’ai ajouté :
production:
:concurrency: 2
:queues:
- [critical, 2]
- [default, 1]
- [low]
- [ultra_low]
- Ensuite, modifiez
lib/tasks/assets.rake, autour de la ligne 151, ajoutez :
harmony: true,
pour que cela ressemble à :
uglified, map =
Uglifier.new(
comments: :none,
harmony: true,
source_map: {
filename: File.basename(from),
output_filename: File.basename(to),
},
).comp
Et installez les packages npm suivants :
npm install terser
npm install -g uglify-js@"<3"
Ensuite, compilez les assets :
RAILS_ENV=production bundle exec rake assets:precompile
Et voilà ! Maintenant, cela devrait fonctionner :
bundle exec sidekiq -e production -C config/sidekiq.yml
bundle exec puma --config config/puma.rb -e production
Cela lance sidekiq et le serveur web puma.
(beaucoup moins cher, et plus de contrôle, c’est-à-dire que j’ai déjà Ruby 3.2.2 en cours d’exécution). La plupart du temps a été passé à contourner les particularités (comme la recherche des valeurs production car elles n’étaient pas là où elles devaient être). Mais à part cela, c’était assez rapide !