مرحبًا بالجميع - جديد على Discourse (يبدو رائعًا!)، وعلى الرغم من أن لدي بعض المهارات التقنية العامة، إلا أنني أعتقد أنني يمكن أن أصف نفسي بأنه مبتدئ نسبيًا في عالم Docker و Linux VM.
أحصل باستمرار على رسالة الخطأ أدناه… جربت تشغيل discourse doctor لكن دون جدوى. آمل أن يتمكن أحد من توجيهي نحو الاتجاه الصحيح فيما يتعلق بما قد يحدث هنا. شكرًا جزيلًا مقدّمًا! -تيم
[2021-06-11T04:09:29.733935 #1] INFO -- : > 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
I, [2021-06-11T04:09:29.735773 #1] INFO -- : > sleep 5
2021-06-11 04:09:30.320 GMT [54] LOG: 0 8kB is outside the valid range for parameter "shared_buffers" (16 .. 1073741823)
2021-06-11 04:09:30.322 UTC [54] FATAL: configuration file "/etc/postgresql/13/main/postgresql.conf" contains errors
I, [2021-06-11T04:09:34.739847 #1] INFO -- :
I, [2021-06-11T04:09:34.740097 #1] INFO -- : > su postgres -c 'createdb discourse' || true
createdb: error: could not connect to database template1: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:34.860266 #1] INFO -- :
I, [2021-06-11T04:09:34.860745 #1] INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
psql: error: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.023423 #1] INFO -- :
I, [2021-06-11T04:09:35.023810 #1] INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
psql: error: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.137806 #1] INFO -- :
I, [2021-06-11T04:09:35.138325 #1] INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
psql: error: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.257190 #1] INFO -- :
I, [2021-06-11T04:09:35.257476 #1] INFO -- : Terminating async processes
FAILED
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' failed with return #<Process::Status: pid 80 exit 2>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params "su postgres -c 'psql $db_name -c \"alter schema public owner to $db_user;\"'"
14ef6216494c846091ea6ce48143e2f25018b9d2579b6d4d0021d605f7f5e145
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
تمكنت من إعداد Discourse على Oracle Free في يونيو الماضي. الآن، قمت بتشغيل برنامج الإعداد مرة أخرى لتغيير معلمتين تتعلقان بإعدادات البريد الإلكتروني.
أول خطأ يمكنني تتبعه في السجل هو FATAL: configuration file "/etc/postgresql/13/main/postgresql.conf" contains errors
ولكن في حالتي، هذا الملف غير موجود. بالإضافة إلى ذلك، خدمة PostgreSQL غير قيد التشغيل (بل إنها غير متاحة كخدمة أصلاً).
هل تمكنت من حل هذه المشكلة؟ هل واجه أي شخص آخر نفس الشيء؟
شكرًا على الاقتراحات. تمكنت من جمع المزيد من المعلومات.
هذا من سجل الأخطاء، حول وقت حدوث الخطأ (الرسائل السابقة من أيام سابقة):
2021-08-02 13:33:16.980 UTC [2419] LOG: received smart shutdown request
2021-08-02 13:33:28.273 UTC [2419] LOG: background worker "logical replication launcher" (PID 2442) exited with exit code 1
2021-08-02 13:33:28.344 UTC [2437] LOG: shutting down
2021-08-02 13:33:28.552 UTC [2419] LOG: database system is shut down
كما حصلت على إعدادات الذاكرة المشتركة:
shared_buffers = 128MB # min 128kB
#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers
أقوم بتشغيل الإعداد على تثبيت موجود بهدف تغيير بعض معلمات التكوين. يكتشف الجزء الأول من السكربت ما يلي:
sudo ./discourse-setup
which: no docker.io in (/sbin:/bin:/usr/sbin:/usr/bin)
which: no docker.io in (/sbin:/bin:/usr/sbin:/usr/bin)
The configuration file containers/app.yml already exists!
. . . reconfiguring . . .
Saving old file as app.yml.2021-08-03-102829.bak
Stopping existing container in 5 seconds or Control-C to cancel.
+ /bin/docker stop -t 30 app
app
Found 0GB of memory and 1 physical CPU cores
setting db_shared_buffers = 0MB
setting UNICORN_WORKERS = 0
containers/app.yml memory parameters updated.
ثم أكمل بإدخال جميع معلمات التكوين وأخيرًا أبدأ عملية البناء… وهذا يجب أن يكون الدليل الذي تبحث عنه:
2021-08-03 10:30:37.709 GMT [55] LOG: 0 8kB is outside the valid range for parameter "shared_buffers" (16 .. 1073741823)
2021-08-03 10:30:37.713 UTC [55] FATAL: configuration file "/etc/postgresql/13/main/postgresql.conf" contains errors
هذا ليس مؤشرًا جيدًا! يجب أن يأتي هذا الرقم مباشرةً من مخرجات
free -g --si | awk ' /Mem:/ {print $2} '
هذا التقرير يُظهر 703 ميجابايت، وهو (رسميًا) صغير جدًا لكي يعمل discourse بشكل جيد. إذا كنت ترغب في المجازفة (وليس لديك أي دعم!)، فيمكنك تعديل الرقم السحري 990 في
أعتقد أنك بحاجة إلى مثيل أكبر مع ذاكرة وصول عشوائي (RAM) أكثر.
تمكنت من إكمال التكوين وإعادة البناء. كانت الخطوات كالتالي:
وضع علامة تعليق على فحص الذاكرة (#check_disk_and_memory) في /var/discourse/discourse-setup (غير متأكد مما إذا كان هذا ضروريًا)
تشغيل الأمر sudo ./discourse-setup من مجلد /var/discourse (سيؤدي هذا إلى إنشاء ملف /var/discourse/containers/app.yml ومحاولة المتابعة في عملية البناء، والتي ستفشل كما هو موضح أعلاه)
تعديل ملف app.yml لتحديد db_shared_buffers: “128MB” و UNICORN_WORKERS: 1 بشكل صريح
تشغيل إعادة البناء باستخدام الأمر sudo ./launcher rebuild app (من مجلد /var/discourse)
أعلم أن هذا يقع على حافة المتطلبات، لكنني سأتابع عن كثب كيفية تصرف المثيل.
يسعدنا أن الأمور قد حُلت. في الموضوع المرتبط، والموضوع هنا الذي يشير إليه، يبدو لي أنه من الأفضل بكثير تغيير رقم “المغفرة السحرية” من 990 إلى الرقم الذي يمثل نظامك الخاص. فـ “تعطيل فحص الذاكرة” يسبب في الواقع مشاكل.
من الواضح لي أن فريق Discourse يحتاج إلى تحديد حد أدنى بقيمة معينة، لوضع خط فاصل بين التكوينات المدعومة وغير المدعومة، وقد حددوه رسميًا عند 1 جيجابايت، مع تخفيف إلى 990. لكن 960 تبدو قريبة جدًا من 990 بالنسبة لي، وتنشأ لنفس الأسباب. من ناحية أخرى، يبدو 703 مختلفًا جدًا!
مرحبًا إد،
أتفق معك وسأقوم بتغيير الرقم. أنا مندهش جدًا من انخفاض الذاكرة بهذا الشكل. تشير مواصفات مثيل Oracle (الطبقة المجانية) إلى ذاكرة مقدارها 1 جيجابايت، ومع ذلك فإن النسخة المجانية توفر ما يقارب 60-70% منها فقط. أنا مرتبك بعض الشيء ولا أعرف السبب وراء ذلك.
ربما أهم تعليمات مفقودة هي لا تستخدم صورة الخادم الافتراضية. يتطلب ديسكورش 1 جيجابايت من الذاكرة العشوائية (أو ما يقارب ذلك) (Make 1gb warning a little less than 1gb by wryun · Pull Request #7368 · discourse/discourse · GitHub)، ولا تترك صورة Oracle Linux مساحة ذاكرة كافية لسبب ما. لا أعرف ما إذا كانت CentOS ستعمل، لكن صورة أوبونتو جيدة. فقط تأكد من اختيار التثبيت الكامل2 بدلاً من التثبيت “الأدنى” (Minimal).
أنا أشك في أن نظام Oracle Linux الافتراضي يتضمن العديد من العناصر غير الضرورية لتثبيت Discourse. يُفترض أن الحالة الرئيسية لاستخدامه هي استضافة خوادم قواعد بيانات Oracle. لحسن الحظ، تعمل صورة Ubuntu بشكل ممتاز. موقعي التجريبي/مضيف التعليقات [https://discourse.jlericson.com/] لا يزال يعمل. (رغم عدم وجود نشاط كبير.)