نظرًا لأن Springboot هو إطار عمل للخدمات الدقيقة ، يجب أن تكون طريقة نشر الإنتاج بسيطة قدر الإمكان ، وهو اختلاف كبير عن تطبيقات الويب التقليدية. يمكن أن تضمن حاوية ويب ، مثل Tomcat ، Jetty ، وما إلى ذلك ، ولم تعد بحاجة إلى حزم التطبيق في نموذج محدد يحدده الحاوية.
بالنسبة لـ Springboot ، يمكن بدء تشغيله في حزمة جرة بسيطة واستخدام Java -jar مباشرة. هذه طريقة أنيقة للغاية ، لكنها تجلب أيضًا بعض المشكلات ، مثل: كيفية إيقاف التطبيق؟ في الماضي ، تم نشر التطبيقات في حاويات محددة ، ويمكن إيقاف البرامج النصية التي توفرها الحاوية بأناقة ، ولكن الآن يتم تضمين الحاوية وتولى البرامج النصية. ماذا علي أن أفعل؟ القتل المباشر هو وسيلة ، ولكن يبدو وقحًا للغاية ويمكن أن يجلب العديد من المشكلات غير المتوقعة.
بما أننا يمكن أن نفكر في المشكلات ، فهل سيصنعون الإطارات ، ثم قاموا بإعداد حلول لنا؟ هناك نعم ، وسأقدم بعض الحلول التي تعلمتها أدناه.
1. استخدم نقاط النهاية
في الجزء 4 من الوثائق الرسمية لفريق Springboot ، يتم تقديم العديد من الميزات المعدة لإنتاج إصدار التطبيق. من بينها ، من خلال نقطة نهاية HTTP الخاصة بالمشغل ، يمكن للمطورين مراقبة التطبيق وإدارته بسهولة.
قدم حزمة المبتدئين المحددة:
"org.springframework.boot: spring-boot-starter-actuator: $ {SpringBootversion}"افتح التكوين التاليين في application.yml لإيقاف التطبيق من خلال طلب HTTP
الإدارة: الأمان: ممكّن: falseendpoints: الإغلاق: ممكّن: صحيح
أوامر العملية كما يلي:
Curl -x post http: // المضيف: المنفذ/الإغلاق
لكن هذه الطريقة لديها مشكلة خطيرة للغاية ، أي أن أي شخص يمكنه التحكم في توقف التطبيق ، وهو أمر غير مقبول بلا شك لتطبيق الإنتاج. قد يظن بعض الأشخاص أن عنوان الارتباط بسيط للغاية الآن ، ويمكن أن يخمن غير المتصارعين بسهولة ما إذا كان يمكن تجنب هذه المشكلة إذا تم استخدام عنوان معقد للغاية. جيد جدًا ، هذا الاقتراح جيد ، دعنا نلقي نظرة على التكوينات ذات الصلة التي توفرها Springboot.
نقاط النهاية: الإغلاق: ممكّن: المسار الحقيقي: /xxx
بعد اكتمال التكوين ، لم يعد الأمر أعلاه متاحًا. يجب تحديث الأمر على النحو التالي:
curl -x post http: // المضيف: منفذ/xxx
بالطبع /xxx هو مجرد واحد قمت بتعيينه عرضًا ، يمكنك تعيين أي عنوان. على الرغم من أن الأمان أعلى قليلاً ، إلا أن هذا المستوى الأمني لا يزال غير متاح لتطبيقه على بيئة الإنتاج. هل هناك تدابير وقائية أخرى؟ نعم ، بالإضافة إلى تعديل مسار الإغلاق ، يمكننا أيضًا إضافة سياق موحد إلى جميع عمليات الإدارة ، وتكوين المنافذ المستقلة ، وتقييد وصول IP المحدد (عادةً ما يقتصر على الجهاز الأصلي). التكوين كما يلي:
الإدارة: الأمان: ممكّن: منفذ كاذب: 9001 العنوان: 127.0.0.1 مسار السياق: /مسؤول
أمر إيقاف الخدمة المتغير هو:
curl -x post http://127.0.0.1:9001/admin/xxx
هذا في الواقع آمن بما فيه الكفاية. من أجل ضمان مزيد من أمان النظام ، أضف طبقة من مصادقة HTTP الأساسية.
زيادة التبعيات الأمنية:
"org.springframework.boot: spring-boot-starter-security: $ {SpringBootversion}"قم بتعديل ملف التكوين على النحو التالي:
نقاط النهاية: الإغلاق: ممكّن: TRUE PATH: /xxxmanagement: الأمان: ممكّن: المنفذ الحقيقي: 9001 العنوان: 127.0.0.1 مسار السياق: /Assistecurity: الأساس: تمكين: المسار الحقيقي: /مسؤول المستخدم: الاسم: الجذر كلمة المرور: 123456
بعد الانتهاء من التكوين ، فإن أمر التوقف النهائي هو:
curl -x post -u root: 123456 http://127.0.0.1:9001/admin/xxx
2. سجل كخدمة نظام
بالإضافة إلى تشغيل تطبيقات Springboot مع Java -jar ، يمكنك بسهولة التسجيل كخدمة نظام Linux/Unix مع init.d أو systemd ، مما يجعل من السهل جدًا تثبيت تطبيقات Springboot في بيئة إنتاج.
في مشروع Maven ، من أجل إنشاء جرة "قابلة للتنفيذ بالكامل" ، يجب تقديم المكونات الإضافية التالية:
<reclosin> <roupiD> org.springframework.boot </rougiD> <ArtifactId> Spring-Boot-Maven-Plugin </suntifactid> <sored> 1.5.2.release </version> <fignition> <evelopmable> true </evelopmable>
في مشروع Gradle ، فإن التكوين المكافئ هو كما يلي:
الإضافات {id 'org.springframework.boot' الإصدار '1.5.2.release'} SpringBoot {execute = true}بعد اكتمال التكوين ، يمكنك تشغيل التطبيق المبني من خلال ./Application-name.jar.
أخيرًا ، نحتاج إلى تثبيت التطبيق المعبأ في خدمة init.d ، بحيث يمكن إدارتها بسهولة باستخدام UNIX/Linux. طريقة التشغيل بسيطة للغاية. تحتاج فقط إلى ربط التطبيق إلى init.d (حيث يكون Funda اسم الطلب الخاص بي ، وتحتاج إلى استبداله وفقًا للموقف عند التجربة).
ln -s/app/funda/funda.jar /etc/init.d/funda
تحقق مما إذا تم إنشاء الرابط بنجاح
ls -l /etc/init.d/funda
ابدأ الخدمة ، ويمكن لسجل التطبيق عرض الملف/اللام
Service Funda Start
أوامر مشتركة أخرى
# تحقق من خدمة تشغيل الخدمة
ملخص الأسئلة:
بعد نجاح الرابط ، لا يمكن بدء التطبيق بنجاح. يُطلب من عدم القدرة على العثور على جافا. استخدم الأمر التالي لربط الأمر JDK Java to /sbin /java.
ln -s /usr/local/jdk1.8.0_131/bin/java/sbin/java
الرابط المرجعي:
نقاط النهاية
المراقبة والإدارة عبر HTTP
خدمات UNIX/Linux
غير قادر على العثور على Java #5690
رابط المشروع:
Github: https://github.com/qchery/funda
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.