إعداد Discourse للتطوير على Fedora Linux

هذا الدليل تم اختباره مقابل تثبيت جديد لـ Fedora 31 و 33، ولكنه قد يعمل على إصدارات أقدم تستخدم أيضًا dnf كأداة لإدارة الحزم. هذا ليس دليلًا رسميًا ولكنه قد يكون مفيدًا للمطورين الآخرين الذين يستخدمون Fedora. يعتمد هذا إلى حد كبير على دليل تطوير أوبونتو، مع تغييرات للحزم المختلفة لـ dnf. الافتراض هو أنك لم تقم بتثبيت أي من الحزم بالفعل، على الرغم من أن معظمها سيتم تخطيه بواسطة الأدوات إذا كانت مثبتة بالفعل.

إذا كنت تتطلع إلى تثبيت Discourse لـ بيئة إنتاج، ففضل تعليمات تثبيت Docker على github.

تثبيت حزم النظام والتطوير المطلوبة

sudo dnf update
sudo dnf install -y "@development-tools" git rpm-build zlib-devel ruby-devel readline-devel libpq-devel ImageMagick sqlite sqlite-devel nodejs npm curl gcc g++ bzip2 openssl-devel libyaml-devel libffi-devel zlib-devel gdbm-devel ncurses-devel optipng pngquant jhead jpegoptim gifsicle oxipng

تثبيت حزم npm المطلوبة

sudo npm install -g svgo pnpm

تثبيت وإعداد postgres

sudo dnf install postgresql-server postgresql-contrib
sudo postgresql-setup --initdb --unit postgresql
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo -u postgres -i createuser -s $USER

تثبيت وإعداد redis

sudo dnf install redis
sudo systemctl enable redis
sudo systemctl start redis

تثبيت rbenv و ruby-build و ruby

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
~/.rbenv/bin/rbenv init
printf 'export PATH="$HOME/.rbenv/bin:$PATH"\n' >> ~/.bashrc
printf 'eval "$(rbenv init - --no-rehash)"\n' >> ~/.bashrc
source ~/.bashrc
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
# تأكيد أن التثبيت صحيح
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
rbenv install 2.7.1
rbenv global 2.7.1
rbenv rehash

تثبيت تبعيات Ruby

gem update --system
gem install bundler mailcatcher rails

استنساخ كود Discourse

git clone https://github.com/discourse/discourse.git ~/discourse
cd ~/discourse

تثبيت تبعيات Discourse

bundle install
pnpm install

إنشاء قواعد البيانات المطلوبة وتحميل المخطط

bundle exec rake db:create db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

اختبار التثبيت عن طريق تشغيل الاختبارات

bundle exec rake autospec

تشغيل التطبيق

bundle exec rails server

يجب أن تكون الآن قادرًا على رؤية صفحة إعداد Discourse على http://localhost:3000.

لمزيد من الإعداد، راجع أدلة التثبيت الرسمية الحالية.


يتم التحكم في إصدار هذه الوثيقة - اقترح التغييرات على github.

27 إعجابًا

في تثبيت rbenv و ruby-build و ruby، لم يعد عنوان URL لبرنامج rbenv-doctor يعمل (يبدو أن الفرع قد تم تغيير اسمه من master إلى main)، الأمر الصحيح الآن هو:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
إعجابَين (2)

شكراً على المعلومات @nicolas-jaussaud، لقد قمت بتحديث المنشور الأصلي.

على سبيل المثال، أفضل الآن استخدام chruby و ruby-install بدلاً من rbenv.

إعجابَين (2)

واجهت مشكلة أثناء تشغيل bundle install حيث أن Fedora الآن تقوم بتعطيل نقل الملفات افتراضيًا.

يحدث الخطأ عند محاولة تثبيت gem sprockets وينتهي بالرسالة:

transport 'file' not allowed

لا أعرف ما هي الطريقة الصحيحة للقيام بذلك، ولكن يمكنك السماح مؤقتًا للنقل غير الآمن:

git config --global protocol.file.allow always
# قم بتشغيل إعداد discourse هنا
git config --global protocol.file.allow never

بعد ذلك، واجهت خطأً كهذا عند تشغيل db:migrate:

