أنا مبتدئ في بناء المواقع، وبسبب اهتمامي، أرغب في بناء مجتمع للتواصل التقني. أخطط لبناء منصة Discourse ومشاركة هذا الدليل، آمل أن يكون مفيدًا للأصدقاء الذين يحتاجون إلى تثبيت Discourse، وتجنب الأخطاء. هناك عدد قليل جدًا من أدلة Discourse باللغة الصينية، وبعض الأدلة قديمة، واعتمدت على برامج الترجمة، ودرست الأمر لعدة أيام.
ما تحتاجه لإنشاء منصة Discourse خاصة بك:
خادم خفيف من Alibaba Cloud في هونغ كونغ. تنزيل إضافات GitHub من خادم صيني بطيء جدًا، لذلك أوصي باستخدام خادم Alibaba Cloud الخفيف في هونغ كونغ، أو خوادم خفيفة أخرى. الخوادم الخفيفة أرخص ومناسبة للمبتدئين. يجب أن تكون الذاكرة أكبر من 2 جيجابايت، وإلا فلن تتمكن من التثبيت. إذا كنت بحاجة إلى التثبيت على خادم صيني، يمكنك استخدام خادم هونغ كونغ بالدفع حسب الاستخدام، ثم استخدام ميزة إنشاء صورة في المنصة واستنساخها إلى الخادم الصيني، مما يوفر الوقت في تجنب الأخطاء.
اسم نطاق قصير وسهل التذكر وموجه إلى عنوان IP للخادم. أوصي بـ com و net. تفتقر نطاقات أخرى إلى التمييز. يمكنك البحث عن استعلام نطاقات مجمعة للعثور على نطاقات قصيرة باستخدام الاستعلامات المنظمة.
النظام: Ubuntu 20.04، وهو شائع الاستخدام.
بعد فتح خادم جديد، افتح جميع منافذ جدار الحماية أولاً (بعد الانتهاء من التصحيح، أغلق المنافذ حسب الحاجة، واترك فقط المنافذ المستخدمة، لتجنب هجمات القراصنة). قم بتعيين كلمة مرور المستخدم الجذر في لوحة التحكم، ثم اتصل بالخادم عن بُعد عبر SSH مباشرة من الويب، أو قم بتنزيل برنامج SSH مثل XTerminal.
ثم الصق الأوامر الثلاثة التالية واضغط على Enter للتنفيذ. عند ظهور خيارات، اضغط على yes، لتحديث مصادر النظام وتثبيت برنامج git.
apt update
apt upgrade -y
apt install git
ثم الصق الأوامر الثلاثة التالية واضغط على Enter للتنفيذ، باستخدام صلاحيات المسؤول. هذه الخطوة sudo -s إذا لم تكن حذرًا، ستظهر بعض رسائل الفشل الغامضة أثناء التثبيت، مما يؤدي إلى فشل التثبيت، وذلك بسبب عدم وجود صلاحيات.
sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers
بعد التنزيل، قم بتشغيل معالج التثبيت
./discourse-setup
ثم أدخل اسم النطاق المراد ربطه حسب المطالبات. يستغرق التثبيت الأول وقتًا طويلاً، لذا يُنصح بملء أي شيء عشوائيًا باستثناء اسم النطاق الرئيسي، ثم إعادة البناء بعد نجاح التثبيت. يمكنك استخدام لقطات الشاشة وترجمة صور WeChat إذا لم تفهم شيئًا. يمكن استخدام خدمة البريد الإلكتروني من Alibaba Cloud للبريد الإلكتروني.
بعد ذلك، ستظهر رسالة للاستمرار في التثبيت أو الإلغاء بالضغط على ctrl+c. يُنصح بالاستمرار في التثبيت.
بعد اكتمال التثبيت، قم بزيارة اسم النطاق المرتبط. إذا ظهرت صفحة التسجيل، فهذا يعني أن Discourse قد تم تثبيته بنجاح.
ثم قم بتثبيت لوحة تحكم Linux. هذه الخطوة مخصصة بشكل أساسي لتثبيت برامج مواقع أخرى، ولتسهيل الإدارة المبسطة للمبتدئين. بعد المقارنة، هذه اللوحة أبسط بكثير من Baota، وهي أكثر وضوحًا، ولا تحتوي على الكثير من الإعلانات، وسرعة التثبيت بضع ثوانٍ فقط، ولا تتطلب تجميع البيئة لفترة طويلة مثل Baota.
قم بتنفيذ البرنامج النصي التالي:
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
أثناء التثبيت، سيتم اكتشاف أن Docker مثبت بالفعل، ثم ستظهر صفحة تسجيل الدخول إلى الخلفية.
اتبع المطالبات، وابحث عن الخلفية وقم بتسجيل الدخول إليها. في إدارة الحاويات، يمكنك رؤية التطبيق، وهو Discourse، ويمكنك تشغيله أو إيقافه هنا.
ثم ادخل إلى الملف، وقم بتحرير app.yml. الأجزاء الرئيسية التي تحتاج إلى تعديل تم تعليقها باللغة الصينية.
## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
## Uncomment the next line to enable the IPv6 listener
#- "templates/web.ipv6.template.yml"
- "templates/web.ratelimited.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Set db_shared_buffers to a max of 25% of the total memory.
## will be set automatically by bootstrap based on detected RAM, or you can override
db_shared_buffers: "128MB"
## تعديل الحد الأقصى لحجم تحميل المرفقات
upload_size: 300m
## can improve sorting performance, but adds memory usage per-connection
#db_work_mem: "40MB"
## Which Git revision should this container use? (default: tests-passed)
#version: tests-passed
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
DISCOURSE_DEFAULT_LOCALE: zh_CN
## How many concurrent web requests are supported? Depends on memory and CPU cores.
## will be set automatically by bootstrap based on detected CPUs, or you can override
UNICORN_WORKERS: 2
## TODO: The domain name this Discourse instance will respond to
## Required. Discourse will not work with a bare IP number.
## تعديل اسم النطاق الرئيسي
DISCOURSE_HOSTNAME: bbs.izdh.net
## Uncomment if you want the container to be started with the same
## hostname (-h option) as specified above (default "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: List of comma delimited emails that will be made admin and developer
## on initial signup example 'user1@example.com,user2@example.com'
## تعديل البريد الإلكتروني للمسؤول
DISCOURSE_DEVELOPER_EMAILS: 'xxxx@gmail.com'
## TODO: The SMTP mail server used to validate new accounts and send notifications
# SMTP ADDRESS, username, and password are required
# WARNING the char '#' in SMTP password can cause problems!
## تعديل خادم البريد الإلكتروني المرسل
DISCOURSE_SMTP_ADDRESS: smtpdm.aliyun.com
## تعديل منفذ البريد الإلكتروني المرسل
DISCOURSE_SMTP_PORT: 80
## تعديل حساب البريد الإلكتروني المرسل التلقائي
DISCOURSE_SMTP_USER_NAME: xxxx@xxx.net
## تعديل كلمة مرور البريد الإلكتروني المرسل
DISCOURSE_SMTP_PASSWORD: "dj6bCRxoHt25NcD6"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
DISCOURSE_SMTP_DOMAIN: smtpdm.aliyun.com
## تعديل حساب البريد الإلكتروني المرسل التلقائي
DISCOURSE_NOTIFICATION_EMAIL: xxxx@xxx.net
DISCOURSE_SMTP_ENABLE_START_TLS: false
## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## The http or https CDN address for this Discourse instance (configured to pull)
## see https://meta.discourse.org/t/14857 for details
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## The maxmind geolocation IP address key for IP address lookup
## see https://meta.discourse.org/t/-/137387/23 for details
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## The Docker container is stateless; all data is stored in /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins go here
## see https://meta.discourse.org/t/19157 for details
## تثبيت 2 إضافات
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-solved
- git clone https://github.com/discourse/discourse-reactions
## Any custom commands to run after building
run:
- exec: echo "Beginning of custom commands"
## If you want to set the 'From' email address for your first registration, uncomment and change:
## After getting the first signup email, re-comment the line. It only needs to run once.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "End of custom commands"
بعد تعديل الملف وحفظه، عد إلى الطرفية، واستخدم الأمر أو أوقف الحاوية من الخلفية، ثم أعد بنائها. ومع ذلك، يبدو أنه إذا لم تقم بتثبيت هذه اللوحة، فلا داعي لإيقاف الحاوية. إذا قمت بإعادة البناء دون إيقاف الحاوية بعد تثبيت هذه اللوحة، فسيحدث خطأ.
./launcher stop app
./launcher bootstrap app`
انتظر حتى تكتمل إعادة البناء، وقم بتنفيذ أمر بدء تشغيل الحاوية.
./launcher start app
عند الدخول إلى Discourse، سيُطلب منك إرسال بريد إلكتروني للتفعيل. إذا لم تستلمه، يمكنك استخدام الأمر التالي لإنشاء حساب مسؤول وتجاوز هذه الخطوة مباشرة. ثم قم بتعيين اللغة إلى الصينية في الإعدادات على اليسار. يوجد أيضًا مكان لاختبار إرسال البريد الإلكتروني، وسيظهر سبب الخطأ. يمكنك المحاولة عدة مرات حتى تنجح.
./launcher enter app
rake admin:create
إذا كنت بحاجة إلى إنشاء مواقع ويب أخرى، فارجع مباشرة إلى الدليل الرسمي. الأمر بسيط جدًا ولن أقوم بشرحه بالتفصيل. يمكنك أيضًا إنشاء بيئة جديدة في الموقع، ثم تغيير أذونات الموقع إلى 777، لتتمكن من تثبيت برامج مختلفة.
المشكلة الرئيسية التي تم حلها هي أنه يمكنك تشغيل عدة مواقع ويب على خادم واحد، مما يوفر تكاليف شراء الخوادم، وهو أكثر ملاءمة للمبتدئين.
لاحقًا، اكتشفت مشكلة عند اختبار إرسال البريد الإلكتروني:
هذه الإعدادات للحاوية، وتعديلها في app.yml، وإعادة البناء لا يبدو أنها تعمل. يجب تعديلها في متغيرات بيئة الحاوية، ولكنها تستغرق 5-6 ثوانٍ فقط لتصبح سارية المفعول. لا يزال غير واضح ما إذا كان ذلك يؤثر على تثبيت الإضافات.
يبدو أن التعايش مع مواقع الويب الأخرى يتطلب إنشاء وكيل عكسي أولاً، ثم تغيير منفذ الحاوية الافتراضي 443 إلى 10443، ثم تكوين الشهادة، لتتمكن من الوصول إليها بشكل طبيعي.
وكيل عكسي
تكوين الشهادة









