اذهب إلى المحتوى

السؤال

نشر

السلام عليكم 

في توثيق لبرنامج معيين laravel . تبثه بنجاح لكن بعض الإضافات اول مرة اسمع عنها ولم يتم ذكرها في دورة اكادمية حسوب 

مثلا لم أفهم جيدا كيف يتم هذا :

  • web sockets

You need to run the web sockets all time with the help of supervisor.
some command ->start the websocket
"php artisan websockets:serve --port=6006"
The port can change from .env file

هل هذا يفي بالغرض القيام بالتالي إنطاقا من سطر الأوامر الخاص ب cpanel مع تغيير المنفد الى الخاص بنا ؟

1111.thumb.png.0e21cf373b53de66da3721abd944ddfc.png

؟؟

Recommended Posts

  • 1
نشر

supervisor هو أحد برامج مراقبة الاجراءات أو الـ proccess monitors. وهي برامج تتيح لمستخدميها مراقبة عدد من العمليات والتحكم فيها على أنظمة تشغيل شبيهة بـ UNIX أو Unix like OS. يقترن هذا المفهوم احيانا بلارافيل عندما نحاول تشغيل طوابير الانتظار Queues أو الـويب سوكيتس او حتى عند العمل على جدولة المهام Task Sheduling أحيانا ويكون هذا في بيئة انتاجية. أي لن يتاح لنا تشغيل أوامر اعتيادية من مثل queue:work أو shedule:run أو websocket:serve عن طريق الطرفية بشكل دائم. فبمجرد اغلاقك للطرفية Terminal سيتوقف الاجراء الذي تقوم به. وهو بالطبع ما لا تريده. supervisor هو ما يجنبنا هذا الشيء.

ولتثبيت supervisor كمراقب اجراءي proccess monitor في استضافتك ستحتاج بداية وصولا كـ root وهو الامر الذي لا يكون متاحا في استضافات الويب المشتركة، وانما في استضافات VPS فقط. عدى ذلك، تثبيته واعداده يعدان أمرين سهلين. إذ ان تثبيته يكون عن طريق أوامر من مثل: 

sudo apt-get install supervisor

ثم ان ملفات اعداه لن تكون الا كـ:

[program:websocket-start]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel-example/artisan websockets:serve --port=6006
autostart=true
autorestart=true
user=forge
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/laravel-example//storage/logs/supervisord.log

يمكن الوصول الى هذا الملف عن طريق المسار ( /etc/supervisor/conf.d) في انظمة لينكس.

رغم هذا إلا ان هذا يتعذر في حالة استضافات الويب المشتركة، ولذلك فإننا نلجئ أحيانا إلى افكار أخرى قد توفي أو تخدمنا في حاجات معينة.

عن نفسي، استعمل وانصح باستعمال أحد هاته الطرق حسب الحاجة، 

  • تشغيل الأمر يدويا عن طريق الواجهة Artisan في مسار ما من مثل: 
Artisan::call('queue:work --once')

ولكن هذا لا يعد عمليا كثيرا، لأن تشغيل الأمر لن يكون متاحا لأي كان، وإنما لمشرفي الموقع او بعض من يمتلكون صلاحية الوصول الى المتحكم الذي يشغل هذا الامر. تعد هاته الطريقة عملية في حالة عدم الحاجة الى تشغيل الامر بشكل دائم أين يكون مقيدا بعملية ما.

على سبيل المثال: بعد أن ينتهي مشرف الموقع من القيام بتعديلات على المكتب الخلفي يصل بطريقة ما الى المسار الذي يمكنه من تشغيل يتم فيه ارسال رسائل تنبيهات الى المستهدفين من محررين او موظفين آخرين بالموقع.

  • تشغيل الأمر دوريا عن طريق جدولته كـ Cron job:

وهو الأمر الآخر الذي يمكننا من تشغيل الأمر بشكل دوري دون الحاجة الى ان يكون الامر مقيدا بعملية ما، على سبيل المثال: يتم تجميع جديد مقالات الموقع كل نهاية اسبوع وارسالها الى المشتركين بالقائمة البريدية. هاته الفكرة أيضا قد لا تكون متاحة في أغلب خطط الاستضافة المشتركة إلا أن بعضها يتوفر على عدد لا بأس به من المهمات التي يمكن جدولتها (هوستنجر مثلا يتيح امكانية جدولة 100 مهمة). وهو الأمر الآخر السهل التعامل معه (نرفق فقط الامر الذي نريد جدولته بجانب المدة في استمارات تقدمها خطة الاستضافة).

  • تشغيل الأمر من على الطرفية عن طريق ما يعرف بمتغيرات تقييد الوصول POSIX أين يمكنك اضافة السابقة nohup الى الامر الذي تود تشغيله من على الطرفية Terminal، ويشير هذا الى عدم ايقاف تشغيل البرنامج حتى بعد اغلاق الطرفية (بالطبع فإن هذا لا يشمل اعادة تشغيل الامر حتى بعد تعطله مثل ما تتيحه برامج مراقبة الاجراءات مثل supervisor ولذلك فإنك ستكون مسؤولا عن اعادة تشغيل الامر في حالة تعطله). فبدل طباعة الأمر: 
    php artisan websockets:serve --port=6006

    ستحتاج فقط اضافة السابقة nohup: 

    nohup php artisan websockets:serve --port=6006

    وسيمكنك اغلاق الطرفية بشكل عادي. (جرب تشغيل الامر واختبر ما ان كان استعمالها متاحا). 

