تثبيت Discourse مع Apache2 المثبت

مرحبًا!
أقوم بتشغيل خادم Ubuntu 18.04 مع تثبيت Apache. أرغب في تثبيت Discourse على منفذ مختلف ثم استخدام وكيل عكسي عبر Apache لجعله متاحًا عبر عنوان URL. حاولت إنشاء ملف app.yml وتعديل الإعدادات فيه، ثم شغلت الأمر: ./launcher rebuild app، وظهر كل شيء بشكل جيد حتى النهاية حيث حصلت على خطأ ‘فشل’ مع هذا:

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 ** الرجاء التمرير للأعلى والبحث عن رسائل الخطأ السابقة، قد يكون هناك أكثر من خطأ.
./discourse-doctor قد يساعد في تشخيص المشكلة.

حاولت استخدام discourse-doctor لكنه لم يخبرني بشيء. هل لدى أحدكم طريقة لحل هذه المشكلة؟ أيضًا، أستخدم Apache لأنني أجد أنه أسهل في الاستخدام ولدي خبرة أكبر معه. لذا فإن التبديل إلى Nginx ليس خيارًا.
إليك بعض السجلات من ما قبل قسم الفشل:

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

شكرًا لك،
كيان

هل يمكنك

؟ نحن بحاجة حقًا إلى سطور السجلات السابقة لتقديم أي مساعدة ذات مغزى.

لقد أرفقتها للتو، عذراً :slight_smile:

لا يحتوي خادمك على ذاكرة وصول عشوائي (RAM) كافية لتثبيت Discourse.

ما هي سعة الذاكرة والذاكرة الافتراضية لديك؟

يحتوي على ذاكرة عشوائية بسعة 8 جيجابايت ومساحة تبديل بسعة 10 جيجابايت. وبالنظر إلى الأمر، يبدو أن نظامي لا يستخدم مساحة التبديل.

هل تستخدم التطبيق الحالي كل الذاكرة المتاحة، وهل تم ضبط قيمة swappiness لمنع حدوثها تمامًا؟

بما أنني لا أرى أي تقارير أخرى، فأعتقد أن المشكلة تتعلق بخادمك.

إعجاب واحد (1)

مرحبًا!
لدي ذاكرة عشوائية بسعة 8 جيجابايت ومساحة تبديل بسعة 10 جيجابايت. أقوم بتشغيل الأمر ./launcher rebuild app، وتظهر الذاكرة العشوائية مستخدمة بنسبة 3.4 جيجابايت دون استخدام مساحة التبديل. أستخدم أداة htop وتظهر مساحة التبديل على أنها OK/10.00G. لست متأكدًا مما إذا كان هذا يعني أن مساحة التبديل تعمل أم لا.

في HTOP، يُظهر قسم الذاكرة المؤقتة (Swap) OK/10.00G. لست متأكدًا من معنى هذا. كما أن استخدام الذاكرة العشوائية (RAM) يقف عند حوالي 3.4 جيجابايت أثناء تشغيل أمر ./launcher rebuild app.

أعتقد أن الأمر قد نجح. أغلقت Clamd باستخدام sigterm عبر htop. يظهر في النهاية معرف Docker. لذا أظن أن الأمر قد نجح.

تعديل: يبدو أن كل شيء يعمل بشكل جيد. قمت بتحميله عبر عنوان IP والمنفذ، وقد ظهر بشكل صحيح! كل ما تبقى هو إعداد الوكيل العكسي وسيتم كل شيء. شكراً للمساعدة @Falco و @pfaffman :slight_smile:

إعجابَين (2)

أيضًا، أود تعطيل SSL في Discourse حتى لا يتطلب منفذًا. هل يمكنني تعطيله في Discourse وتفعيله على وكيل عكسي، حيث يكون الشهادة على جهاز الكمبيوتر الخاص بي، وما إلى ذلك؟

نعم، كل ما عليك فعله هو إزالة أول بضعة أسطر في ملف app.yml. السطر الذي يحتوي على ssl والسطر الذي يحتوي على letsencrypt.

كيف يمكنني القيام بذلك باستخدام وكيل عكسي Apache مع SSL؟ وهل يمكنني أيضًا إزالة سطر 443:443 في ملف app.yml؟

نعم. عادةً، عند إعداد وكيل عكسي، ستحتاج إلى تشغيل خدمتك عبر مقبس يونكس. يمكنك إضافة السطر

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

إلى قائمة القوالب في ملف app.yml لذلك. سيتم إنشاء المقبس في المسار /var/discourse/shared/standalone/nginx.http.sock.

إعجاب واحد (1)

كيف سيبدو ملف .conf الخاص بالوكيل العكسي الخاص بي؟ أم أنك لست متأكدًا تمامًا؟

في حين أن هناك بعض الأمثلة من أعضاء المجتمع مثل Configure Apache proxy with Let's Encrypt فإن ذلك يقع خارج نطاق الدعم الذي نقدمه رسميًا هنا. كما يرجى الانتباه إلى تحذير سام:

إعجاب واحد (1)

لقد قمت بتشغيل أباتشي كوكيل سابقًا، لذا أعرف الضغط الذي يسببه :smiley:

إعجاب واحد (1)

مرحبًا!
أتساءل فقط، هل هذا صحيح للرسائل الإلكترونية؟ حيث إنني لا أستلم أي رسائل.

تم عرض التخطيطات/email_template.html.erb (المدة: 0.4 مللي ثانية | التخصيصات: 30)
تم تسليم البريد 2d4e2472-28bc-4eba-a9d6-4ca666feb9d1@forum.domain.com (6.7 مللي ثانية)
استثناء الوظيفة: تم الوصول إلى نهاية الملف

خادم البريد هو mail.domain.com وليس forum.domain.com، أو هل يُقصد أن يكون ذلك هناك؟

إذا لم تستلم بريد الاختبار في /admin/email، فهذا غير صحيح :smirking_face:. يمكنك تغيير إعدادات SMTP في ملف app.yml وتصحيح أي أخطاء.

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