نشر تطبيق Java على VPS: دليل خطوة بخطوة من الألف إلى الياء
تطوير تطبيق Java هو نصف المهمة فقط. النصف الثاني، الذي لا يقل أهمية، هو نشره على الخادم. يواجه العديد من المطورين صعوبات عند نقل الكود من جهازهم المحلي إلى VPS بعيد. في هذه المقالة، سنشرح العملية الكاملة لنشر تطبيق Java (باستخدام مثال Spring Boot) على خادم خاص افتراضي (VPS) يعمل بنظام التشغيل Ubuntu 22.04. ستتعلم كيفية إعداد البيئة، بناء المشروع، تشغيله كخدمة، وضمان الوصول الآمن عبر Nginx وSSL.
1. إعداد VPS وتثبيت البرامج اللازمة
قبل تحميل الكود، يجب تجهيز الخادم. سنستخدم Ubuntu 22.04 LTS. اتصل بالخادم عبر SSH:
ssh root@عنوان-ip-الخاص-بكقم بتحديث مدير الحزم وتثبيت الأدوات الأساسية:
apt update && apt upgrade -yapt install curl git -yالآن سنقوم بتثبيت OpenJDK 17 (الإصدار الموصى به لمعظم المشاريع الحديثة):
apt install openjdk-17-jdk -yتحقق من التثبيت:
java -versionيجب أن ترى شيئًا مثل:
openjdk version "17.0.9" 2023-10-17بعد ذلك، قم بتثبيت Maven لبناء المشروع (إذا كنت تستخدم Gradle، استبدل الأوامر وفقًا لذلك):
apt install maven -ymvn -versionبهذا يكتمل إعداد البيئة الأساسية.
2. بناء وتحميل تطبيق Java على الخادم
قم ببناء تطبيق Java الخاص بك محليًا. انتقل إلى المجلد الجذر للمشروع ونفذ:
mvn clean package -DskipTestsبعد البناء الناجح، سيظهر ملف JAR في مجلد target (على سبيل المثال، myapp-0.0.1-SNAPSHOT.jar). الآن يجب تحميله إلى الخادم. استخدم scp (يتم تنفيذه من جهازك المحلي):
scp target/myapp-0.0.1-SNAPSHOT.jar root@عنوان-ip-الخاص-بك:/opt/myapp/على الخادم، أنشئ دليلاً للتطبيق وانقل الملف:
mkdir -p /opt/myappmv myapp-0.0.1-SNAPSHOT.jar /opt/myapp/myapp.jarتحقق من وجود ملف JAR وقم بتشغيله يدويًا للاختبار:
cd /opt/myappjava -jar myapp.jarإذا تم تشغيل التطبيق بدون أخطاء، انتقل إلى الخطوة التالية.
3. إعداد systemd للتشغيل التلقائي
لكي يتم تشغيل التطبيق تلقائيًا عند بدء تشغيل النظام وإعادة تشغيله في حالة حدوث عطل، سنقوم بإنشاء خدمة systemd.
أنشئ ملف الخدمة:
nano /etc/systemd/system/myapp.serviceألصق المحتوى التالي (استبدل youruser باسم المستخدم الذي سيعمل تحته التطبيق، أو اترك root):
[Unit]Description=My Java Spring Boot ApplicationAfter=network.target
[Service]User=rootWorkingDirectory=/opt/myappExecStart=/usr/bin/java -jar /opt/myapp/myapp.jarSuccessExitStatus=143Restart=alwaysRestartSec=10
[Install]WantedBy=multi-user.targetشرح المعاملات:
After=network.target— تبدأ الخدمة بعد تشغيل الشبكة.Restart=always— إعادة التشغيل التلقائي عند التعطل.RestartSec=10— توقف لمدة 10 ثوانٍ قبل إعادة التشغيل.SuccessExitStatus=143— معالجة صحيحة لإشارة الإيقاف.
الآن قم بتفعيل الخدمة وتشغيلها:
systemctl daemon-reloadsystemctl enable myappsystemctl start myappتحقق من الحالة:
systemctl status myappيجب أن ترى Active: active (running). الآن سيتم تشغيل تطبيقك تلقائيًا