يمكنك للاستزادة بالتعمق في هاته المفاهيم من خلال الاطلاع على فصول كتاب أنظمة التشغيل للمبرمجين ترجمة عن Think OS المنشورة ككتاب وكسلسلة مقالات في أكاديمية حسوب. وهو كتاب غني عن التعريف في المجال يتناول مثل هاته المفاهيم على مستوى عميق.

  • 0
نشر

الأمر المنفذ قام بتشغيل خادم websocket بنجاح على المنفذ 6005، لكن حال إغلاقك للطرفية Terminal سيتم إيقاف الخادم، لذا وبحسب نوع الاستضافة يجب إبقاء تشغيل الخادم ضمن إجرائية منفصلة دومًا، يجب التواصل مع الدعم الفني للاستضافة بخصوص أمرين:

  • إمكانية وكيفية تشغيل خادم Websocket في الخلفية دومًا
  • فتح المنفذ 6005 على الشبكة الواسعة WAN ليتمكن أي تطبيق من الوصول إليه عبر منفذ مخصص أو عنوان نطاق خاص حسب طبيعة تطبيقك
بتاريخ 4 دقائق مضت قال Brahim Semmani:

لكن بعض الإضافات اول مرة اسمع عنها ولم يتم ذكرها في دورة اكادمية حسوب 

يوجد العديد من المكتبات والإضافات ولكل منها طرقها الخاصة بتثبيتها والعمل بها، بل وتختلف أحيانًا طريقة الاستخدام من إصدار لآخر، لذا كمبرمج من المهم امتلاك مهارة البحث والقراءة ضمن توثيقات تلك المكتبات وحتى السؤال للحصول على معلومة تفيد المشروع الذي تعمل عليه

  • 0
نشر
بتاريخ 55 دقائق مضت قال Adnane Kadri:

supervisor هو أحد برامج مراقبة الاجراءات أو الـ proccess monitors. وهي برامج تتيح لمستخدميها مراقبة عدد من العمليات والتحكم فيها على أنظمة تشغيل شبيهة بـ UNIX أو Unix like OS. يقترن هذا المفهوم احيانا بلارافيل عندما نحاول تشغيل طوابير الانتظار Queues أو الـويب سوكيتس او حتى عند العمل على جدولة المهام Task Sheduling أحيانا ويكون هذا في بيئة انتاجية. أي لن يتاح لنا تشغيل أوامر اعتيادية من مثل queue:work أو shedule:run أو websocket:serve عن طريق الطرفية بشكل دائم. فبمجرد اغلاقك للطرفية Terminal سيتوقف الاجراء الذي تقوم به. وهو بالطبع ما لا تريده.

ولتثبيت supervisor كمراقب اجراءي proccess monitor في استضافتك ستحتاج بداية وصولا كـ root وهو الامر الذي لا يكون متاحا في استضافات الويب المشتركة، وانما في استضافات VPS فقط. عدى ذلك، تثبيته واعداده يعدان أمرين سهلين. إذ ان تثبيته يكون عن طريق أوامر من مثل: 


sudo apt-get install supervisor

ثم ان ملفات اعداه لن تكون الا كـ:


[program:websocket-start]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel-example/artisan websockets:serve --port=6006
autostart=true
autorestart=true
user=forge
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/laravel-example//storage/logs/supervisord.log

يمكن الوصول الى هذا الملف عن طريق المسار ( /etc/supervisor/conf.d) في انظمة لينكس.

رغم هذا إلا ان هذا يتعذر في حالة استضافات الويب المشتركة، ولذلك فإننا نلجئ أحيانا إلى افكار أخرى قد توفي أو تخدمنا في حاجات معينة.

عن نفسي، استعمل وانصح باستعمال أحد هاته الطرق حسب الحاجة، 

  • تشغيل الأمر يدويا عن طريق الواجهة Artisan في مسار ما من مثل: 