At /home/hhyyrylainen/Projects/discourse/lib/site_setting_extension.rb:199:in `public_send`
Deprecation notice: `SiteSetting.enable_personal_messages` has been deprecated. Please use `SiteSetting.personal_message_enabled_groups` instead. (removal in Discourse 3.0) 
At /home/hhyyrylainen/Projects/discourse/lib/site_setting_extension.rb:199:in `public_send`
#<Thread:0x00007f94c3342600 /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:83 run> terminated with exception (report_on_exception is true):
/home/hhyyrylainen/.gem/ruby/3.2.0/gems/activerecord-7.0.4.3/lib/active_record/connection_handling.rb:309:in `connection_pool': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished)
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management/rails_61_compat.rb:8:in `current'
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:115:in `current_db_hostnames'
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:111:in `current_hostname'
	from /home/hhyyrylainen/Projects/discourse/lib/discourse.rb:232:in `handle_job_exception'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:114:in `rescue in do_work'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:113:in `do_work'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:85:in `block (2 levels) in start_thread'
/home/hhyyrylainen/.gem/ruby/3.2.0/gems/activerecord-7.0.4.3/lib/active_record/connection_handling.rb:309:in `connection_pool': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished)
	from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:79:in `with_connection'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:96:in `do_work'
	from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:85:in `block (2 levels) in start_thread'

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

بالنسبة لبيئة الاختبار، لم أحصل على نفس الخطأ ولكنني حصلت على خطأ بشأن نقص oxipng، والذي لا يبدو أنه متاح كحزمة Fedora.

بعد ذلك، لم أواجه أي مشاكل أخرى، كل شيء لا يزال يعمل بشكل جيد على Fedora 38. على الرغم من أنني قمت سابقًا بتثبيت rbenv باستخدام بعض تعليمات الإعداد الأخرى.

عند تشغيل bundle exec rake autospec، حصلت على بعض فشل الاختبارات (135) ولكن يبدو أن لدي إعداد تطوير يعمل إلى حد كبير.

إعجابَين (2)

لقد قمت بتشغيل إصدار المطور منذ بعض الوقت ولكن إصدار الإنتاج كان صعبًا للغاية بالنسبة لي. .

لقد اتبعت هذا الدليل لتثبيته على Fedora 40 Workstation، وكان عليّ إضافة oxipng إلى تثبيتات التوزيعة.
sudo dnf install oxipng

3 إعجابات

شكراً لإعلامنا، لقد قمت بتحديث التوثيق في هذا الالتزام: docs/fedora-setup: include oxipng package (#14) · discourse/discourse-developer-docs@eb51e54 · GitHub.

إعجاب واحد (1)

لقد علقت بعد التثبيت اليوم على Fedora 41 مع المشكلة التالية عند الاتصال بـ localhost:3000 والنقر على “تسجيل”:
“لم يتم تحديد أي رسائل بريد إلكتروني للمسؤول أثناء الإعداد”؛ تقدم الرسالة كيفية إضافة عنوان بريد إلكتروني للمسؤول.

لقد فشلت في إضافة حساب مسؤول بنجاح باتباع هذا الإجراء بسبب خطأين عند استخدام ./launcher enter app:
1 درجة الأولى تم حل الخطأ كان: لا يوجد ملف app.yml موجود → نسخت sampleapp.yml من مجلد العينة إلى مجلد الحاوية، ثم عدلت لإضافة عناوين البريد الإلكتروني، ثم قمت بإعادة البناء باستخدام /var/discourse/launcher rebuild app
2 درجة الخطأ الثاني لم يتم حله:
استجابة خطأ من الخادم: لا توجد حاوية: app
إذا استخدمت أوامر rake لإنشاء مسؤول، فإنها تخبرني أنه لم يتم العثور على rakefile

هل يمكن لأي شخص المساعدة؟

هذا التثبيت لا يستخدم دوكر، لذا لا يمكنك الدخول إلى حاوية.

جرب إنشاء مسؤول من مجلد Discourse باستخدام هذا الأمر:

bin/rails admin:create
إعجاب واحد (1)

مرحباً جوز الهند، أنت سريع الاستجابة وفعال، شكراً جزيلاً!
يعرض الأمر gem bunder missing، والذي قمت بتثبيته باستخدام gem install bundler -v 2.6.2 ومن ثم تمكنت من تطبيق حلك بنجاح!

إعجابَين (2)

حاولت للتو تشغيل تثبيت محلي وواجهت مشاكل مع pgvector. هذا على Fedora 42 و Postgres16. الإصدار المعبأ من pgvector هو 0.6.2 ويبدو أنني بحاجة إلى الترجمة من المصدر للحصول على إصدار أحدث.

ثم واجهت تعارضات أثناء محاولة بناء pgvector، والذي يبدو أنه يتطلب حزمة postgresql-private-devel التي كانت لديها طلبات متعارضة مع libpq-devel.

تم حلها عن طريق:

  •  sudo dnf install postgresql-server-devel --allowerasing
    
  • بناء pgvector
  • التحقق من الإصدار المثبت
    sudo -u postgres psql discourse_development -c "SELECT * FROM pg_available_extensions WHERE name = 'vector';"
    
  •  sudo systemctl restart postgresql
    
إعجابَين (2)