Installation de Discourse avec Apache2 installé

Bonjour !
Je fais tourner un serveur Ubuntu 18.04 avec Apache installé. Je souhaite installer Discourse sur un port différent, puis utiliser un proxy inverse via Apache pour le rendre accessible via une URL. J’ai essayé de créer un fichier app.yml, modifié les paramètres, puis lancé : ./launcher rebuild app. Tout se passe bien jusqu’à la fin, où j’obtiens une erreur « Failed » avec le message suivant :

FAILED

Pups::ExecError: cd /var/www/discourse && su discourse -c ‘bundle exec rake themes:update assets:precompile’ failed with return #<Process::Status: pid 3801 exit 134>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn’
exec failed with the params {“cd”=>“$home”, “hook”=>“assets_precompile”, “cmd”=>[“su discourse -c ‘bundle exec rake themes:update assets:precompile’”]}
2beda643ff51279f145c96cdede83a1d6b65f67e00225be74100c8fb9fe3f790
** FAILED TO BOOTSTRAP ** veuillez faire défiler vers le haut et rechercher les messages d’erreur précédents, il peut y en avoir plus d’un.
./discourse-doctor peut aider à diagnostiquer le problème.

J’ai essayé d’utiliser discourse-doctor, mais cela ne m’a rien apporté. Quelqu’un a-t-il une solution pour corriger cela ? De plus, j’utilise Apache car je le trouve plus simple et j’ai plus d’expérience avec Apache. Passer à Nginx n’est donc pas une option.
Voici quelques logs provenant de la section précédente de l’échec :

MaxMind IP database updates require a license
Please set DISCOURSE_MAXMIND_LICENSE_KEY to one you generated at https://www.maxmind.com
MaxMind IP database updates require a license
Please set DISCOURSE_MAXMIND_LICENSE_KEY to one you generated at https://www.maxmind.com
98765.375844045 Compressing: vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js
terser ‘/var/www/discourse/public/assets/_vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js’ -m -c -o ‘/var/www/discourse/public/assets/vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js’ --source-map “base=‘/var/www/discourse/public/assets’,root=‘/assets’,url=‘/assets/vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js.map’”
<— Last few GCs —

[3798:0x4872980] 2679 ms: Scavenge 108.1 (126.5) → 97.8 (129.8) MB, 9.0 / 0.0 ms (average mu = 1.000, current mu = 1.000) allocation failure
[3798:0x4872980] 2823 ms: Scavenge 111.4 (129.8) → 101.3 (132.8) MB, 8.4 / 0.0 ms (average mu = 1.000, current mu = 1.000) allocation failure
[3798:0x4872980] 2964 ms: Scavenge 114.8 (133.0) → 104.8 (135.3) MB, 32.7 / 0.0 ms (average mu = 1.000, current mu = 1.000) allocation failure

<— JS stacktrace —

