لا يمكن إعادة البناء بسبب فشل ترقية PostgreSQL 12

مرحبًا بكم،

أنا عالق في المشكلة التالية. عند تنفيذ الأمر ./discourse-setup، أواجه الخطأ التالي:

لست متأكدًا من فهمي للرسالة، فموقعي الإلكتروني يعمل مباشرةً وموجود على https://cp2077.eu/ مع شهادة SSL.

إليك ملف app.yml الخاص بي:

## هذا قالب حاوية Docker المستقلة والكل في واحد لـ Discourse
##
## بعد إجراء أي تعديلات على هذا الملف، يجب عليك إعادة البناء
## /var/discourse/launcher rebuild app
##
## كن حذرًا جدًا عند التعديل!
## ملفات YAML حساسة للغاية للأخطاء في المسافات البادئة أو المحاذاة!
## قم بزيارة http://www.yamllint.com/ للتحقق من صحة هذا الملف عند الحاجة

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/sshd.template.yml"
  - "templates/web.ratelimited.template.yml"
## قم بإلغاء التعليق عن هذين السطرين إذا كنت ترغب في إضافة Lets Encrypt (https)
##  - "templates/web.ssl.template.yml"
##  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.socketed.template.yml"
## ما هي منافذ TCP/IP التي يجب أن تعرضها هذه الحاوية؟
## إذا كنت تريد لـ Discourse مشاركة منفذ مع خادم ويب آخر مثل Apache أو nginx،
## راجع https://meta.discourse.org/t/17247 للحصول على التفاصيل
#expose:
# - "2045:80"   # http
# - "1443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## قم بتعيين db_shared_buffers إلى أقصى 25% من إجمالي الذاكرة.
  ## سيتم تعيينها تلقائيًا بواسطة bootstrap بناءً على الذاكرة المكتشفة، أو يمكنك تجاوزها
  db_shared_buffers: "1024MB"

  ## يمكن أن يحسن أداء الفرز، لكنه يضيف استخدام الذاكرة لكل اتصال
  #db_work_mem: "40MB"

  ## أي إصدار Git يجب أن تستخدمه هذه الحاوية؟ (الافتراضي: tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## كم عدد طلبات الويب المتزامنة المدعومة؟ يعتمد على الذاكرة ونوى المعالج.
  ## سيتم تعيينها تلقائيًا بواسطة bootstrap بناءً على المعالجات المكتشفة، أو يمكنك تجاوزها
  UNICORN_WORKERS: 4

  ## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
  ## مطلوب. لن يعمل Discourse مع عنوان IP عاري.
  DISCOURSE_HOSTNAME: cp2077.eu

  ## قم بإلغاء التعليق إذا كنت تريد بدء الحاوية بنفس اسم النطاق (-h option) المحدد أعلاه (الافتراضي "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: قائمة عناوين البريد الإلكتروني المفصولة بفواصل سيتم تعيينها كمسؤول ومطور عند التسجيل الأول، مثال 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'myemail@yandex.com'

  ## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
  # عنوان SMTP واسم المستخدم وكلمة المرور مطلوبة
  # تحذير: قد يسبب حرف '#' في كلمة مرور SMTP مشاكل!
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: ******
  DISCOURSE_SMTP_PASSWORD: ******
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (اختياري، الافتراضي true)

  ## إذا أضفت قالب Lets Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
  LETSENCRYPT_ACCOUNT_EMAIL: myemail@yandex.com

  ## عنوان CDN http أو https لهذه النسخة من Discourse (مُهيأ للسحب)
  ## راجع https://meta.discourse.org/t/14857 للحصول على التفاصيل
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

## حاوية Docker غير ذات حالة؛ تُخزن جميع البيانات في /shared
volumes:
  - volume:
 host: /var/discourse/shared/standalone
  guest: /shared
  - volume:
  host: /var/discourse/shared/standalone/log/var-log
  guest: /var/log

## توضع الإضافات هنا
## راجع https://meta.discourse.org/t/19157 للحصول على التفاصيل
hooks:
  after_code:
- exec:
    cd: $home/plugins
    cmd:
      - git clone https://github.com/discourse/docker_manager.git

## أي أوامر مخصصة للتشغيل بعد البناء
run:
  - exec: echo "Beginning of custom commands"
  ## إذا كنت تريد تعيين عنوان البريد الإلكتروني 'من' للتسجيل الأول، قم بإلغاء التعليق وتغييره:
  ## بعد استلام أول بريد تسجيل، قم بإعادة التعليق على السطر. يجب تشغيله مرة واحدة فقط.
  ## - exec: rails r "SiteSetting.notification_email='beatlicious@yandex.com'"
  - exec: echo "End of custom commands"

