دليل النشر

نشر تطبيق Spring Boot على خادم VPS

انشر على VPS Cloud ←

دليل عملي

نشر تطبيق Spring Boot على خادم VPS

التطوير4 دقائق للقراءةعدد الخطوات: 5

يظلّ Spring Boot المعيار لواجهات برمجة التطبيقات (API) والخدمات المصغّرة بلغة Java في المؤسسات. فبدلًا من دفع رسوم منصّة PaaS تُحتسب بحسب ذاكرة JVM، يمنحك خادم VPS تحكّمًا كاملًا في الكومة (heap) ومجمّع الاتصالات والتكلفة الشهرية. إليك كيفية نشر أثرك (artifact) في بيئة الإنتاج بشكل نظيف.

المحتويات· لماذا تستضيف Spring Boot على VPS؟1/5
  1. 01لماذا تستضيف Spring Boot على VPS؟
  2. 02فوائد Spring Boot المستضاف ذاتيًا
  3. 03المتطلبات المادية والبرمجية
  4. 04نشر Spring Boot خطوة بخطوة
  5. 05نشر Spring Boot بنقرة واحدة من Marketplace ServOrbit

لماذا تستضيف Spring Boot على VPS؟

المنصات المُدارة لـ Java تُفوتر على RAM المحجوزة وتفرض إصدار JDK الخاص بها، مما يُعقّد ضبط JVM وإدارة اتصالات PostgreSQL. على VPS، تتحكم في المكدس الكامل: OpenJDK 21 LTS مع Virtual Threads، وMaven للبناء، وNginx في المقدمة، وPostgreSQL 16 للبيانات. أنت من يقرّر أعلام JVM وعدد الخيوط وضبط مجمّع الاتصالات واستراتيجية النشر. ولتطبيق Spring Boot في الإنتاج، هذه الشفافية حاسمة: يمكنك تحليل أداء نقطة نهاية بطيئة، وضبط -Xmx لكل خدمة، ونشر إصدار جديد دون أي تكلفة خفية.

فوائد Spring Boot المستضاف ذاتيًا

  • تحكم كامل في PostgreSQL: الفهارس وVACUUM ومجمّع الاتصالات ونسخ pg_dump الاحتياطية المجدولة.
  • Virtual Threads (OpenJDK 21 Loom) مع Spring WebMVC: مئات الطلبات المتزامنة دون إعادة كتابة تفاعلية.
  • تكلفة ثابتة وقابلة للتنبؤ، مهما بلغ حجم الزيارات أو عدد طلبات واجهة البرمجة المُعالَجة.
  • البيانات والسجلات تحت ولايتك القضائية، وهو ما يفيد الامتثال والتدقيق.
  • حرية اختيار إصدار JDK والاعتماديات النظامية دون قيود buildpack.
  • عمليات نشر قابلة للتكرار: ملف fat JAR واحد، وأمر java -jar واحد، ويصبح التطبيق متاحًا على الإنترنت.

المتطلبات المادية والبرمجية

لتطبيق Spring Boot مع PostgreSQL، خطّط لما لا يقل عن 2 vCPU و2 غيغابايت من الذاكرة؛ واستهدف 4 غيغابايت إن كنت تشغّل عدة خدمات أو مجمّع اتصالات محمّلًا. نظام التشغيل الموصى به هو Ubuntu 24.04 LTS — فحزمة openjdk-21-jdk موجودة في المستودعات الرسمية، ولا حاجة إلى أي PPA. اسم النطاق اختياري: بدونه يكفي نفق SSH نحو المنفذ 8080 للتطوير والاختبار. واحسب 10 غيغابايت من القرص لـ JVM والتطبيق وقاعدة البيانات والسجلات.

