هل يمكننا استخدام البرامج النصية لبدء التشغيل إلى الأبد بالإضافة إلى حل المشكلات المذكورة أعلاه؟ الإجابة هي بالطبع نعم ، لكنها مزعجة بعض الشيء ، وتفتقر الرسمي إلى الأبد إلى مستندات التكوين التفصيلية. لقد أخذت أيضًا بعض الالتفاف عند التكوين ، لذلك سأذهب إلى التفاصيل أدناه.
ملاحظة: البيئة التجريبية لهذه المقالة هي خادم Ubuntu 12.04 LTS X86_64 ، والتكوين على CentOS أبسط.
في البداية ، فكرت في إضافة بداية إلى الأبد xxx to /etc/rc.local ، لكنني وجدت أن Ubuntu (نفس الأنظمة الأخرى) ليست سيئة بالنسبة لي. التناقض الرئيسي هو أن MongoDB يمكن أن يعمل باستخدام هذه الطريقة ، ولكن لا يمكن إلى الأبد. في اليأس ، يجب أن أعتبرها من منظور /etc/init.d.
الفرضية هي أن تجعل إلى الأبد أولاً. الطريقة بسيطة للغاية. فقط قم بتنفيذ الأمر التالي:
تثبيت NPM إلى الأبد -g
بعد اكتمال التثبيت ، استخدم برنامج عقدة بسيط لاختباره:
ابدأ إلى الأبد test.jsforever stop test.jsforever RESTART TEST.JS
طالما لم تتم مطالبة الخطأ ، فهذا يعني أن إلى الأبد قابل للاستخدام ، أي أن الشروط الأساسية لاستخدام إلى الأبد لفتح مشروع عقدة في الخلفية قد تم استيفاءها بالفعل ، والباقي هو كتابة برنامج نصي بدء التشغيل.
المحتوى الأساسي للنص كما يلي ، وذلك بفضل المؤلف الأصلي على عمله الشاق:
#!/bin/bash ### start init info info# توفر: xiyoulib# المطلوبة: $ all# stop: $ all# الافتراضية: 2 3 4 5# الافتراضي المتوقف: 0 1 6# description spression: start daemon at boot time# الوصف: تمكين الخدمة التي توفرها Daemon. node.jsdeamon =/node.js/xiyoulibnodeexpress/bin/www #يجب أن تملأ ملف البرنامج النصي بدء التشغيل الخاص بك من مشروع node الخاص بك log =/node.js/log/log #Optional ، دليل ملف السجل pid =/node.js #قم بإزالة دليل تثبيت البرنامج القابل للتنفيذ هنا ، Mine IS/usr/local/binexport node_path = $ node_path:/usr/local/lib/node_modules #yere هو مسار مكتبة فئة العقدة #لا يحتاج المحتوى أدناه إلى تعديل node = nodeforever = forever $ 1 "في البداية) توقف) $ forever stop -pidfile $ pid $ deamon ؛؛ توقف) $ forever stop -pidfile $ pid ؛؛ RESTARTALL) $ forever RESTARTALL -pidfile $ pid ؛؛ إعادة التحميل | إعادة التشغيل) $ إلى الأبد إعادة تشغيل -l $ log -pidfile $ pid -a $ deamon ؛؛ قائمة) $ forever ؛؛ *) صدى "الاستخدام: /etc.init.d/node {ابدأ | توقف | إعادة التشغيل | إعادة التشغيل | stappall | retartall | list}" exit 1 ؛؛ esacفيما يلي تذكير: من الأفضل إنشاء دليل في دليل الجذر لمشروع العقدة ، مثل /node.js ، ثم ضبط الإذن على 754 ، والذي يمكن أن يتجنب المتاعب الناجمة عن بعض مشاكل الإذن!
نظرًا لأنني أستخدم نظام خادم Ubuntu ، يتم أيضًا تكوين خدمة بدء تشغيل MongoDB ، ويتم إضافة العبارات التالية إلى برنامج init.d:
# المطلوب: $ All# stop: $ all
لذلك عندما أضيفه بنفسي في المستقبل ، سيطرح النظام خطأ. لذلك في البرنامج النصي بدء التشغيل لمشروع العقدة ، أضفت السلسلة السابقة من تعليقات التفسير لنظام خادم Ubuntu لإعداده. إذا كان على centos ، يجب ألا تحدث مشاكل مماثلة. إيلاء اهتمام خاص لهذا!
أي معلومات التفسير التالية:
### start init info# توفر: xiyoulib# المطلوبة: $ all# stop: $ all# الافتراضية الافتراضية: 2 3 4 5# stop stop: 0 1 6# short-description: start daemon at boot time# description: enable service by daemon. ### end init info info info info info info
بعد تحرير البرنامج النصي ، استخدم توجيه CHKCONFIG-قائمة للتحقق مما إذا كانت الخدمة التي أضفتها فعالة ، أي أن كل 3 و 5 يجب أن يكونوا على الإطلاق في البداية.
إذا لم يتم تعيين 3 و 5 على تشغيل ، فيرجى تنفيذ CHKConfig -على مستوى 35 [اسم الخدمة الخاص بك]. قد يقوم خادم Ubuntu بالإبلاغ عن بعض التحذيرات ، ولكن طالما أنه يمكن تغيير 3 و 5 من الخدمة المطلوبة إلى تشغيل ، يمكن تجاهل أخطاء أخرى (أشعر أن هذا هو عمل النظام الخاص).
بعد اكتمال الإعداد ، يمكن بدء مشروع العقدة على Linux. يمكنك إيقاف التشغيل -R الآن محاولة معرفة ما إذا كان يمكن بدء ذلك. بعد البدء ، يمكنك الوصول مباشرة إلى رقم المنفذ والدليل الظاهري الذي تقوم بتعيينه. إذا كنت تريد ذلك ، فسيتم القيام بالمهمة!
ولكن إذا كان هذا خطأ ، فتحقق من بعض البرامج النصية بعناية وقم بإجراء التعديلات ذات الصلة بناءً على الخطأ. بعد كل شيء ، لقد جربته أيضًا!