عند تنفيذ الأمر ./launcher rebuild app، أواجه الخطأ التالي:

fatal: not a git repository (or any of the parent directories): .git
Stopping old container
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Already up to date.
I, [2020-07-11T01:41:07.468750 #1]  INFO -- : Loading --stdin
I, [2020-07-11T01:41:07.482322 #1]  INFO -- : 
I, [2020-07-11T01:41:07.556578 #1]  INFO -- : Generating locales (this might take a while)...
Generation complete.

I, [2020-07-11T01:41:07.557419 #1]  INFO -- : 
I, [2020-07-11T01:41:07.562170 #1]  INFO -- :
I, [2020-07-11T01:41:07.562833 #1]  INFO -- : 
I, [2020-07-11T01:41:07.568449 #1]  INFO -- :
I, [2020-07-11T01:41:07.569233 #1]  INFO -- : 
I, [2020-07-11T01:41:07.576449 #1]  INFO -- :
I, [2020-07-11T01:41:07.577398 #1]  INFO -- : 
I, [2020-07-11T01:41:07.582904 #1]  INFO -- :
I, [2020-07-11T01:41:07.583623 #1]  INFO -- : 
I, [2020-07-11T01:41:07.592257 #1]  INFO -- :
I, [2020-07-11T01:41:07.593134 #1]  INFO -- : 
I, [2020-07-11T01:41:07.602436 #1]  INFO -- :
I, [2020-07-11T01:41:07.602977 #1]  INFO -- : 
I, [2020-07-11T01:41:07.608907 #1]  INFO -- :
I, [2020-07-11T01:41:07.609638 #1]  INFO -- : 
I, [2020-07-11T01:41:07.619803 #1]  INFO -- :
I, [2020-07-11T01:41:07.622598 #1]  INFO -- : 
I, [2020-07-11T01:41:07.629638 #1]  INFO -- :
I, [2020-07-11T01:41:07.630522 #1]  INFO -- : 
I, [2020-07-11T01:41:07.639523 #1]  INFO -- :
I, [2020-07-11T01:41:07.651076 #1]  INFO -- : File 
I, [2020-07-11T01:41:07.660620 #1]  INFO -- : File 
I, [2020-07-11T01:41:07.668238 #1]  INFO -- : File 
I, [2020-07-11T01:41:07.679949 #1]  INFO -- : File 
I, [2020-07-11T01:41:07.680746 #1]  INFO -- : 
chown: cannot access '/var/lib/postgresql/10/main': No such file or directory
I, [2020-07-11T01:41:07.685326 #1]  INFO -- :


FAILED
--------------------
Pups::ExecError: chown -R root /var/lib/postgresql/10/main failed with return #
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cmd"=
d639e83f5451b5039efb2333f3eca1166d34ff6dc582ee29a0734a4274080fa2
** FAILED TO BOOTSTRAP ** يرجى التمرير للأعلى والبحث عن رسائل خطأ سابقة، قد يكون هناك أكثر من خطأ.
./discourse-doctor قد يساعد في تشخيص المشكلة.
atlas@sknet:~/www/cp2077$

هل يمكن لأحدكم تقديم نصيحة حول كيفية تثبيت وإعداد Discourse؟ لقد اتبعت الدليل ووقفت هنا. شكرًا لكم

هل اتبعت التثبيت القياسي الرسمي لـ Discourse؟

لا أرى كيف يمكن أن يكون هذا الموقع ناتجًا عن ملف app.yml الذي أدرجته.

أنصح بإنشاء قطرة (Droplet) جديدة واتباع التعليمات مرة أخرى.

اتبعت الدليل نعم، وكما لاحظت، ذكرت أنه بعد تنفيذ الأمر، أواجه أخطاءً. ماذا تقصد بعدم رؤيتك لكيفية ارتباط الموقع بملف app.yml؟ إنه نفس اسم النطاق المضيف. هل يمكنك التوضيح أكثر؟

هذا يعني أن لديك مشاكل في DNS. نطاقك يشير إلى عنوان IP آخر.

هل يمكنك تأكيد أن هذا هو عنوان IP الصحيح؟

نعم، هذا هو عنوان IP لموقعي. لقد تحققت من إعدادات DNS الخاصة بي، وكل شيء مضبوط بشكل صحيح، وإلا لما ظهر موقعك على أنه نشط.

إذا قمت بعمل ping لموقعي، فستظهر نفس عنوان IP.

قد تكون هناك مشكلة في إعدادات nginx (أو غيرها) لديك؟ :roll_eyes:

هل كان يعمل من قبل؟ مع فتح المنفذ؟

فيما يلي إعدادات nginx الخاصة بي

server {

    listen 80;
    listen [::]:80;
    server_name www.cp2077.eu;
    return 301 https://cp2077.eu$request_uri;
}

server {

    listen 443 ssl;
    listen [::]:443 ssl;
    server_name www.cp2077.eu;
    ssl_certificate /etc/letsencrypt/live/cp2077.eu/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cp2077.eu/privkey.pem;
    return 301 https://cp2077.eu$request_uri;
}

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name cp2077.eu;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/cp2077.eu/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cp2077.eu/privkey.pem;

    include /etc/nginx/snippets/ssl.conf;

    http2_idle_timeout 5m; # زيادة من الافتراضي 3 دقائق

    location / {
        proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;

    }


}

بصراحة، ليس لدي أي فكرة عن ما الخطأ الآخر. الموقع يعمل ومتصل بالمنفذ 443.

لا يهم ما الذي أغيره، فبمجرد تشغيل الأمر ./launcher rebuild app، يظهر خطأ أيضًا

$  ./launcher rebuild app
fatal: ليس مستودع git (أو أي من الدوال الأب): .git
إيقاف الحاوية القديمة
+ /usr/bin/docker stop -t 60 app
app
(<unknown>): لم يتم العثور على مفتاح متوقع أثناء تحليل تعيين كتلة في السطر 10 العمود 1 -e LANG=en_US.UTF-8
خطأ في بناء جملة YAML. يرجى التحقق من ملفات الإعداد containers/*.yml.
$ ./launcher rebuild app
fatal: ليس مستودع git (أو أي من الدلائل الأب): .git
إيقاف الحاوية القديمة
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
محدث بالفعل.
I, [2020-07-11T17:12:58.113241 #1]  INFO -- : تحميل --stdin
I, [2020-07-11T17:12:58.134955 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-11T17:12:58.173307 #1]  INFO -- : توليد الإعدادات المحلية (قد يستغرق هذا بعض الوقت)...
اكتمل التوليد.

I, [2020-07-11T17:12:58.174132 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-11T17:12:58.178306 #1]  INFO -- :
I, [2020-07-11T17:12:58.178561 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-11T17:12:58.181917 #1]  INFO -- :
I, [2020-07-11T17:12:58.182391 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-11T17:12:58.185755 #1]  INFO -- :
I, [2020-07-11T17:12:58.186224 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-11T17:12:58.189632 #1]  INFO -- :
I, [2020-07-11T17:12:58.190021 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-11T17:12:58.192947 #1]  INFO -- :
I, [2020-07-11T17:12:58.193285 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2020/07/11 17:12:58 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): لا يوجد ملف أو دليل
I, [2020-07-11T17:12:58.199237 #1]  INFO -- :
I, [2020-07-11T17:12:58.199649 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-11T17:12:58.203817 #1]  INFO -- :
I, [2020-07-11T17:12:58.204106 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-11T17:12:58.208244 #1]  INFO -- :
I, [2020-07-11T17:12:58.208674 #1]  INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T17:12:58.213559 #1]  INFO -- :
I, [2020-07-11T17:12:58.215200 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T17:12:58.220491 #1]  INFO -- :
I, [2020-07-11T17:12:58.228222 #1]  INFO -- : الملف > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-11T17:12:58.234341 #1]  INFO -- : الملف > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-07-11T17:12:58.240097 #1]  INFO -- : الملف > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-11T17:12:58.245972 #1]  INFO -- : الملف > /root/upgrade_postgres  chmod: +x  chown:
I, [2020-07-11T17:12:58.246504 #1]  INFO -- : > chown -R root /var/lib/postgresql/10/main
chown: لا يمكن الوصول إلى '/var/lib/postgresql/10/main': لا يوجد ملف أو دليل
I, [2020-07-11T17:12:58.249988 #1]  INFO -- :


FAILED
--------------------
Pups::ExecError: فشل الأمر chown -R root /var/lib/postgresql/10/main مع إرجاع #<Process::Status: pid 42 exit 1>
موقع الفشل: /pups/lib/pups/exec_command.rb:112:in `spawn'
فشل التنفيذ مع المعاملات {"cmd"=>["chown -R root /var/lib/postgresql/10/main", "[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0", "chown -R postgres:postgres /shared/postgres_data", "chown -R postgres:postgres /var/run/postgresql"]}
cf48a849a885246d6bf9b1b444e679ff6c71dd2fa3b298d42fa2cc67694fc9b5
** فشل التمهيد ** يرجى التمرير لأعلى والبحث عن رسائل الخطأ السابقة، قد يكون هناك أكثر من خطأ.
قد يساعد ./discourse-doctor في تشخيص المشكلة.

يوجد خطأ في التنسيق في ملف yml الخاص بك.

لقد ألصقت ملف yml هنا بالفعل، لا أرى أي خطأ في التنسيق هناك، أترى أنت شيئًا؟

نعم، المسافة البادئة غير صحيحة هناك.

ملف app.yml يأتي من القوالب ولم نلمس أبدًا الأسطر التي تقترحها علي، لذا لا أفهم كيف يمكن أن تكون سيئة إذا كان ذلك ما تم توفيره من قبلكم.

حسناً، بغض النظر، لديك خطوات تالية لما يجب فعله، لذا أنصحك باتباعها :wink:

أعتقد أن الخطأ الذي يظهره إعداد Discourse حقيقي بسبب وكيل العكس.

أرى أنك قد أجريت بالفعل تغييرات على ملف app.yml، فلماذا لا تقوم بتشغيل ./launcher rebuild app ببساطة؟

لقد قمت بلصقه هنا عدة مرات، لكنني سأفعل ذلك مرة أخرى. إليك ما أحصل عليه عند تشغيل هذا الأمر:

$ ./launcher rebuild app
fatal: not a git repository (or any of the parent directories): .git
إيقاف الحاوية القديمة
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Already up to date.
I, [2020-07-11T17:12:58.113241 #1]  INFO -- : Loading --stdin
I, [2020-07-11T17:12:58.134955 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-11T17:12:58.173307 #1]  INFO -- : Generating locales (this might take a while)...
Generation complete.

I, [2020-07-11T17:12:58.174132 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-11T17:12:58.178306 #1]  INFO -- :
I, [2020-07-11T17:12:58.178561 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-11T17:12:58.181917 #1]  INFO -- :
I, [2020-07-11T17:12:58.182391 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-11T17:12:58.185755 #1]  INFO -- :
I, [2020-07-11T17:12:58.186224 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-11T17:12:58.189632 #1]  INFO -- :
I, [2020-07-11T17:12:58.190021 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-11T17:12:58.192947 #1]  INFO -- :
I, [2020-07-11T17:12:58.193285 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2020/07/11 17:12:58 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory
I, [2020-07-11T17:12:58.199237 #1]  INFO -- :
I, [2020-07-11T17:12:58.199649 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-11T17:12:58.203817 #1]  INFO -- :
I, [2020-07-11T17:12:58.204106 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-11T17:12:58.208244 #1]  INFO -- :
I, [2020-07-11T17:12:58.208674 #1]  INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T17:12:58.213559 #1]  INFO -- :
I, [2020-07-11T17:12:58.215200 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T17:12:58.220491 #1]  INFO -- :
I, [2020-07-11T17:12:58.228222 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-11T17:12:58.234341 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-07-11T17:12:58.240097 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-11T17:12:58.245972 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2020-07-11T17:12:58.246504 #1]  INFO -- : > chown -R root /var/lib/postgresql/10/main
chown: cannot access '/var/lib/postgresql/10/main': No such file or directory
I, [2020-07-11T17:12:58.249988 #1]  INFO -- :


FAILED
--------------------
Pups::ExecError: فشل الأمر chown -R root /var/lib/postgresql/10/main مع رمز الخروج #<Process::Status: pid 42 exit 1>
موقع الفشل: /pups/lib/pups/exec_command.rb:112:in `spawn'
فشل التنفيذ مع المعاملات {"cmd"=>["chown -R root /var/lib/postgresql/10/main", "[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0", "chown -R postgres:postgres /shared/postgres_data", "chown -R postgres:postgres /var/run/postgresql"]}
cf48a849a885246d6bf9b1b444e679ff6c71dd2fa3b298d42fa2cc67694fc9b5
** فشل التمهيد ** يرجى التمرير للأعلى والبحث عن رسائل الخطأ السابقة، فقد يكون هناك أكثر من خطأ.
قد يساعدك ./discourse-doctor في تشخيص المشكلة.

لماذا تستخدم وسيطًا (proxy) لموقع Discourse الخاص بك بدلاً من استخدام نطاق فرعي؟

لست متأكدًا من فهمي. أريد أن يكون منتدى Discourse الخاص بي على النطاق الرئيسي الخاص بي وليس كنطاق فرعي.

إذا كانت هذه أول تثبيت لك، فيجب عليك حقًا تشغيله وتشغيله وفقًا للدليل الرسمي قبل تغيير الإعدادات. تم توثيق ذلك جيدًا في مكان آخر هنا على ميتا بأن المجلد الفرعي لا يوفر أي فوائد، ويُعتبر موضوعًا متقدمًا قد ينكسر في أي وقت مع التحديثات.

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