نشر Spring Boot خطوة بخطوة

  1. تثبيت OpenJDK 21 وPostgreSQL

    اتصل عبر SSH ونفّذ apt-get install -y openjdk-21-jdk maven nginx postgresql postgresql-contrib — لا حاجة إلى أي مستودع إضافي على Ubuntu 24.04. ⚠️ اذكر openjdk-21-jdk صراحةً: حزمة maven تعتمد على default-jre-headless أي openjdk-21-jre-headless، وهي بيئة تشغيل بلا javac. لذلك يعرض java -version الإصدار 21.x ويبدو كل شيء سليمًا، بينما يفشل أي بناء على الخادم برسالة No compiler is provided in this environment. تحقّق: javac -version وmvn -version وpsql --version (16.x).

  2. إنشاء قاعدة البيانات والمستخدم في PostgreSQL

    اتصل بـ PostgreSQL عبر sudo -u postgres psql ونفّذ CREATE USER myapp WITH PASSWORD 'كلمة_مرور_قوية'; CREATE DATABASE myappdb OWNER myapp;. ثم عيّن spring.datasource.url=jdbc:postgresql://localhost/myappdb في ملف application.properties الخاص بك.

  3. بناء ملفّ JAR ورفعه

    نفّذ mvn clean package -DskipTests على جهازك محليًا، ثم انقل ملف fat JAR إلى /var/www/مشروعك/app.jar عبر scp. أنشئ ملف application.properties يحتوي على بيانات اعتماد PostgreSQL وspring.datasource.url وserver.port=8080.

  4. إنشاء خدمة systemd

    أنشئ /etc/systemd/system/مشروعك.service يحتوي على ExecStart=/usr/bin/java -jar /var/www/مشروعك/app.jar وRestart=always وUser=www-data. نفّذ systemctl daemon-reload && systemctl enable --now مشروعك. تحقّق عبر systemctl status مشروعك وjournalctl -u مشروعك -f.

  5. إعداد Nginx وتفعيل HTTPS

    أنشئ كتلة خادم في Nginx تحتوي على proxy_pass http://127.0.0.1:8080; وترويسات X-Forwarded-Proto. نفّذ certbot --nginx -d نطاقك.com للحصول على شهادة Let's Encrypt مجانية. Spring Boot يستمع على المنفذ الداخلي فقط؛ وNginx هو من يتولّى TLS.

استعمل Virtual Threads في Java 21 مع Spring MVC لرفع الإنتاجية دون الانتقال إلى WebFlux: أضف spring.threads.virtual.enabled=true إلى application.properties. كل طلب HTTP يُنفَّذ في خيط افتراضي خفيف، ويمكن أن تنشط آلاف منها معًا دون إشباع مجمّع خيوط النظام. ⚠️ المكسب مشروط على OpenJDK 21: الخيط الافتراضي الذي يتوقّف داخل كتلة synchronized يُثبِّت خيط الحامل، وهو قيد لم يرفعه إلا JEP 491 في JDK 24. فقبل انتظار مكسب على أحمال الإدخال/الإخراج (استعلامات SQL وREST)، تأكّد من أن مشغّل JDBC يستعمل ReentrantLock — مشغّل PostgreSQL فعل ذلك ابتداءً من الإصدار 42.6.0 — وقِس بحدث jdk.VirtualThreadPinned عبر JFR بدل الافتراض.

نشر Spring Boot بنقرة واحدة من Marketplace ServOrbit

يوفّر Marketplace ServOrbit قالب Spring Boot Stack مُهيَّأً مسبقًا: تُثبَّت OpenJDK 21 LTS وMaven وNginx وPostgreSQL 16 تلقائيًا على VPS منذ لحظة الطلب. لا حاجة إلى جلسة SSH للتثبيت الأساسي — تصل مباشرةً إلى خطوة رفع ملفّ JAR. وتتضمّن بطاقة المتجر المواصفات الدقيقة وحالات الاستخدام ودليل الإعداد الأول.

انشر Spring Boot Stack في دقائق

قالب Spring Boot Stack من ServOrbit يثبّت OpenJDK 21 LTS وMaven وNginx وPostgreSQL 16 على VPS. ارفع JAR وابدأ فورًا.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة