البرمجة

كيفية تكوين خدمة systemd لإعادة تشغيل تطبيق Rails مع Puma

لتحقيق إعادة تشغيل تطبيق Rails الخاص بك باستخدام Puma عند إعادة تشغيل النظام أو في حالة توقف الخادم، يجب عليك ضبط ملف الخدمة systemd الخاص بـ Puma بشكل صحيح. وفقًا للمعلومات التي قدمتها، يبدو أن السبب في عدم نجاح الإعادة التلقائية لتشغيل Puma هو أن ملف الخدمة الخاص بـ systemd الذي أنشأته لا يحتوي على الإعدادات الصحيحة.

يبدو أنك استخدمت القيمة Type=simple في ملف الخدمة، وهذا يعني أن systemd يتوقع أن العملية التي تقوم بتشغيلها (Puma) ستبدأ وتعمل في الخلفية. ولكن، يبدو أن Puma يبدأ عملية daemon بناءً على الأمر الذي تم توضيحه من خلال Capistrano. لذلك، يجب تغيير القيمة Type إلى forking لتعطيل التشغيل البسيط وتمكين التشغيل كعملية تفرع.

بالإضافة إلى ذلك، يجب أن يتضمن ملف الخدمة تعليمات User و Group لتحديد المستخدم والمجموعة التي سيتم تشغيل Puma بها، مثلما تفعل Capistrano.

قم بتحرير ملف الخدمة الخاص بـ Puma (puma.service) ليبدو مثل الكود التالي:

ini
[Unit] Description=Puma HTTP Server After=network.target [Service] Type=forking User=my-user Group=my-user WorkingDirectory=/home/my-user/apps/MyApp/current ExecStart=/home/my-user/.rvm/bin/rvm default do bundle exec puma -C /home/my-user/apps/MyApp/shared/puma.rb --daemon Restart=always [Install] WantedBy=multi-user.target

بعد تعديل ملف الخدمة، قم بإعادة تحميل تكوينات systemd وإعادة تشغيل الخدمة باستخدام الأوامر التالية:

bash
sudo systemctl daemon-reload sudo systemctl restart puma.service

بعد ذلك، يجب أن يتم تشغيل Puma تلقائيًا عند إعادة تشغيل النظام وبعد أي توقف غير متوقع.

المزيد من المعلومات

بالطبع! إليك بعض المعلومات الإضافية التي قد تفيدك في تكوين خدمة systemd لـ Puma:

  1. تحديد بيئة التشغيل: قد تحتاج إلى تحديد بيئة التشغيل لـ Puma في ملف الخدمة باستخدام متغير البيئة RAILS_ENV. يمكنك إضافة السطر التالي في قسم [Service]:

    ini
    Environment=RAILS_ENV=production
  2. تحديد ملف تكوين Puma: تأكد من أن مسار ملف تكوين Puma المحدد في السطر ExecStart صحيح. يجب أن يكون هذا الملف يحتوي على جميع الإعدادات اللازمة لتشغيل Puma بشكل صحيح.

  3. تحديد مستخدم التشغيل: استخدم مستخدمًا غير الجذر (non-root user) لتشغيل Puma لأسباب أمانية. تأكد من أن مستخدم الخدمة (User و Group) لديه الصلاحيات الكافية للوصول إلى الملفات والمجلدات اللازمة لتشغيل التطبيق.

  4. تسجيل الأخطاء: قم بتحديد مكان تسجيل الأخطاء والإخراج القياسي لـ Puma في ملف الخدمة. يمكنك استخدام الخيارات -e و -o مع الأمر ExecStart لتحديد ملفات السجل المناسبة.

  5. التحقق من حالة الخدمة: للتحقق من حالة الخدمة والحصول على مزيد من المعلومات حول الأخطاء، استخدم الأمر التالي:

    bash
    systemctl status puma.service
  6. التحقق من سجل النظام: قم بفحص سجل النظام (syslog) أو سجل الخدمة (journalctl) للحصول على معلومات إضافية حول سبب فشل بدء تشغيل Puma.

بعد تعديل ملف الخدمة وتطبيق التغييرات، قم بإعادة تحميل تكوينات systemd وإعادة تشغيل الخدمة باستخدام الأوامر التالية:

bash
sudo systemctl daemon-reload sudo systemctl restart puma.service

هذه الإجراءات يجب أن تساعدك في إعادة تشغيل تطبيقك Rails بنجاح باستخدام Puma وخدمة systemd.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر