خطأ فادح عند محاولة بدء تشغيل Docker (Oracle VM)

مرحبًا بالجميع - جديد على Discourse (يبدو رائعًا!)، وعلى الرغم من أن لدي بعض المهارات التقنية العامة، إلا أنني أعتقد أنني يمكن أن أصف نفسي بأنه مبتدئ نسبيًا في عالم Docker و Linux VM.

لدي VM مجاني من Oracle يعمل بنظام Oracle Linux. لقد أكملت الخطوات الموجودة هنا (https://blogs.oracle.com/developers/install-run-discourse-for-free-in-the-oracle-cloud) وأنا أقوم بتشغيل خطوة ./discourse-setup.

أحصل باستمرار على رسالة الخطأ أدناه… جربت تشغيل 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.

مرحبًا @Meathead40
أواجه نفس المشكلة على الأرجح.

تمكنت من إعداد Discourse على Oracle Free في يونيو الماضي. الآن، قمت بتشغيل برنامج الإعداد مرة أخرى لتغيير معلمتين تتعلقان بإعدادات البريد الإلكتروني.
أول خطأ يمكنني تتبعه في السجل هو FATAL: configuration file "/etc/postgresql/13/main/postgresql.conf" contains errors
ولكن في حالتي، هذا الملف غير موجود. بالإضافة إلى ذلك، خدمة PostgreSQL غير قيد التشغيل (بل إنها غير متاحة كخدمة أصلاً).

هل تمكنت من حل هذه المشكلة؟ هل واجه أي شخص آخر نفس الشيء؟

تحياتي
ستيف

هل يمكنك مشاركة مخرجات free -m --si؟

هل نظرت داخل الحاوية؟ هل كان لديك أيضًا إدخال السجل حول أن shared_buffers صغير جدًا؟

في حالتي:

# /var/discourse/launcher enter app
# egrep shared_buffers /etc/postgresql/13/main/postgresql.conf
shared_buffers = 128MB
exit

مرحبًا @Falco، هذا هو مخرجات الأمر:
المجموع المُستخدم الحر المشترك ذاكرة التخزين المؤقت المتاح
الذاكرة: 703 359 86 7 257 207
التبديل: 8388 246 8142

مرحبًا @Ed_S، أتلقى الرسالة التالية:

/var/discourse/launcher enter app
Cannot connect to the docker daemon - verify it is running and you have access

يجب أن ترى نفس الملف هنا:
/var/discourse/shared/standalone/postgres_data/postgresql.conf

في الوضع المثالي، مباشرة قبل إدخال السجل الذي يشير إلى وجود خطأ في التكوين، ستظهر سطر يصف طبيعة الخطأ.

ربما تجد السجل في:
/var/discourse/shared/standalone/log/var-log/postgres/current

شكرًا على الاقتراحات. تمكنت من جمع المزيد من المعلومات.
هذا من سجل الأخطاء، حول وقت حدوث الخطأ (الرسائل السابقة من أيام سابقة):

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

حسناً، هل يمكننا العودة قليلاً: أينما رأيت خطأ FATAL، ما هي الأسطر القليلة التي تسبقه؟

بالتأكيد، وشكرًا مرة أخرى على الدعم.

أقوم بتشغيل الإعداد على تثبيت موجود بهدف تغيير بعض معلمات التكوين. يكتشف الجزء الأول من السكربت ما يلي:

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) أكثر.

نعم، حتى الآن كانت المثانة تعمل بشكل جيد وتم تثبيتها مع تعطيل فحص الذاكرة بالفعل. يبدو أن الأمر مرتبط بهذا المنشور: Discourse won't install because I have 960MB of ram and not 1GB - Discourse System Administration - Unix Linux Community

لا يزال ملف الإعدادات يحتوي على فحص معطل، لكنني أعتقد أنه يتم تجاوزه؟ سأحاول تعديل القيمة كما أشرت وأبلغك بما يحدث.

هاه، يعتمد الأمر كثيرًا على ما فعلته هناك.

تمكنت من إكمال التكوين وإعادة البناء. كانت الخطوات كالتالي:

  • وضع علامة تعليق على فحص الذاكرة (#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 جيجابايت ثم تقوم بتقريب الرقم للأعلى عند وصفه:

تعديل: انظر المدونة المرتبطة:

ربما أهم تعليمات مفقودة هي لا تستخدم صورة الخادم الافتراضية. يتطلب ديسكورش 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. :wink: لحسن الحظ، تعمل صورة Ubuntu بشكل ممتاز. موقعي التجريبي/مضيف التعليقات [https://discourse.jlericson.com/] لا يزال يعمل. (رغم عدم وجود نشاط كبير.)