حسنًا، فهمت، نعم، أنظمة تشغيل مختلفة وما إلى ذلك. لقد طلب مني شخص بالفعل كيفية القيام بذلك - سأنشر هنا في حال.
يحتاج المرء إلى Ruby 3.2.x (عبر rbenv، لذلك لن تكون تحت رحمة نظام التشغيل)، و Node v16.19.x/npm 8.19.x، و PostgreSQL (ربما أي إصدار فوق 11).
- لقد أنشأت ملف
.ruby-version، والذي حدد إصدار Ruby الذي قمت بتثبيته (3.2.2).
- قمت بتشغيل
bundle وتم بناء جميع الجواهر (gems) بشكل جيد.
- داخل PostgreSQL نفسه، كان عليّ إعداد قاعدة البيانات:
CREATE DATABASE discourse;
CREATE USER discourse WITH password 'fA....';
GRANT ALL PRIVILEGES ON DATABASE discourse TO discourse;
\c discourse
GRANT ALL ON SCHEMA public TO discourse;
لقد فوجئت بأن database.yml لا يأخذ متغيرات production (يبدو هذا مخالفًا جدًا لعرف Rails). كانت جميع إعدادات قاعدة البيانات في config/discourse.conf، جنبًا إلى جنب مع قيم SMTP. قمت بملء تلك.
ثم قمت بتشغيل ترحيلات قاعدة البيانات:
bundle exec rails db:migrate
كل شيء سار على ما يرام، ونجحت الترحيلات.
- في
config/sidekiq.yml، بعد قسم development، أضفت:
production:
:concurrency: 2
:queues:
- [critical, 2]
- [default, 1]
- [low]
- [ultra_low]
- ثم قم بتحرير
lib/tasks/assets.rake، حوالي السطر 151، أضف:
harmony: true,
بحيث يبدو كالتالي:
uglified, map =
Uglifier.new(
comments: :none,
harmony: true,
source_map: {
filename: File.basename(from),
output_filename: File.basename(to),
},
).comp
وقم بتثبيت حزم npm التالية:
npm install terser
npm install -g uglify-js@"<3"
ثم قم ببناء الأصول:
RAILS_ENV=production bundle exec rake assets:precompile
وها هي! الآن يجب أن يعمل هذا:
bundle exec sidekiq -e production -C config/sidekiq.yml
bundle exec puma --config config/puma.rb -e production
هذا يشغل خادم الويب sidekiq و puma.
(أرخص بكثير، والمزيد من التحكم، على سبيل المثال، لدي Ruby 3.2.2 يعمل بالفعل). قضيت معظم الوقت في التعامل مع المشكلات (مثل البحث عن قيم production لأنها لم تكن في المكان الذي ينبغي أن تكون فيه). ولكن بخلاف ذلك، كان الأمر سريعًا جدًا!