دليل النشر

نشر تطبيق Ruby on Rails على خادم VPS

انشر على VPS Cloud →

التطوير3 دقيقة قراءة

نشر تطبيق Ruby on Rails على خادم VPS

يظلّ Ruby on Rails إطار عمل بالغ الإنتاجية لبناء تطبيقات ويب متكاملة. ونشره على خادم VPS خاص بك، مع Puma وPostgreSQL وSidekiq، يمنحك تحكّمًا كاملًا في المهام الخلفية والأصول والتوسّع، دون الاعتماد على منصّة PaaS باهظة التكلفة.

لماذا الاستضافة الذاتية لـ Rails على خادم VPS؟

يجمع تطبيق Rails في بيئة الإنتاج بين عدّة عمليات: خادم الويب Puma، وعمّال Sidekiq للمهام غير المتزامنة، وPostgreSQL وRedis. تفرض المنصّات المُدارة رسومًا على كلّ dyno أو عامل على حدة، مما يرفع الفاتورة بمجرّد نموّ التطبيق. على خادم VPS، تتعايش جميع هذه العمليات على خادم واحد تتحكّم فيه: تضبط عدد خيوط وعمّال Puma، وتُشغّل من عمّال Sidekiq بقدر ما تسمح به الذاكرة، وتُدير التصريف المسبق للأصول والتخزين المؤقّت. ومع Rails 7 وما بعده، يزيد التكامل الأصلي مع Propshaft وSolid Queue وSolid Cache من تبسيط الاستضافة الذاتية. تحافظ على تكلفة ثابتة وحزمة شفّافة بالكامل.

الفوائد الملموسة لاستضافة Rails ذاتيًا

  • Puma وSidekiq على خادم VPS نفسه، دون فرض رسوم على كلّ عامل على حدة.
  • ضبط عدد خيوط وعمّال Puma وفقًا للأنوية والذاكرة.
  • مهام خلفية غير محدودة مع Sidekiq/Redis أو Solid Queue.
  • PostgreSQL تحت السيطرة: الفهارس ونسخ pg_dump الاحتياطية وضبط الاتصالات.
  • التصريف المسبق للأصول والتخزين المؤقّت لـ Rails يُدار محليًا، دون تكلفة إضافية.
  • تكلفة ثابتة وقابلة للتوقّع، مثالية لتطبيقات SaaS والتطبيقات المهنية المتنامية.

المتطلّبات العتادية والبرمجية

يستهلك Rails ذاكرة أكثر من المتوسّط بسبب عمّال Puma وSidekiq: استهدف 2 جيجابايت كحدّ أدنى، و4 جيجابايت بمجرّد تشغيل عدّة عمّال أو إضافة Redis وElasticsearch. ثبّت Ruby 3.2+ عبر rbenv أو asdf، أو استخدم صورة Docker باسم ruby:3.3-slim. جهّز PostgreSQL 15، وRedis لـ Sidekiq والتخزين المؤقّت، وNode.js إذا كنت تستخدم مُجمِّع JS، وBundler. يعمل Nginx كواجهة أمامية لـ TLS والأصول الثابتة. يلزم توجيه نطاق نحو خادم VPS. عيّن RAILS_ENV=production وأنشئ SECRET_KEY_BASE.

نشر Rails خطوة بخطوة

01

تجهيز الخادم والتطبيق

عبر SSH، ثبّت Ruby 3.3 وPostgreSQL وRedis (أو Docker). استنسخ المستودع واضبط المتغيّرات: DATABASE_URL وREDIS_URL وRAILS_MASTER_KEY وSECRET_KEY_BASE. شغّل bundle install --without development test.

02

التصريف المسبق للأصول والترحيل

نفّذ RAILS_ENV=production bin/rails assets:precompile ثم bin/rails db:migrate. مع Rails 7+، يبسّط Propshaft وimportmap خطّ أنابيب الأصول دون بناء Node معقّد.

03

تشغيل Puma

ابدأ الخادم عبر bundle exec puma -C config/puma.rb، مع ضبط WEB_CONCURRENCY (العمّال) وRAILS_MAX_THREADS في البيئة. اجعل Puma يستمع على مقبس Unix للحصول على أداء أفضل مع Nginx، وأدر العملية عبر systemd.

04

تشغيل عمّال Sidekiq

أنشئ خدمة systemd تُشغّل bundle exec sidekiq -e production -C config/sidekiq.yml، مع إعادة تشغيل تلقائية. اضبط عدد خيوط Sidekiq وفقًا لحمل المهام والذاكرة المتاحة.

05

إعداد Nginx وSSL

وجّه Nginx نحو مقبس Puma عبر upstream وproxy_pass، قدّم public/assets مباشرةً بتخزين مؤقّت طويل، ثم احصل على شهادة Let's Encrypt مع Certbot لـ نطاقك.com. أجبر على HTTPS والتجديد التلقائي.

06

أتمتة عمليات النشر

ضع سكريبتًا أو Kamal/Capistrano يسلسل git pull وbundle install وdb:migrate وassets:precompile وإعادة تشغيل Puma وSidekiq. النشر الذري بالروابط الرمزية يتيح التراجع فورًا عند أي مشكلة.

راقب بصمة الذاكرة لـ Puma: تنتفخ عمليات Ruby بمرور الوقت بسبب تجزّؤ الذاكرة. فعّل jemalloc كمُخصِّص ذاكرة (عبر LD_PRELOAD) لتقليص RAM الذي تستهلكه العمّال بشكل ملحوظ، وأعدّ إعادة تشغيل دورية لعمّال Puma. على خادم VPS حيث الذاكرة هي المورد الأكثر تقييدًا لـ Rails، هذا الضبط وحده يمكن أن يُغني عن الترقية.

نشر Rails بنقرة واحدة من Marketplace

يقدّم Marketplace ServOrbit قالب Rails Stack يُهيّئ تلقائيًا Ruby 3.2 وPuma وNginx وPostgreSQL وRedis على خادم VPS Ubuntu 24.04 في دقائق. اختر خادم VPS، حدّد القالب، واحصل على بيئة إنتاج جاهزة لاستقبال تطبيق Rails — دون أي أوامر نظام. يثبّت التهيئة سلسلة الأدوات الكاملة؛ يبقى استنساخ مستودعك وتشغيل bundle install وdb:migrate وassets:precompile، ثم بدء Puma.

بيئة Rails جاهزة في دقائق

يُهيّئ قالب Rails Stack تلقائيًا Ruby 3.2 وPuma وNginx وPostgreSQL وRedis — جاهز لاستضافة تطبيق Ruby on Rails في بيئة الإنتاج.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـ العربية والفرنسية والإنجليزية.