أكثر من موقع مع حاويات مختلفة تعمل على نفس خادم do

تم تثبيت الموقع الأول بنجاح وتشغيله لأكثر من شهر. اليوم، اتبعت التعليمات الموجودة هنا https://meta.discourse.org/t/running-other-websites-on-the-same-machine-as-discourse/17247، وقمت بتعديل ملف إعدادات discourse الأول، وتثبيت nginx خارجي على المضيف، وإعادة بناء discourse الأول.

ملف app.yml للموقع رقم 1

root@docker-s-1vcpu-2gb-sgp1-01:~# cat /var/bbs-antivte-discourse/containers/app.yml
## هذا قالب حاوية Discourse Docker مستقل متكامل
##
## بعد إجراء أي تعديلات على هذا الملف، يجب عليك إعادة البناء
## /var/discourse/launcher rebuild app
##
## كن حذرًا للغاية عند التعديل!
## ملفات YAML حساسة للغاية للأخطاء في المسافات البيضاء أو المحاذاة!
## قم بزيارة http://www.yamllint.com/ للتحقق من صحة هذا الملف عند الحاجة

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

params:
  db_default_text_search_config: "pg_catalog.english"

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

  ## يمكن أن يحسن أداء الفرز، لكنه يضيف استخدام الذاكرة لكل اتصال
  #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: bbs.antivte.com

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

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

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

  ## إذا أضفت قالب Lets Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
  LETSENCRYPT_ACCOUNT_EMAIL: techempower@163.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/bbs-antivte-discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/bbs-antivte-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
          - git clone https://github.com/discourse/discourse-knowledge-explorer
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/procourse/procourse-static-pages
## أي أوامر مخصصة للتشغيل بعد البناء
run:
  - exec: echo "Beginning of custom commands"
  ## إذا كنت ترغب في تعيين عنوان البريد الإلكتروني 'من' لتسجيلك الأول، قم بإلغاء التعليق وتغييره:
  ## بعد الحصول على أول بريد إلكتروني للتسجيل، قم بإعادة التعليق على السطر. لا يحتاج للتشغيل إلا مرة واحدة.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

بعد ذلك، لتثبيت الموقع الثاني، قمت بنسخ مصدر الكود باستخدام git إلى دليل آخر، ونسخت ملف app.yml المعدل الأول وقمت فقط بتعديل اسم النطاق واسم دليل النسخ في ذلك للموقع الثاني، ثم شغّلت https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md

./discourse-setup

لقد شعرت بالحيرة من التلميحات التالية، ولدي ملفا تكوين nginx مختلفان للموقعين

ملف تكوين nginx للموقع رقم 1

root@docker-s-1vcpu-2gb-sgp1-01:~# cat /var/website/conf/conf.d/ytb.antivte.com 


server {
    listen 80; listen [::]:80;
    server_name ytb.antivte.com;  # <-- قم بتغيير هذا

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;  listen [::]:443 ssl http2;
    server_name ytb.antivte.com;  # <-- قم بتغيير هذا

#    ssl on;
    ssl_certificate      /var/ytb-antivte-discourse/shared/standalone/ssl/ssl.crt;
    ssl_certificate_key  /var/ytb-antivte-discourse/shared/standalone/ssl/ssl.key;
    ssl_dhparam          /var/ytb-antivte-discourse/shared/standalone/ssl/dhparams.pem;
    ssl_session_tickets off;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;

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

    location / {
        proxy_pass http://unix:/var/ytb-antivte-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;
    }
}

ملف تكوين nginx للموقع رقم 2

server {
    listen 80; listen [::]:80;
    server_name bbs.antivte.com;  # <-- قم بتغيير هذا

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;  listen [::]:443 ssl http2;
    server_name bbs.antivte.com;  # <-- قم بتغيير هذا

#    ssl on;
    ssl_certificate      /var/bbs-antivte-discourse/shared/standalone/ssl/bbs.antivte.com.cer;
    ssl_certificate_key  /var/bbs-antivte-discourse/shared/standalone/ssl/bbs.antivte.com.key;
    ssl_dhparam          /var/bbs-antivte-discourse/shared/standalone/ssl/dhparams.pem;
    ssl_session_tickets off;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;

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

    location / {
        proxy_pass http://unix:/var/bbs-antivte-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;
    }
}

و

    /var/ytb-antivte-discourse/discourse-setup 
يبدو أن المنفذ 80 مشغول بالفعل.

سيظهر لك الأمر الذي يستخدم المنفذ 80
COMMAND  PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nginx   4255   root    6u  IPv4 22842780      0t0  TCP *:http (LISTEN)
nginx   4255   root    7u  IPv6 22842781      0t0  TCP *:http (LISTEN)
nginx   4256 nobody    6u  IPv4 22842780      0t0  TCP *:http (LISTEN)
nginx   4256 nobody    7u  IPv6 22842781      0t0  TCP *:http (LISTEN)

إذا كنت تحاول تشغيل Discourse في نفس الوقت مع خادم ويب آخر
مثل Apache أو nginx، ستحتاج إلى ربط منفذ مختلف

راجع https://meta.discourse.org/t/17247

إذا كنت تعيد تكوين Discourse مُعد بالفعل، استخدم 

./launcher stop app

لإيقاف Discourse قبل إعادة تكوينه والمحاولة مرة أخرى.

لماذا يوجد هذا السطر مرتين؟

ما يجب عليك فعله هو إعادة تسمية ملف app.yml في مجلد containers.

كما تحتاج إلى تغيير بيانات اعتماد Mailgun إذا كانت هذه كلمة المرور الحقيقية الخاصة بك.

لن تتمكن من تشغيل discourse-setup إذا كان لديك خادم ويب قيد التشغيل. يجب عليك ببساطة تحرير الملفات بنفسك باستخدام nano أو ما شابه. تم تصميم الأداة لدعم الحالات الأكثر شيوعًا فقط.

لن تتمكن من تشغيل discourse-setup إذا كان لديك خادم ويب قيد التشغيل. يجب عليك ببساطة تحرير الملفات بنفسك باستخدام nano أو ما شابه. تم تصميمه لدعم أكثر الحالات شيوعًا فقط.

لدي nginx قيد التشغيل، إذا كان هذا ما تقصده.
أي ملف أحرره؟ لا أفهم ما يُقال.