Artisan::call('queue:work --once')

ولكن هذا لا يعد عمليا كثيرا، لأن تشغيل الأمر لن يكون متاحا لأي كان، وإنما لمشرفي الموقع او بعض من يمتلكون صلاحية الوصول الى المتحكم الذي يشغل هذا الامر. تعد هاته الطريقة عملية في حالة عدم الحاجة الى تشغيل الامر بشكل دائم أين يكون مقيدا بعملية ما.

على سبيل المثال: بعد أن ينتهي مشرف الموقع من القيام بتعديلات على المكتب الخلفي يصل بطريقة ما الى المسار الذي يمكنه من تشغيل يتم فيه ارسال رسائل تنبيهات الى المستهدفين من محررين او موظفين آخرين بالموقع.

  • تشغيل الأمر دوريا عن طريق جدولته كـ Cron job:

وهو الأمر الآخر الذي يمكننا من تشغيل الأمر بشكل دوري دون الحاجة الى ان يكون الامر مقيدا بعملية ما، على سبيل المثال: يتم تجميع جديد مقالات الموقع كل نهاية اسبوع وارسالها الى المشتركين بالقائمة البريدية. هاته الفكرة أيضا قد لا تكون متاحة في أغلب خطط الاستضافة المشتركة إلا أن بعضها يتوفر على عدد لا بأس به من المهمات التي يمكن جدولتها (هوستنجر مثلا يتيح امكانية جدولة 100 مهمة). وهو الأمر الآخر السهل التعامل معه (نرفق فقط الامر الذي نريد جدولته بجانب المدة في استمارات تقدمها خطة الاستضافة).

  • تشغيل الأمر من على الطرفية عن طريق ما يعرف بمتغيرات تقييد الوصول POSIX أين يمكنك اضافة السابقة nohup الى الامر الذي تود تشغيله من على الطرفية Terminal، ويشير هذا الى عدم ايقاف تشغيل البرنامج حتى بعد اغلاق الطرفية (بالطبع فإن هذا لا يشمل اعادة تشغيل الامر حتى بعد تعطله مثل ما تتيحه برامج مراقبة الاجراءات مثل supervisor ولذلك فإنك ستكون مسؤولا عن اعادة تشغيل الامر في حالة تعطله). فبدل طباعة الأمر: 
    
    php artisan websockets:serve --port=6006

    ستحتاج فقط اضافة السابقة nohup: 

    
    nohup php artisan websockets:serve --port=6006

    وسيمكنك اغلاق الطرفية بشكل عادي. (جرب تشغيل الامر واختبر ما ان كان استعمالها متغيرا). 

للاستزادة بالتعمق في هاته المفاهيم من خلال الاطلاع على فصول كتاب أنظمة التشغيل للمبرمجين ترجمة عن Think OS المنشورة ككتاب وكسلسلة مقالات في أكاديمية حسوب. وهو كتاب غني التعريف في المجال يتناول مثل هاته المفاهيم على مستوى عميق.

شكرا جزيلا أخي @Adnane Kadri قرأت كل ماكتبت , كلامك يبعث الأمل على المزيد من الإطلاع والتعمق ولكنني الآن مستعجل قليلا ’ قبل أن أجرب آخر شيء ذكرته قلت أشاركك حواري مع الدعم الفني للإستضافة  وأخبرني ماذا افعل بعدها وشكرا لك

1111.thumb.png.4c8a9b99873276bd0d05c8cf580624c5.png

  • 0
نشر
بتاريخ 23 دقائق مضت قال Brahim Semmani:

شكرا جزيلا أخي @Adnane Kadri قرأت كل ماكتبت , كلامك يبعث الأمل على المزيد من الإطلاع والتعمق ولكنني الآن مستعجل قليلا ’ قبل أن أجرب آخر شيء ذكرته قلت أشاركك حواري مع الدعم الفني للإستضافة  وأخبرني ماذا افعل بعدها وشكرا لك

1111.thumb.png.4c8a9b99873276bd0d05c8cf580624c5.png

أظن أن فريق الدعم يحاول إخبارك أن المنفذ المشار اليه لن يتم حجزه عن طريق أي خدمة أخرى، يمكنك الآن تشغيل الامر بشكل عادي (تذكر اضافة السابقة nohup). في حالة مواجهتك لمشكلة ما، يمكنك مراسلة الدعم والتساؤل حول ما ان كان استعمال متغيرات تقييد الوصول POSIX من مثل nohup متاحا أو لا. جرب بعد تشغيل الامر واغلاق الطرفية واختبر الامر.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...