[{"data":1,"prerenderedAt":138},["ShallowReactive",2],{"seo-verification":3,"blog-نشر-تطبيق-spring-boot-على-خادم-vps-ma-ar":6,"promo-bar-likely":137},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-نشر-تطبيق-spring-boot-على-خادم-vps-ma-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":34,"sections":35,"ctaTitle":78,"ctaBody":79,"ctaButton":80,"ctaUrl":81,"relatedPosts":82},50,"نشر-تطبيق-spring-boot-على-خادم-vps",{"fr":12,"en":13,"ar":10,"es":14},"deployer-spring-boot-vps","deploying-a-spring-boot-application-on-a-vps","desplegar-spring-boot-en-un-vps","نشر تطبيق Spring Boot على خادم VPS","انشر تطبيق Spring Boot على خادم VPS Cloud: ملفّ fat JAR وخدمة systemd وNginx وSSL، مع OpenJDK 21 وPostgreSQL 16. دليل شامل لمطوّري Java.",4,2,false,"2026-05-01T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"التطوير","developpement","bg-warning\u002F10 text-warning","dev",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-spring-boot-vps-poster.svg",{"categorySlug":23,"appSlug":33},"spring-boot-stack","يظلّ Spring Boot المعيار لواجهات برمجة التطبيقات (API) والخدمات المصغّرة بلغة Java في المؤسسات. فبدلًا من دفع رسوم منصّة PaaS تُحتسب بحسب ذاكرة JVM، يمنحك خادم VPS تحكّمًا كاملًا في الكومة (heap) ومجمّع الاتصالات والتكلفة الشهرية. إليك كيفية نشر أثرك (artifact) في بيئة الإنتاج بشكل نظيف.",[36,40,50,53,72,75],{"type":37,"title":38,"body":39},"h2","لماذا تستضيف Spring Boot على VPS؟","المنصات المُدارة لـ Java تُفوتر على RAM المحجوزة وتفرض إصدار JDK الخاص بها، مما يُعقّد ضبط JVM وإدارة اتصالات PostgreSQL. على VPS، تتحكم في المكدس الكامل: OpenJDK 21 LTS مع Virtual Threads، وMaven للبناء، وNginx في المقدمة، وPostgreSQL 16 للبيانات. أنت من يقرّر أعلام JVM وعدد الخيوط وضبط مجمّع الاتصالات واستراتيجية النشر. ولتطبيق Spring Boot في الإنتاج، هذه الشفافية حاسمة: يمكنك تحليل أداء نقطة نهاية بطيئة، وضبط `-Xmx` لكل خدمة، ونشر إصدار جديد دون أي تكلفة خفية.",{"type":41,"title":42,"items":43},"ul","فوائد Spring Boot المستضاف ذاتيًا",[44,45,46,47,48,49],"تحكم كامل في PostgreSQL: الفهارس وVACUUM ومجمّع الاتصالات ونسخ pg_dump الاحتياطية المجدولة.","Virtual Threads (OpenJDK 21 Loom) مع Spring WebMVC: مئات الطلبات المتزامنة دون إعادة كتابة تفاعلية.","تكلفة ثابتة وقابلة للتنبؤ، مهما بلغ حجم الزيارات أو عدد طلبات واجهة البرمجة المُعالَجة.","البيانات والسجلات تحت ولايتك القضائية، وهو ما يفيد الامتثال والتدقيق.","حرية اختيار إصدار JDK والاعتماديات النظامية دون قيود buildpack.","عمليات نشر قابلة للتكرار: ملف fat JAR واحد، وأمر `java -jar` واحد، ويصبح التطبيق متاحًا على الإنترنت.",{"type":37,"title":51,"body":52},"المتطلبات المادية والبرمجية","لتطبيق Spring Boot مع PostgreSQL، خطّط لما لا يقل عن 2 vCPU و2 غيغابايت من الذاكرة؛ واستهدف 4 غيغابايت إن كنت تشغّل عدة خدمات أو مجمّع اتصالات محمّلًا. نظام التشغيل الموصى به هو Ubuntu 24.04 LTS — فحزمة `openjdk-21-jdk` موجودة في المستودعات الرسمية، ولا حاجة إلى أي PPA. اسم النطاق اختياري: بدونه يكفي نفق SSH نحو المنفذ 8080 للتطوير والاختبار. واحسب 10 غيغابايت من القرص لـ JVM والتطبيق وقاعدة البيانات والسجلات.",{"type":54,"title":55,"steps":56},"steps","نشر Spring Boot خطوة بخطوة",[57,60,63,66,69],{"title":58,"body":59},"تثبيت 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).",{"title":61,"body":62},"إنشاء قاعدة البيانات والمستخدم في PostgreSQL","اتصل بـ PostgreSQL عبر `sudo -u postgres psql` ونفّذ `CREATE USER myapp WITH PASSWORD 'كلمة_مرور_قوية'; CREATE DATABASE myappdb OWNER myapp;`. ثم عيّن `spring.datasource.url=jdbc:postgresql:\u002F\u002Flocalhost\u002Fmyappdb` في ملف `application.properties` الخاص بك.",{"title":64,"body":65},"بناء ملفّ JAR ورفعه","نفّذ `mvn clean package -DskipTests` على جهازك محليًا، ثم انقل ملف fat JAR إلى `\u002Fvar\u002Fwww\u002Fمشروعك\u002Fapp.jar` عبر `scp`. أنشئ ملف `application.properties` يحتوي على بيانات اعتماد PostgreSQL و`spring.datasource.url` و`server.port=8080`.",{"title":67,"body":68},"إنشاء خدمة systemd","أنشئ `\u002Fetc\u002Fsystemd\u002Fsystem\u002Fمشروعك.service` يحتوي على `ExecStart=\u002Fusr\u002Fbin\u002Fjava -jar \u002Fvar\u002Fwww\u002Fمشروعك\u002Fapp.jar` و`Restart=always` و`User=www-data`. نفّذ `systemctl daemon-reload && systemctl enable --now مشروعك`. تحقّق عبر `systemctl status مشروعك` و`journalctl -u مشروعك -f`.",{"title":70,"body":71},"إعداد Nginx وتفعيل HTTPS","أنشئ كتلة خادم في Nginx تحتوي على `proxy_pass http:\u002F\u002F127.0.0.1:8080;` وترويسات `X-Forwarded-Proto`. نفّذ `certbot --nginx -d نطاقك.com` للحصول على شهادة Let's Encrypt مجانية. Spring Boot يستمع على المنفذ الداخلي فقط؛ وNginx هو من يتولّى TLS.",{"type":73,"body":74},"tip","استعمل Virtual Threads في Java 21 مع Spring MVC لرفع الإنتاجية دون الانتقال إلى WebFlux: أضف `spring.threads.virtual.enabled=true` إلى `application.properties`. كل طلب HTTP يُنفَّذ في خيط افتراضي خفيف، ويمكن أن تنشط آلاف منها معًا دون إشباع مجمّع خيوط النظام. ⚠️ المكسب مشروط على OpenJDK 21: الخيط الافتراضي الذي يتوقّف داخل كتلة `synchronized` يُثبِّت خيط الحامل، وهو قيد لم يرفعه إلا JEP 491 في JDK 24. فقبل انتظار مكسب على أحمال الإدخال\u002Fالإخراج (استعلامات SQL وREST)، تأكّد من أن مشغّل JDBC يستعمل `ReentrantLock` — مشغّل PostgreSQL فعل ذلك ابتداءً من الإصدار 42.6.0 — وقِس بحدث `jdk.VirtualThreadPinned` عبر JFR بدل الافتراض.",{"type":37,"title":76,"body":77},"نشر 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 وابدأ فورًا.","نشر Spring Boot Stack","\u002Fapplications\u002Fالتطوير\u002Fspring-boot-stack",[83,101,119],{"id":84,"slug":85,"slugs":86,"title":90,"excerpt":91,"readTime":17,"views":92,"isPinned":19,"noindex":19,"publishedAt":93,"updatedAt":94,"category":95,"categories":96,"featuredImage":29,"bgImage":30,"posterImage":98,"relatedSolution":99},5,"نشر-laravel-على-خادم-vps-دليل-الإنتاج",{"fr":87,"en":88,"ar":85,"es":89},"deployer-laravel-vps","deploying-laravel-on-a-vps-a-production-guide","desplegar-laravel-en-un-vps","نشر Laravel على خادم VPS: دليل الإنتاج","انقل Laravel إلى بيئة الإنتاج على خادم VPS: PHP وworkers والذاكرة المؤقتة وقاعدة البيانات وreverse proxy وHTTPS مُهيّأة بشكل نظيف.",1,"2026-02-09T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[97],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fdeployer-laravel-vps-poster.svg",{"categorySlug":26,"appSlug":100},"laravel-stack",{"id":102,"slug":103,"slugs":104,"title":108,"excerpt":109,"readTime":110,"views":92,"isPinned":19,"noindex":19,"publishedAt":111,"updatedAt":112,"category":113,"categories":114,"featuredImage":29,"bgImage":30,"posterImage":116,"relatedSolution":117},43,"نشر-تطبيق-nodejs-على-vps",{"fr":105,"en":106,"ar":103,"es":107},"deployer-nodejs-vps","deploy-a-nodejs-application-on-a-vps","desplegar-una-aplicacion-nodejs-en-un-vps","نشر تطبيق Node.js على VPS","انشر تطبيق Node.js في بيئة الإنتاج على VPS: PM2 وبروكسي عكسي Nginx وشهادة SSL من Let's Encrypt وبدء تشغيل تلقائي عند الإقلاع.",8,"2026-05-08T00:00:00+00:00","2026-11-08T01:13:12+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[115],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fdeployer-nodejs-vps-poster.svg",{"categorySlug":23,"appSlug":118},"nodejs-stack",{"id":120,"slug":121,"slugs":122,"title":126,"excerpt":127,"readTime":128,"views":129,"isPinned":19,"noindex":19,"publishedAt":130,"updatedAt":21,"category":131,"categories":132,"featuredImage":29,"bgImage":30,"posterImage":134,"relatedSolution":135},44,"نشر-تطبيق-django-على-vps",{"fr":123,"en":124,"ar":121,"es":125},"deployer-django-vps","deploy-a-django-application-on-a-vps","desplegar-una-aplicacion-django-en-un-vps","نشر تطبيق Django على VPS","انشر Django على VPS: Gunicorn وNginx وPostgreSQL وDocker وSSL. دليل كامل لمطوّري Python الراغبين في الاستضافة الذاتية.",3,7,"2026-05-07T00:00:00+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[133],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fdeployer-django-vps-poster.svg",{"categorySlug":23,"appSlug":136},"django",true,1794270314500]