كيفية نشر تطبيق Spring Boot الخاص بك على VPS الخاص بك؟ دليل شامل يقارن بين 5 طرق مختلفة لتحميل JAR، والبناء المستند إلى Git، وsystemd، وDocker، وKubernetes.
على الرغم من أن إطلاق مشاريع Spring Boot يعد عملية بسيطة نسبيًا، إلا أن إنشاء خط أنابيب للنشر المستدام يعد مهمة متعبة لمعظم المطورين. يستغرق تحميل ملف JAR إلى الخادم 5 دقائق؛ لكن إضافة خدمة systemd، nginxverse proxy، Let’s Encrypt SSL، إعادة التشغيل التلقائي، تدوير السجل، الفحص الصحي إليها قد يستغرق 2-3 أيام.
في هذا الدليل، سنقارن 5 طرق مختلفة لنشر مشروع Spring Boot على VPS؛ وأخيرًا، سنوضح لك كيفية القيام بذلك عبر لوحة VDS بأسرع طريقة.
الإعداد: خادم VPS نظيف
بالنسبة لأي طريقة، يكفي ما لا يقل عن 2 وحدة معالجة مركزية افتراضية + 4 جيجابايت من ذاكرة الوصول العشوائي + Ubuntu 22.04+. إذا كان تطبيق Spring Boot الخاص بك لا يستخدم كومة كبيرة، فسيتم تشغيله أيضًا على VPS بذاكرة وصول عشوائي (RAM) سعة 2 جيجابايت.
لنقم بتثبيت الحزم الضرورية على الخادم:
ص0
الطريقة الأولى: JAR + systemd (يدوي، كلاسيكي)
الطريقة الأساسية. قمت بنسخ JAR إلى الخادم باستخدام scp:
ص1
تكتب وحدة systemd ( P0 ):
ص2
تبدأ الخدمة:
ص3
يمكنك إضافة تكوين الوكيل العكسي Nginx، والحصول على شهادة Let’s Encrypt، وتثبيت دوران السجل…
الإيجابيات: تحكم كامل، لا توجد تبعيات.
السلبيات: نفس الطقوس في كل عملية نشر. هناك الكثير من الأخطاء البشرية. التحديث يستغرق وقتا.
الطريقة الثانية: التخزين باستخدام Docker
يمكنك إضافة ملف Dockerfile إلى مشروع Spring Boot:
ص4
تقوم بالإنشاء والدفع إلى سجل عامل الإرساء والسحب + التشغيل على الخادم.
الإيجابيات: إمكانية النقل والتحكم في الإصدار وسهولة التراجع.
السلبيات: إدارة تسجيل Docker، وتحسين حجم الصورة، ودليل nginx + SSL.
الطريقة الثالثة: إنشاء عامل الميناء
إذا كانت هناك خدمات متعددة (DB، Redis، وما إلى ذلك)، فإن Docker Compose يبسط الأمور. لكنك لا تزال بحاجة إلى إدخال SSH إلى الخادم وتشغيل P0. تقوم بتثبيت CI/CD بنفسك.
الطريقة الرابعة: Kubernetes (K3s)
الخيار المهني. تكتب بيانات النشر والخدمة والدخول الخاصة بك وتطبقها على المجموعة. تحديثات متدرجة وقابلة للتطوير وفحوصات صحية مدمجة.
الإيجابيات: معيار الصناعة، قابل للتطوير، ومرن.
السلبيات: منحنى التعلم حاد. يامل أيضا. معقدة للغاية بالنسبة لتطبيق بسيط.
أي واحد يجب أن نتعلم؟
تعد معرفة أساسيات systemd وDocker وKubernetes أمرًا ذا قيمة في مسيرة المطورين المهنية. ولكن ليس عليك استخدامها ** في كل عملية نشر **. هدفان مختلفان: التعلم والإنتاج.
الطريقة الخامسة: النشر بنقرة واحدة باستخدام لوحة VDS
جميع الطرق الأربعة المذكورة أعلاه فعالة، ولكن جميعها لها تكاليف العمالة. إذا كان وقت فريق التطوير الخاص بك ثمينًا، فيمكن للأتمتة أن تتولى الكثير من هذه العملية.
01
أضف المشروع إلى اللوحة
إذا كان GitHub متصلاً، فسيتم تحديد الريبو من القائمة؛ إذا لم يكن الأمر كذلك، فسيتم إدخال عنوان URL. يوجد أيضًا خيار تحميل JAR.
02
الكشف تلقائيا عن استراتيجية البناء
إذا كان هناك pom.xml، فسيتم استخدام Maven، وإذا كان هناك build.gradle، فسيتم استخدام Gradle، وإذا كان هناك Dockerfile، فسيتم استخدام Docker build.
03
إضافة قاعدة بيانات تلقائية (اختياري)
ضع علامة في مربع PostgreSQL؛ تنشئ اللوحة قاعدة بيانات + مستخدم + كلمة مرور، ويتم إدخال DATABASE_URL في env.
04
قم بتوصيل مجال مخصص
قم بتوجيه سجل DNS A إلى عنوان IP الخاص بالخادم؛ تحصل اللوحة تلقائيًا على شهادة Let's Encrypt.
05
اضغط على نشر
تبدأ اللوحة خط أنابيب متوازي: البناء، DB، SSL، nginx، التحقق من الصحة. يعيش في ~ 90 ثانية.
~90 ثانية
جيت دفع للعيش
Build + DB + SSL + nginx كلها متوازية. بعد النشر الأول، يصبح أقصر مع ذاكرة التخزين المؤقت.
كل عملية نشر لاحقة، git Push
بعد النشر الأول، مع كل دفعة إلى GitHub، تلتقط اللوحة خطاف الويب وتقوم بتشغيل الخطوات المذكورة أعلاه مرة أخرى. التراجع هو أيضًا نقرة: يظهر “استعادة” للنشر الناجح السابق.
معلمات JVM، التحقق من الصحة، السجل
من واجهة اللوحة:
يتم تحديد معلمات JVM ( P0 , P1 , P2 ).
تم تحديد نقطة نهاية فحص السلامة (P3)، ويتم تحديد الفاصل الزمني
تدوير السجل نشط تلقائيًا (5 ملفات، حجم كل منها 100 ميجابايت)
يتم تعيين حد الذاكرة/وحدة المعالجة المركزية على أساس كل مشروع على حدة
متغيرات البيئة يتم تخزينها بشكل آمن (لا يتم كتابتها في ملف)
تكامل Nexus + SonarQube
هناك احتياجان شائعان يأتيان مع مشاريع Spring Boot: مستودع القطع الأثرية وتحليل جودة التعليمات البرمجية. توفر وحدة systemServices الخاصة بلوحة VDS هذين الأمرين بطريقة النقر للتثبيت:
Nexus Repository Manager، يتم دفع ملفات JAR هنا، ويتم تحديث Maven P0 تلقائيًا
SonarQube، يتم تشغيل تحليل جودة التعليمات البرمجية على كل إصدار، ويتم دمج التقرير في اللوحة
~ 2 ساعة
دليل نيكزس + SonarQube
التقط صورة Docker وقم بتكوينها لـ Nexus
ضبط مستوى الصوت + المنفذ + الوكيل العكسي
إنشاء كلمة مرور المسؤول، وتحديد المستودع
نفس العملية بالنسبة لـ SonarQube
قم بتحرير إعدادات Maven.xml يدويًا
ربط خطاف الويب
~2 دقيقة
انقر للتثبيت من اللوحة
"تثبيت" Nexus من علامة التبويب "الخدمات".
"تثبيت" SonarQube من علامة التبويب "الخدمات".
يتم تحديث settings.xml تلقائيًا
يتم إرسال كل بناء إلى SonarQube
يمكن الوصول إلى التقارير من اللوحة
يستغرق تثبيت هاتين الأداتين يدويًا ساعتين على الأقل. دقيقة واحدة بالانتقال إلى علامة التبويب “الخدمات” من اللوحة والنقر فوق +.
خاتمة
لقد رأينا خمس طرق لنشر Spring Boot على VPS. من الضروري تعلم الأربعة الأولى، ولا تزال معرفة systemd وDocker وKubernetes ذات قيمة في مهنة المطور. ولكن ** ليس عليك استخدام هذه المعلومات في كل عملية نشر **.
هذا هو بالضبط الغرض من لوحة VDS: تسريع سير العمل الخاص بك عن طريق الحفاظ على السطح بسيطًا، دون إخفاء التكنولوجيا خلفه. لبدء تشغيل مشاريع Spring Boot الخاصة بك git Push، يمكنك إكمال تثبيت اللوحة في 8 دقائق.