FATAL ERROR: NewSpace::Rebalance Allocation failed - JavaScript heap out of memory
1: 0xa89e60 node::Abort() [node]
2: 0x9ade29 node::FatalError(char const*, char const*) [node]
3: 0xc7583e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
4: 0xc75bb7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
5: 0xe3f6d5 [node]
6: 0xe7ec67 [node]
7: 0xe90b11 v8::internal::MarkCompactCollector::CollectGarbage() [node]
8: 0xe4c9d8 v8::internal::Heap::MarkCompact() [node]
9: 0xe4e368 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]
10: 0xe5190c v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
11: 0xe157da v8::internal::factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [node]
12: 0x116d5e8 v8::internal::Runtime_AllocateInOldGeneration(int, unsigned long*, v8::internal::Isolate*) [node]
13: 0x15045f9 [node]
Aborted (core dumped)
rake aborted!
Errno::ENOENT: No such file or directory @ rb_file_s_size - /var/www/discourse/public/assets/vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js
/var/www/discourse/lib/tasks/assets.rake:293:in size' /var/www/discourse/lib/tasks/assets.rake:293:in block (4 levels) in ’
/var/www/discourse/lib/tasks/assets.rake:182:in block in concurrent?' /var/www/discourse/lib/tasks/assets.rake:284:in block (3 levels) in ’
/var/www/discourse/lib/tasks/assets.rake:273:in each' /var/www/discourse/lib/tasks/assets.rake:273:in block (2 levels) in ’
/var/www/discourse/lib/tasks/assets.rake:182:in concurrent?' /var/www/discourse/lib/tasks/assets.rake:270:in block in ’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in <top (required)>' /usr/local/bin/bundle:23:in load’
/usr/local/bin/bundle:23:in `’
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
I, [2021-07-21T16:25:26.467914 #1] INFO – : Downloading MaxMindDB…
Compressing Javascript and Generating Source Maps

I, [2021-07-21T16:25:26.469702 #1] INFO – : Terminating async processes
I, [2021-07-21T16:25:26.469947 #1] INFO – : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 56
I, [2021-07-21T16:25:26.470157 #1] INFO – : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 174
2021-07-21 16:25:26.470 UTC [56] LOG: received fast shutdown request
174:signal-handler (1626884726) Received SIGTERM scheduling shutdown…
2021-07-21 16:25:26.473 UTC [56] LOG: aborting any active transactions
174:M 21 Jul 2021 16:25:26.473 # User requested shutdown…
174:M 21 Jul 2021 16:25:26.474 * Saving the final RDB snapshot before exiting.
2021-07-21 16:25:26.479 UTC [56] LOG: background worker “logical replication launcher” (PID 65) exited with exit code 1
174:M 21 Jul 2021 16:25:26.480 * DB saved on disk
2021-07-21 16:25:26.480 UTC [60] LOG: shutting down
174:M 21 Jul 2021 16:25:26.480 # Redis is now ready to exit, bye bye…
2021-07-21 16:25:26.515 UTC [56] LOG: database system is shut down

Merci,
Kian

Peux-tu

? Nous avons vraiment besoin des lignes de journal antérieures pour pouvoir fournir une aide utile.

Je les ai simplement joints, désolé :slight_smile:

Votre serveur ne dispose pas de suffisamment de RAM pour installer Discourse.

Quelle est votre capacité de mémoire et d’espace d’échange ?

Il dispose de 8 Go de mémoire et de 10 Go d’espace d’échange. À première vue, mon système n’utilise pas l’espace d’échange.

L’application actuelle utilise-t-elle toute la mémoire disponible et la valeur de swappiness est-elle configurée pour ne jamais se produire ?

Puisque je ne vois aucun autre rapport, je pense que le problème vient de votre serveur.

1 « J'aime »

Salut !
J’ai 8 Go de mémoire et 10 Go d’espace d’échange. Je lance ./launcher rebuild app et la RAM est stable à 3,4 Go, sans utilisation de l’espace d’échange. J’utilise htop et l’espace d’échange indique simplement OK/10,00 Go. Je ne sais pas si cela signifie que l’espace d’échange fonctionne ou non.

sur HTOP, l’échange (swap) indique OK/10,00 Go. Je ne suis pas sûr de ce que cela signifie. Et la RAM est à environ 3,4 Go pendant l’exécution de ./launcher rebuild app.

Je pense que cela a fonctionné. J’ai arrêté Clamd avec SIGTERM en utilisant htop. La fin affiche un ID Docker. Donc je suppose que cela a fonctionné.

Édité : Cela semble fonctionner correctement. Je l’ai chargé via l’adresse IP et le port, et il s’affiche sans problème ! Il ne reste plus qu’à configurer le proxy inverse et ce sera terminé. Merci pour l’aide @Falco & @pfaffman :slight_smile:

2 « J'aime »

De plus, je souhaite désactiver SSL sur Discourse pour qu’il ne nécessite pas de port spécifique. Puis-je le désactiver dans Discourse et l’activer sur un proxy inverse, où je possède le certificat sur ma machine, etc. ?

Oui, il vous suffit de supprimer les premières lignes du fichier app.yml : celle contenant ssl et celle contenant letsencrypt.

Comment procéder si j’utilise un proxy inverse Apache avec SSL ? Et puis-je également supprimer la ligne 443:443 dans app.yml ?

Oui. Normalement, pour configurer un proxy inverse, vous voudrez que votre service s’exécute via un socket Unix. Vous pouvez ajouter la ligne

  - "templates/web.socketed.template.yml"

à la liste des modèles dans le fichier app.yml pour cela. Le socket sera créé à l’adresse /var/discourse/shared/standalone/nginx.http.sock.

1 « J'aime »

À quoi ressemblerait mon fichier de configuration de proxy inverse ? Ou n’êtes-vous pas trop sûr ?

Bien qu’il existe quelques exemples fournis par des membres de la communauté, comme Configure Apache proxy with Let's Encrypt, cela relève du hors champ du support que nous offrons officiellement ici. Gardez également à l’esprit l’avertissement de Sam :

1 « J'aime »

J’ai déjà utilisé Apache comme proxy, je connais donc le stress :smiley:

1 « J'aime »

Salut !
Je me demandais juste si c’est correct pour les e-mails ? Car je n’en reçois aucun.

Rendu de layouts/email_template.html.erb (Durée : 0,4 ms | Allocations : 30)
E-mail livré 2d4e2472-28bc-4eba-a9d6-4ca666feb9d1@forum.domain.com (6,7 ms)
Exception de tâche : fin de fichier atteinte

Le serveur de messagerie est mail.domain.com et non forum.domain.com, ou cela est-il censé être là ?

Si vous ne recevez pas l’e-mail de test à l’adresse /admin/email, c’est qu’il y a un problème :wink:. Vous pouvez modifier les paramètres SMTP dans app.yml et corriger toute erreur.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.