مقدمة
تطوير تطبيق Java هو نصف المهمة فقط. النصف الثاني، الذي لا يقل أهمية، هو النشر الصحيح على خادم الإنتاج. يواجه العديد من المطورين صعوبات عند نقل التطبيق من الجهاز المحلي إلى VPS: إعداد البيئة، البناء، التشغيل في الخلفية، ضمان الأمان. في هذه المقالة، سنشرح العملية الكاملة لنشر تطبيق Java على VPS (Virtual Private Server) — من شراء الخادم إلى إعداد HTTPS. جميع الخطوات ستكون مصحوبة بأمثلة من الكود والتكوينات.
سنستخدم Ubuntu 22.04 LTS كنظام تشغيل لـ VPS، وكمثال لتطبيق Java — تطبيق Spring Boot REST بسيط، معبأ في ملف JAR. إذا كنت تستخدم إطار عمل آخر (Jakarta EE, Micronaut, Quarkus)، فستبقى المبادئ العامة كما هي.
1. إعداد VPS وتثبيت Java
1.1. الاتصال بالخادم
بعد شراء VPS، ستحصل على عنوان IP، واسم مستخدم (عادةً root) وكلمة مرور أو مفتاح SSH. اتصل بالخادم عبر الطرفية:
ssh root@your-server-ipإذا كنت تستخدم مفتاح SSH، حدد المسار إليه:
ssh -i /path/to/private_key root@your-server-ip1.2. تحديث النظام وتثبيت Java
أولاً، سنقوم بتحديث مدير الحزم وتثبيت Java Development Kit (JDK). بالنسبة لمعظم تطبيقات Java الحديثة، يكفي OpenJDK 17 أو 21:
apt update && apt upgrade -yapt install openjdk-17-jdk -yتحقق من التثبيت:
java -versionيجب أن ترى شيئًا مثل:
openjdk version "17.0.10" 2024-01-16 LTSOpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-122.04.1)OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-122.04.1, mixed mode, sharing)1.3. إعداد متغيرات البيئة (اختياري)
إذا كان تطبيقك يتطلب متغيرات محددة (مثل JAVA_HOME)، أضفها إلى ملف ~/.bashrc أو /etc/environment:
echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" >> ~/.bashrcsource ~/.bashrc2. بناء وتحميل التطبيق على الخادم
2.1. بناء ملف JAR/WAR على الجهاز المحلي
لنفترض أن لديك مشروع Maven. قم بالبناء:
mvn clean package -DskipTestsنتيجة لذلك، في مجلد target/ سيظهر ملف myapp-0.0.1-SNAPSHOT.jar (أو .war لتطبيقات الويب).
2.2. تحميل ملف JAR إلى VPS
استخدم scp لنسخ الملف إلى الخادم:
scp target/myapp-0.0.1-SNAPSHOT.jar root@your-server-ip:/opt/myapp/أنشئ دليلاً للتطبيق على الخادم إذا لم يكن موجودًا:
mkdir -p /opt/myapp2.3. التحقق من الهيكل على الخادم
بعد التحميل، تحقق من وجود الملف:
ls -la /opt/myapp/يجب أن ترى myapp-0.0.1-SNAPSHOT.jar.
3. إعداد تشغيل التطبيق (systemd + Nginx)
3.1. تشغيل ملف JAR يدويًا (اختباري)
قبل إعداد التشغيل المستمر، تأكد من أن التطبيق يبدأ بشكل صحيح:
java -jar /opt/myapp/myapp-0.0.1-SNAPSHOT.jar --server.port=8080إذا بدأ التطبيق دون أخطاء، ننتقل إلى إنشاء خدمة systemd.
3.2. إنشاء خدمة systemd
يتيح لك Systemd تشغيل تطبيق Java كخدمة خلفية (daemon) وإعادة تشغيله تلقائيًا عند تعطله أو إعادة تشغيل الخادم.
أنشئ ملف الخدمة:
nano /etc/systemd/system/myapp.serviceألصق التكوين التالي:
[Unit]Description=My Java ApplicationAfter=network.target
[Service]Type=simpleUser=rootWorkingDirectory=/opt/myappExecStart=/usr/bin/java -jar /opt/myapp/myapp-0.0.1-SNAPSHOT.j